Better translation support relating to client initialization/login.
This commit is contained in:
@@ -65,12 +65,12 @@ set(llui_SOURCE_FILES
|
||||
lltextbox.cpp
|
||||
lltexteditor.cpp
|
||||
lltextparser.cpp
|
||||
lltrans.cpp
|
||||
llui.cpp
|
||||
lluictrl.cpp
|
||||
lluictrlfactory.cpp
|
||||
lluiimage.cpp
|
||||
lluistring.cpp
|
||||
lluitrans.cpp
|
||||
llundo.cpp
|
||||
llviewborder.cpp
|
||||
llview.cpp
|
||||
@@ -126,6 +126,7 @@ set(llui_HEADER_FILES
|
||||
lltextbox.h
|
||||
lltexteditor.h
|
||||
lltextparser.h
|
||||
lltrans.h
|
||||
lluiconstants.h
|
||||
lluictrlfactory.h
|
||||
lluictrl.h
|
||||
@@ -133,7 +134,6 @@ set(llui_HEADER_FILES
|
||||
llui.h
|
||||
lluiimage.h
|
||||
lluistring.h
|
||||
lluitrans.h
|
||||
lluixmltags.h
|
||||
llundo.h
|
||||
llviewborder.h
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
#include "llresmgr.h"
|
||||
#include "llui.h"
|
||||
|
||||
#include "lluitrans.h"
|
||||
|
||||
#include "lltrans.h"
|
||||
#include "llstl.h"
|
||||
|
||||
#include "v2math.h"
|
||||
@@ -271,24 +270,24 @@ void LLMenuItemGL::appendAcceleratorString( std::string& st ) const
|
||||
{
|
||||
if ( mAcceleratorMask & MASK_MAC_CONTROL )
|
||||
{
|
||||
st.append( LLUITrans::getString("accel-mac-control") );
|
||||
st.append( LLTrans::getString("accel-mac-control") );
|
||||
}
|
||||
else
|
||||
{
|
||||
st.append( LLUITrans::getString("accel-mac-command") ); // Symbol would be "\xE2\x8C\x98"
|
||||
st.append( LLTrans::getString("accel-mac-command") ); // Symbol would be "\xE2\x8C\x98"
|
||||
}
|
||||
}
|
||||
if( mAcceleratorMask & MASK_ALT )
|
||||
st.append( LLUITrans::getString("accel-mac-option") ); // Symbol would be "\xE2\x8C\xA5"
|
||||
st.append( LLTrans::getString("accel-mac-option") ); // Symbol would be "\xE2\x8C\xA5"
|
||||
if( mAcceleratorMask & MASK_SHIFT )
|
||||
st.append( LLUITrans::getString("accel-mac-shift") ); // Symbol would be "\xE2\x8C\xA7"
|
||||
st.append( LLTrans::getString("accel-mac-shift") ); // Symbol would be "\xE2\x8C\xA7"
|
||||
#else
|
||||
if( mAcceleratorMask & MASK_CONTROL )
|
||||
st.append( LLUITrans::getString("accel-win-control") );
|
||||
st.append( LLTrans::getString("accel-win-control") );
|
||||
if( mAcceleratorMask & MASK_ALT )
|
||||
st.append( LLUITrans::getString("accel-win-alt") );
|
||||
st.append( LLTrans::getString("accel-win-alt") );
|
||||
if( mAcceleratorMask & MASK_SHIFT )
|
||||
st.append( LLUITrans::getString("accel-win-shift") );
|
||||
st.append( LLTrans::getString("accel-win-shift") );
|
||||
#endif
|
||||
|
||||
std::string keystr = LLKeyboard::stringFromKey( mAcceleratorKey );
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "linden_common.h"
|
||||
#include "lltrans.h"
|
||||
#include "llxmlnode.h"
|
||||
#include "lluictrlfactory.h"
|
||||
@@ -41,9 +41,10 @@
|
||||
#include <map>
|
||||
|
||||
LLTrans::template_map_t LLTrans::sStringTemplates;
|
||||
LLStringUtil::format_map_t LLTrans::sDefaultArgs;
|
||||
|
||||
//static
|
||||
bool LLTrans::parseStrings(const std::string& xml_filename)
|
||||
bool LLTrans::parseStrings(const std::string& xml_filename, const std::set<std::string>& default_args)
|
||||
{
|
||||
LLXMLNodePtr root;
|
||||
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
|
||||
@@ -54,6 +55,7 @@ bool LLTrans::parseStrings(const std::string& xml_filename)
|
||||
return false;
|
||||
}
|
||||
|
||||
sDefaultArgs.clear();
|
||||
for (LLXMLNode* string = root->getFirstChild();
|
||||
string != NULL; string = string->getNextSibling())
|
||||
{
|
||||
@@ -72,19 +74,30 @@ bool LLTrans::parseStrings(const std::string& xml_filename)
|
||||
|
||||
LLTransTemplate xml_template(string_name, string->getTextContents());
|
||||
sStringTemplates[xml_template.mName] = xml_template;
|
||||
|
||||
std::set<std::string>::const_iterator iter = default_args.find(xml_template.mName);
|
||||
if (iter != default_args.end())
|
||||
{
|
||||
std::string name = *iter;
|
||||
if (name[0] != '[')
|
||||
name = llformat("[%s]",name.c_str());
|
||||
sDefaultArgs[name] = xml_template.mText;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args)
|
||||
std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& msg_args)
|
||||
{
|
||||
template_map_t::iterator iter = sStringTemplates.find(xml_desc);
|
||||
|
||||
if (iter != sStringTemplates.end())
|
||||
{
|
||||
std::string text = iter->second.mText;
|
||||
LLStringUtil::format_map_t args = sDefaultArgs;
|
||||
args.insert(msg_args.begin(), msg_args.end());
|
||||
LLStringUtil::format(text, args);
|
||||
|
||||
return text;
|
||||
@@ -96,7 +109,7 @@ std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::
|
||||
LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL;
|
||||
LLNotificationsUtil::add("MissingString", args);
|
||||
|
||||
return xml_desc;
|
||||
return "MissingString("+xml_desc+")";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file lltrans.h
|
||||
* @brief LLTrans definition
|
||||
* @file lluitrans.h
|
||||
* @brief LLUITrans definition
|
||||
*
|
||||
* $LicenseInfo:firstyear=2000&license=viewergpl$
|
||||
*
|
||||
@@ -61,9 +61,10 @@ public:
|
||||
/**
|
||||
* @brief Parses the xml file that holds the strings. Used once on startup
|
||||
* @param xml_filename Filename to parse
|
||||
* @param default_args Set of strings (expected to be in the file) to use as default replacement args, e.g. "SECOND_LIFE"
|
||||
* @returns true if the file was parsed successfully, true if something went wrong
|
||||
*/
|
||||
static bool parseStrings(const std::string& xml_filename);
|
||||
static bool parseStrings(const std::string& xml_filename, const std::set<std::string>& default_args);
|
||||
|
||||
/**
|
||||
* @brief Returns a translated string
|
||||
@@ -88,6 +89,7 @@ public:
|
||||
private:
|
||||
typedef std::map<std::string, LLTransTemplate > template_map_t;
|
||||
static template_map_t sStringTemplates;
|
||||
static LLStringUtil::format_map_t sDefaultArgs;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,102 +0,0 @@
|
||||
/**
|
||||
* @file lluitrans.cpp
|
||||
* @brief LLUITrans implementation
|
||||
*
|
||||
* $LicenseInfo:firstyear=2000&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2000-2009, Linden Research, Inc.
|
||||
*
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
*
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
*
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
*
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
|
||||
#include "linden_common.h"
|
||||
#include "lluitrans.h"
|
||||
#include "llxmlnode.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llalertdialog.h"
|
||||
#include "llnotificationsutil.h"
|
||||
|
||||
#include <map>
|
||||
|
||||
LLUITrans::template_map_t LLUITrans::sStringTemplates;
|
||||
|
||||
//static
|
||||
bool LLUITrans::parseStrings(const std::string& xml_filename)
|
||||
{
|
||||
LLXMLNodePtr root;
|
||||
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
|
||||
|
||||
if (!success || root.isNull() || !root->hasName( "strings" ))
|
||||
{
|
||||
llerrs << "Problem reading strings: " << xml_filename << llendl;
|
||||
return false;
|
||||
}
|
||||
|
||||
for (LLXMLNode* string = root->getFirstChild();
|
||||
string != NULL; string = string->getNextSibling())
|
||||
{
|
||||
if (!string->hasName("string"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string string_name;
|
||||
|
||||
if (! string->getAttributeString("name", string_name))
|
||||
{
|
||||
llwarns << "Unable to parse string with no name" << llendl;
|
||||
continue;
|
||||
}
|
||||
|
||||
LLUITransTemplate xml_template(string_name, string->getTextContents());
|
||||
sStringTemplates[xml_template.mName] = xml_template;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLUITrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args)
|
||||
{
|
||||
template_map_t::iterator iter = sStringTemplates.find(xml_desc);
|
||||
|
||||
if (iter != sStringTemplates.end())
|
||||
{
|
||||
std::string text = iter->second.mText;
|
||||
LLStringUtil::format(text, args);
|
||||
|
||||
return text;
|
||||
}
|
||||
else
|
||||
{
|
||||
LLSD args;
|
||||
args["STRING_NAME"] = xml_desc;
|
||||
LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL;
|
||||
LLNotificationsUtil::add("MissingString", args);
|
||||
|
||||
return xml_desc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
/**
|
||||
* @file lluitrans.h
|
||||
* @brief LLUITrans definition
|
||||
*
|
||||
* $LicenseInfo:firstyear=2000&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2000-2009, Linden Research, Inc.
|
||||
*
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
*
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
*
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
*
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_UI_TRANS_H
|
||||
#define LL_UI_TRANS_H
|
||||
|
||||
#include <map>
|
||||
|
||||
/**
|
||||
* @brief String template loaded from strings.xml
|
||||
*/
|
||||
class LLUITransTemplate
|
||||
{
|
||||
public:
|
||||
LLUITransTemplate(const std::string& name = LLStringUtil::null, const std::string& text = LLStringUtil::null) : mName(name), mText(text) {}
|
||||
|
||||
std::string mName;
|
||||
std::string mText;
|
||||
};
|
||||
|
||||
class LLUITrans
|
||||
{
|
||||
public:
|
||||
LLUITrans();
|
||||
|
||||
/**
|
||||
* @brief Parses the xml file that holds the strings. Used once on startup
|
||||
* @param xml_filename Filename to parse
|
||||
* @returns true if the file was parsed successfully, true if something went wrong
|
||||
*/
|
||||
static bool parseStrings(const std::string& xml_filename);
|
||||
|
||||
/**
|
||||
* @brief Returns a translated string
|
||||
* @param xml_desc String's description
|
||||
* @param args A list of substrings to replace in the string
|
||||
* @returns Translated string
|
||||
*/
|
||||
static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args);
|
||||
|
||||
/**
|
||||
* @brief Returns a translated string
|
||||
* @param xml_desc String's description
|
||||
* @returns Translated string
|
||||
*/
|
||||
static std::string getString(const std::string &xml_desc)
|
||||
{
|
||||
LLStringUtil::format_map_t empty;
|
||||
return getString(xml_desc, empty);
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
typedef std::map<std::string, LLUITransTemplate > template_map_t;
|
||||
static template_map_t sStringTemplates;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -84,6 +84,10 @@ public:
|
||||
virtual void handlePauseWatchdog(LLWindow *window);
|
||||
virtual void handleResumeWatchdog(LLWindow *window);
|
||||
|
||||
// Look up a localized string, usually for an error message
|
||||
virtual std::string translateString(const char* tag);
|
||||
virtual std::string translateString(const char* tag,
|
||||
const std::map<std::string, std::string>& args);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -496,7 +496,8 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
|
||||
|
||||
if (!RegisterClass(&wc))
|
||||
{
|
||||
OSMessageBox("RegisterClass failed", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBRegClassFailed"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return;
|
||||
}
|
||||
sIsClassRegistered = TRUE;
|
||||
@@ -608,8 +609,11 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
|
||||
mFullscreenBits = -1;
|
||||
mFullscreenRefresh = -1;
|
||||
|
||||
std::string error = llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height);
|
||||
OSMessageBox(error, "Error", OSMB_OK);
|
||||
std::map<std::string,std::string> args;
|
||||
args["[WIDTH]"] = llformat("%d", width);
|
||||
args["[HEIGHT]"] = llformat ("%d", height);
|
||||
OSMessageBox(mCallbacks->translateString("MBFullScreenErr", args),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -752,7 +756,9 @@ void LLWindowWin32::close()
|
||||
// This causes WM_DESTROY to be sent *immediately*
|
||||
if (!DestroyWindow(mWindowHandle))
|
||||
{
|
||||
OSMessageBox("DestroyWindow(mWindowHandle) failed", "Shutdown Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBDestroyWinFailed"),
|
||||
mCallbacks->translateString("MBShutdownErr"),
|
||||
OSMB_OK);
|
||||
}
|
||||
|
||||
mWindowHandle = NULL;
|
||||
@@ -1059,14 +1065,16 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
|
||||
if (!(mhDC = GetDC(mWindowHandle)))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't make GL device context", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBDevContextErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd)))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't find suitable pixel format", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBPixelFmtErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1075,57 +1083,48 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
|
||||
&pfd))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't get pixel format description", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (pfd.cColorBits < 32)
|
||||
{
|
||||
close();
|
||||
OSMessageBox(
|
||||
"Second Life requires True Color (32-bit) to run in a window.\n"
|
||||
"Please go to Control Panels -> Display -> Settings and\n"
|
||||
"set the screen to 32-bit color.\n"
|
||||
"Alternately, if you choose to run fullscreen, Second Life\n"
|
||||
"will automatically adjust the screen each time it runs.",
|
||||
"Error",
|
||||
OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (pfd.cAlphaBits < 8)
|
||||
{
|
||||
close();
|
||||
OSMessageBox(
|
||||
"Second Life is unable to run because it can't get an 8 bit alpha\n"
|
||||
"channel. Usually this is due to video card driver issues.\n"
|
||||
"Please make sure you have the latest video card drivers installed.\n"
|
||||
"Also be sure your monitor is set to True Color (32-bit) in\n"
|
||||
"Control Panels -> Display -> Settings.\n"
|
||||
"If you continue to receive this message, contact customer service.",
|
||||
"Error",
|
||||
OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBAlpha"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!SetPixelFormat(mhDC, pixel_format, &pfd))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't set pixel format", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(mhRC = wglCreateContext(mhDC)))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't create GL rendering context", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBGLContextErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!wglMakeCurrent(mhDC, mhRC))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't activate GL rendering context", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBGLContextActErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1322,14 +1321,15 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
|
||||
if (!(mhDC = GetDC(mWindowHandle)))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't make GL device context", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBDevContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!SetPixelFormat(mhDC, pixel_format, &pfd))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't set pixel format", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBPixelFmtSetErr"),
|
||||
mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1366,7 +1366,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
|
||||
&pfd))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't get pixel format description", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBPixelFmtDescErr"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1379,29 +1379,14 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
|
||||
if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32)
|
||||
{
|
||||
close();
|
||||
OSMessageBox(
|
||||
"Second Life requires True Color (32-bit) to run in a window.\n"
|
||||
"Please go to Control Panels -> Display -> Settings and\n"
|
||||
"set the screen to 32-bit color.\n"
|
||||
"Alternately, if you choose to run fullscreen, Second Life\n"
|
||||
"will automatically adjust the screen each time it runs.",
|
||||
"Error",
|
||||
OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBTrueColorWindow"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (pfd.cAlphaBits < 8)
|
||||
{
|
||||
close();
|
||||
OSMessageBox(
|
||||
"Second Life is unable to run because it can't get an 8 bit alpha\n"
|
||||
"channel. Usually this is due to video card driver issues.\n"
|
||||
"Please make sure you have the latest video card drivers installed.\n"
|
||||
"Also be sure your monitor is set to True Color (32-bit) in\n"
|
||||
"Control Panels -> Display -> Settings.\n"
|
||||
"If you continue to receive this message, contact customer service.",
|
||||
"Error",
|
||||
OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBAlpha"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1454,28 +1439,21 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
|
||||
if (!mhRC && !(mhRC = wglCreateContext(mhDC)))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't create GL rendering context", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!wglMakeCurrent(mhDC, mhRC))
|
||||
{
|
||||
close();
|
||||
OSMessageBox("Can't activate GL rendering context", "Error", OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBGLContextActErr"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!gGLManager.initGL())
|
||||
{
|
||||
close();
|
||||
OSMessageBox(
|
||||
"Second Life is unable to run because your video card drivers\n"
|
||||
"did not install properly, are out of date, or are for unsupported\n"
|
||||
"hardware. Please make sure you have the latest video card drivers\n"
|
||||
"and even if you do have the latest, try reinstalling them.\n\n"
|
||||
"If you continue to receive this message, contact customer service.",
|
||||
"Error",
|
||||
OSMB_OK);
|
||||
OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -426,7 +426,6 @@ set(viewer_SOURCE_FILES
|
||||
lltoolselectrect.cpp
|
||||
lltoolview.cpp
|
||||
lltracker.cpp
|
||||
lltrans.cpp
|
||||
lltranslate.cpp
|
||||
lluploaddialog.cpp
|
||||
lluploadfloaterobservers.cpp
|
||||
@@ -900,7 +899,6 @@ set(viewer_HEADER_FILES
|
||||
lltoolselectrect.h
|
||||
lltoolview.h
|
||||
lltracker.h
|
||||
lltrans.h
|
||||
lltranslate.h
|
||||
lluiconstants.h
|
||||
lluploaddialog.h
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
#include "llviewermenu.h"
|
||||
#include "llselectmgr.h"
|
||||
#include "lltrans.h"
|
||||
#include "lluitrans.h"
|
||||
#include "lltrans.h"
|
||||
#include "lltracker.h"
|
||||
#include "llviewerparcelmgr.h"
|
||||
#include "llworldmapview.h"
|
||||
@@ -365,6 +365,20 @@ class LLDeferredTaskList: public LLSingleton<LLDeferredTaskList>
|
||||
|
||||
signal_t mSignal;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
// List of entries from strings.xml to always replace
|
||||
static std::set<std::string> default_trans_args;
|
||||
void init_default_trans_args()
|
||||
{
|
||||
default_trans_args.insert("SECOND_LIFE"); // World
|
||||
default_trans_args.insert("APP_NAME");
|
||||
default_trans_args.insert("CAPITALIZED_APP_NAME");
|
||||
default_trans_args.insert("SECOND_LIFE_GRID");
|
||||
default_trans_args.insert("SUPPORT_SITE");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// File scope definitons
|
||||
const char *VFS_DATA_FILE_BASE = "data.db2.x.";
|
||||
@@ -598,7 +612,10 @@ bool LLAppViewer::init()
|
||||
//
|
||||
// OK to write stuff to logs now, we've now crash reported if necessary
|
||||
//
|
||||
if (!initConfiguration())
|
||||
|
||||
init_default_trans_args();
|
||||
|
||||
if (!initConfiguration())
|
||||
return false;
|
||||
|
||||
LL_INFOS("InitInfo") << "Configuration initialized." << LL_ENDL ;
|
||||
@@ -688,12 +705,13 @@ bool LLAppViewer::init()
|
||||
);
|
||||
LLWeb::initClass(); // do this after LLUI
|
||||
|
||||
LLUICtrlFactory::getInstance()->setupPaths(); // update paths with correct language set
|
||||
LLTrans::parseStrings("strings.xml", default_trans_args);
|
||||
|
||||
LLTextEditor::setURLCallbacks(&LLWeb::loadURL,
|
||||
&LLURLDispatcher::dispatchFromTextEditor,
|
||||
&LLURLDispatcher::dispatchFromTextEditor);
|
||||
|
||||
LLUICtrlFactory::getInstance()->setupPaths(); // update paths with correct language set
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Load settings files
|
||||
@@ -753,18 +771,8 @@ bool LLAppViewer::init()
|
||||
if (!initCache())
|
||||
{
|
||||
std::ostringstream msg;
|
||||
msg <<
|
||||
gSecondLife << " is unable to access a file that it needs.\n"
|
||||
"\n"
|
||||
"This can be because you somehow have multiple copies running, "
|
||||
"or your system incorrectly thinks a file is open. "
|
||||
"If this message persists, restart your computer and try again. "
|
||||
"If it continues to persist, you may need to completely uninstall " <<
|
||||
gSecondLife << " and reinstall it.";
|
||||
OSMessageBox(
|
||||
msg.str(),
|
||||
LLStringUtil::null,
|
||||
OSMB_OK);
|
||||
msg << LLTrans::getString("MBUnableToAccessFile");
|
||||
OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK);
|
||||
return 1;
|
||||
}
|
||||
LL_INFOS("InitInfo") << "Cache initialization is done." << LL_ENDL ;
|
||||
@@ -1964,6 +1972,9 @@ bool LLAppViewer::initConfiguration()
|
||||
return false;
|
||||
}
|
||||
|
||||
LLUICtrlFactory::getInstance()->setupPaths(); // setup paths for LLTrans based on settings files only
|
||||
LLTrans::parseStrings("strings.xml", default_trans_args);
|
||||
|
||||
//COA vars in gSavedSettings will be linked to gSavedPerAccountSettings entries that will be created if not present.
|
||||
//Signals will be shared between linked vars.
|
||||
gSavedSettings.connectCOAVars(gSavedPerAccountSettings);
|
||||
@@ -2048,15 +2059,8 @@ bool LLAppViewer::initConfiguration()
|
||||
llinfos << "Command line usage:\n" << clp << llendl;
|
||||
|
||||
std::ostringstream msg;
|
||||
msg << "Second Life found an error parsing the command line. \n"
|
||||
<< "Please see: http://wiki.secondlife.com/wiki/Client_parameters \n"
|
||||
<< "Error: " << clp.getErrorMessage();
|
||||
|
||||
OSMessageBox(
|
||||
msg.str(),
|
||||
LLStringUtil::null,
|
||||
OSMB_OK);
|
||||
|
||||
msg << LLTrans::getString("MBCmdLineError") << clp.getErrorMessage();
|
||||
OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2100,7 +2104,7 @@ bool LLAppViewer::initConfiguration()
|
||||
if(clp.hasOption("help"))
|
||||
{
|
||||
std::ostringstream msg;
|
||||
msg << "Command line usage:\n" << clp;
|
||||
msg << LLTrans::getString("MBCmdLineUsg") << "\n" << clp;
|
||||
llinfos << msg.str() << llendl;
|
||||
|
||||
OSMessageBox(
|
||||
@@ -2264,7 +2268,7 @@ bool LLAppViewer::initConfiguration()
|
||||
|
||||
#if LL_DARWIN
|
||||
// Initialize apple menubar and various callbacks
|
||||
init_apple_menu(gSecondLife.c_str());
|
||||
init_apple_menu(LLTrans::getString("APP_NAME").c_str());
|
||||
|
||||
#if __ppc__
|
||||
// If the CPU doesn't have Altivec (i.e. it's not at least a G4), don't go any further.
|
||||
@@ -2272,7 +2276,7 @@ bool LLAppViewer::initConfiguration()
|
||||
if(!gSysCPU.hasAltivec())
|
||||
{
|
||||
std::ostringstream msg;
|
||||
msg << gSecondLife << " requires a processor with AltiVec (G4 or later).";
|
||||
msg << LLTrans::getString("MBRequiresAltiVec");
|
||||
OSMessageBox(
|
||||
msg.str(),
|
||||
LLStringUtil::null,
|
||||
@@ -2286,10 +2290,11 @@ bool LLAppViewer::initConfiguration()
|
||||
|
||||
// Display splash screen. Must be after above check for previous
|
||||
// crash as this dialog is always frontmost.
|
||||
std::ostringstream splash_msg;
|
||||
splash_msg << "Loading " << gSecondLife << "...";
|
||||
std::string splash_msg;
|
||||
LLStringUtil::format_map_t args;
|
||||
splash_msg = LLTrans::getString("StartupLoading", args);
|
||||
LLSplashScreen::show();
|
||||
LLSplashScreen::update(splash_msg.str());
|
||||
LLSplashScreen::update(splash_msg);
|
||||
|
||||
//LLVolumeMgr::initClass();
|
||||
LLVolumeMgr* volume_manager = new LLVolumeMgr();
|
||||
@@ -2303,12 +2308,11 @@ bool LLAppViewer::initConfiguration()
|
||||
//
|
||||
// Set the name of the window
|
||||
//
|
||||
#if LL_RELEASE_FOR_DOWNLOAD
|
||||
gWindowTitle = gSecondLife;
|
||||
#elif LL_DEBUG
|
||||
gWindowTitle = gSecondLife + std::string(" [DEBUG] ") + gArgs;
|
||||
gWindowTitle = LLTrans::getString("APP_NAME");
|
||||
#if LL_DEBUG
|
||||
gWindowTitle += std::string(" [DEBUG] ") + gArgs;
|
||||
#else
|
||||
gWindowTitle = gSecondLife + std::string(" ") + gArgs;
|
||||
gWindowTitle += std::string(" ") + gArgs;
|
||||
#endif
|
||||
LLStringUtil::truncate(gWindowTitle, 255);
|
||||
|
||||
@@ -2345,11 +2349,7 @@ bool LLAppViewer::initConfiguration()
|
||||
if (mSecondInstance)
|
||||
{
|
||||
std::ostringstream msg;
|
||||
msg <<
|
||||
gSecondLife << " is already running.\n"
|
||||
"\n"
|
||||
"Check your task bar for a minimized copy of the program.\n"
|
||||
"If this message persists, restart your computer.",
|
||||
msg << LLTrans::getString("MBAlreadyRunning");
|
||||
OSMessageBox(
|
||||
msg.str(),
|
||||
LLStringUtil::null,
|
||||
@@ -2418,20 +2418,17 @@ void LLAppViewer::checkForCrash(void)
|
||||
// Pop up a freeze or crash warning dialog
|
||||
//
|
||||
S32 choice;
|
||||
if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_ASK)
|
||||
const S32 cb = gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING);
|
||||
if(cb == CRASH_BEHAVIOR_ASK)
|
||||
{
|
||||
std::ostringstream msg;
|
||||
msg << gSecondLife
|
||||
<< " appears to have frozen or crashed on the previous run.\n"
|
||||
<< "Would you like to send a crash report?";
|
||||
std::string alert;
|
||||
alert = gSecondLife;
|
||||
alert += " Alert";
|
||||
msg << LLTrans::getString("MBFrozenCrashed");
|
||||
std::string alert = LLTrans::getString("APP_NAME") + " " + LLTrans::getString("MBAlert");
|
||||
choice = OSMessageBox(msg.str(),
|
||||
alert,
|
||||
OSMB_YESNO);
|
||||
}
|
||||
else if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_NEVER_SEND)
|
||||
else if(cb == CRASH_BEHAVIOR_NEVER_SEND)
|
||||
{
|
||||
choice = OSBTN_NO;
|
||||
}
|
||||
@@ -2512,9 +2509,6 @@ bool LLAppViewer::initWindow()
|
||||
|
||||
LLUI::sWindow = gViewerWindow->getWindow();
|
||||
|
||||
LLTrans::parseStrings("strings.xml");
|
||||
LLUITrans::parseStrings("ui_strings.xml");
|
||||
|
||||
// Show watch cursor
|
||||
gViewerWindow->setCursor(UI_CURSOR_WAIT);
|
||||
|
||||
@@ -2637,7 +2631,7 @@ void LLAppViewer::writeSystemInfo()
|
||||
gDebugInfo["CrashNotHandled"] = (LLSD::Boolean)true;
|
||||
|
||||
// Dump some debugging info
|
||||
LL_INFOS("SystemInfo") << gSecondLife
|
||||
LL_INFOS("SystemInfo") << LLTrans::getString("APP_NAME")
|
||||
<< " version " << LL_VERSION_MAJOR << "." << LL_VERSION_MINOR << "." << LL_VERSION_PATCH
|
||||
<< LL_ENDL;
|
||||
|
||||
@@ -3237,14 +3231,14 @@ bool LLAppViewer::initCache()
|
||||
|
||||
if (mPurgeCache && !read_only)
|
||||
{
|
||||
LLSplashScreen::update("Clearing cache...");
|
||||
LLSplashScreen::update(LLTrans::getString("StartupClearingCache"));
|
||||
purgeCache();
|
||||
// <edit>
|
||||
texture_cache_mismatch = false;
|
||||
// </edit>
|
||||
}
|
||||
|
||||
LLSplashScreen::update("Initializing Texture Cache...");
|
||||
LLSplashScreen::update(LLTrans::getString("StartupInitializingTextureCache"));
|
||||
|
||||
// Init the texture cache
|
||||
// Allocate 80% of the cache size for textures
|
||||
@@ -3272,7 +3266,7 @@ bool LLAppViewer::initCache()
|
||||
|
||||
LLVOCache::getInstance()->initCache(LL_PATH_CACHE, gSavedSettings.getU32("CacheNumberOfRegionsForObjects"), getObjectCacheVersion()) ;
|
||||
|
||||
LLSplashScreen::update("Initializing VFS...");
|
||||
LLSplashScreen::update(LLTrans::getString("StartupInitializingVFS"));
|
||||
|
||||
// Init the VFS
|
||||
vfs_size = llmin(vfs_size + extra, MAX_VFS_SIZE);
|
||||
@@ -3433,7 +3427,7 @@ void LLAppViewer::addOnIdleCallback(const boost::function<void()>& cb)
|
||||
|
||||
void LLAppViewer::purgeCache()
|
||||
{
|
||||
LL_INFOS("AppCache") << "Purging Cache and Texture Cache..." << llendl;
|
||||
LL_INFOS("AppCache") << "Purging Cache and Texture Cache..." << LL_ENDL;
|
||||
LLAppViewer::getTextureCache()->purgeCache(LL_PATH_CACHE);
|
||||
LLVOCache::getInstance()->removeCache(LL_PATH_CACHE);
|
||||
std::string mask = "*.*";
|
||||
@@ -4076,7 +4070,7 @@ void LLAppViewer::idleShutdown()
|
||||
S32 finished_uploads = total_uploads - pending_uploads;
|
||||
F32 percent = 100.f * finished_uploads / total_uploads;
|
||||
gViewerWindow->setProgressPercent(percent);
|
||||
gViewerWindow->setProgressString("Saving final data...");
|
||||
gViewerWindow->setProgressString(LLTrans::getString("SavingSettings"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4088,7 +4082,7 @@ void LLAppViewer::idleShutdown()
|
||||
// Wait for a LogoutReply message
|
||||
gViewerWindow->setShowProgress(!gSavedSettings.getBOOL("AscentDisableLogoutScreens"));
|
||||
gViewerWindow->setProgressPercent(100.f);
|
||||
gViewerWindow->setProgressString("Logging out...");
|
||||
gViewerWindow->setProgressString(LLTrans::getString("LoggingOut"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4300,8 +4294,8 @@ void LLAppViewer::idleNetwork()
|
||||
{
|
||||
LLUUID this_region_id = agent_region->getRegionID();
|
||||
bool this_region_alive = agent_region->isAlive();
|
||||
if (mAgentRegionLastAlive && !this_region_alive // newly dead
|
||||
&& mAgentRegionLastID == this_region_id) // same region
|
||||
if ((mAgentRegionLastAlive && !this_region_alive) // newly dead
|
||||
&& (mAgentRegionLastID == this_region_id)) // same region
|
||||
{
|
||||
forceDisconnect(LLTrans::getString("AgentLostConnection"));
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
#include "llfindlocale.h"
|
||||
|
||||
#include "llcommandlineparser.h"
|
||||
#include "lltrans.h"
|
||||
|
||||
// *FIX:Mani - This hack is to fix a linker issue with libndofdev.lib
|
||||
// The lib was compiled under VS2005 - in VS2003 we need to remap assert
|
||||
@@ -469,7 +470,7 @@ bool LLAppViewerWin32::initHardwareTest()
|
||||
// but vram.
|
||||
vram_only = TRUE;
|
||||
|
||||
LLSplashScreen::update("Detecting hardware...");
|
||||
LLSplashScreen::update(LLTrans::getString("StartupDetectingHardware"));
|
||||
|
||||
LL_DEBUGS("AppInit") << "Attempting to poll DirectX for hardware info" << LL_ENDL;
|
||||
gDXHardware.setWriteDebugFunc(write_debug_dx);
|
||||
@@ -483,19 +484,10 @@ bool LLAppViewerWin32::initHardwareTest()
|
||||
// Warn them that runnin without DirectX 9 will
|
||||
// not allow us to tell them about driver issues
|
||||
std::ostringstream msg;
|
||||
msg <<
|
||||
LLAppViewer::instance()->getSecondLifeTitle() << " is unable to detect DirectX 9.0b or greater.\n"
|
||||
"\n" <<
|
||||
LLAppViewer::instance()->getSecondLifeTitle() << " uses DirectX to detect hardware and/or\n"
|
||||
"outdated drivers that can cause stability problems,\n"
|
||||
"poor performance and crashes. While you can run\n" <<
|
||||
LLAppViewer::instance()->getSecondLifeTitle() << " without it, we highly recommend running\n"
|
||||
"with DirectX 9.0b\n"
|
||||
"\n"
|
||||
"Do you wish to continue?\n";
|
||||
msg << LLTrans::getString ("MBNoDirectX");
|
||||
S32 button = OSMessageBox(
|
||||
msg.str(),
|
||||
"Warning",
|
||||
LLTrans::getString("MBWarning"),
|
||||
OSMB_YESNO);
|
||||
if (OSBTN_NO== button)
|
||||
{
|
||||
@@ -511,10 +503,12 @@ bool LLAppViewerWin32::initHardwareTest()
|
||||
gSavedSettings.setBOOL("ProbeHardwareOnStartup", FALSE);
|
||||
|
||||
// Disable so debugger can work
|
||||
std::ostringstream splash_msg;
|
||||
splash_msg << "Loading " << LLAppViewer::instance()->getSecondLifeTitle() << "...";
|
||||
std::string splash_msg;
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[APP_NAME]"] = LLAppViewer::instance()->getSecondLifeTitle();
|
||||
splash_msg = LLTrans::getString("StartupLoading", args);
|
||||
|
||||
LLSplashScreen::update(splash_msg.str());
|
||||
LLSplashScreen::update(splash_msg);
|
||||
}
|
||||
|
||||
if (!restoreErrorTrap())
|
||||
|
||||
@@ -263,6 +263,9 @@ static bool gUseCircuitCallbackCalled = false;
|
||||
EStartupState LLStartUp::gStartupState = STATE_FIRST;
|
||||
|
||||
|
||||
static U64 gFirstSimHandle = 0;
|
||||
static LLHost gFirstSim;
|
||||
static std::string gFirstSimSeedCap;
|
||||
//
|
||||
// local function declaration
|
||||
//
|
||||
@@ -374,9 +377,6 @@ bool idle_startup()
|
||||
static std::string password;
|
||||
static std::vector<const char*> requested_options;
|
||||
|
||||
static U64 first_sim_handle = 0;
|
||||
static LLHost first_sim;
|
||||
static std::string first_sim_seed_cap;
|
||||
static U32 first_sim_size_x = 256;
|
||||
static U32 first_sim_size_y = 256;
|
||||
|
||||
@@ -823,7 +823,6 @@ bool idle_startup()
|
||||
set_startup_status(0.03f, msg.c_str(), gAgent.mMOTD.c_str());
|
||||
display_startup();
|
||||
// LLViewerMedia::initBrowser();
|
||||
|
||||
LLStartUp::setStartupState( STATE_LOGIN_SHOW );
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1135,7 +1134,7 @@ bool idle_startup()
|
||||
|
||||
// Display the startup progress bar.
|
||||
gViewerWindow->setShowProgress(!gSavedSettings.getBOOL("AscentDisableLogoutScreens"));
|
||||
gViewerWindow->setProgressCancelButtonVisible(TRUE, std::string("Quit")); // *TODO: Translate
|
||||
gViewerWindow->setProgressCancelButtonVisible(TRUE, LLTrans::getString("Quit"));
|
||||
|
||||
// Poke the VFS, which could potentially block for a while if
|
||||
// Windows XP is acting up
|
||||
@@ -1220,9 +1219,7 @@ bool idle_startup()
|
||||
}
|
||||
auth_method = "login_to_simulator";
|
||||
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[APP_NAME]"] = LLAppViewer::instance()->getSecondLifeTitle();
|
||||
auth_desc = LLTrans::getString("LoginInProgress", args);
|
||||
auth_desc = LLTrans::getString("LoginInProgress");
|
||||
LLStartUp::setStartupState( STATE_XMLRPC_LEGACY_LOGIN ); // XMLRPC
|
||||
}
|
||||
|
||||
@@ -1365,7 +1362,7 @@ bool idle_startup()
|
||||
LL_DEBUGS("AppInit") << "STATE_LOGIN_NO_DATA_YET" << LL_ENDL;
|
||||
// If we get here we have gotten past the potential stall
|
||||
// in curl, so take "may appear frozen" out of progress bar. JC
|
||||
auth_desc = "Logging in...";
|
||||
auth_desc = LLTrans::getString("LoginInProgressNoFrozen");
|
||||
set_startup_status(progress, auth_desc, auth_message);
|
||||
// Process messages to keep from dropping circuit.
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
@@ -1431,7 +1428,7 @@ bool idle_startup()
|
||||
}
|
||||
else
|
||||
{
|
||||
emsg << "Login failed.\n";
|
||||
emsg << LLTrans::getString("LoginFailed") + "\n";
|
||||
reason_response = LLUserAuth::getInstance()->getResponse("reason");
|
||||
message_response = LLUserAuth::getInstance()->getResponse("message");
|
||||
|
||||
@@ -1571,7 +1568,7 @@ bool idle_startup()
|
||||
text = LLUserAuth::getInstance()->getResponse("secure_session_id");
|
||||
if(!text.empty()) gAgent.mSecureSessionID.set(text);
|
||||
|
||||
text = LLUserAuth::getInstance()->getResponse("firsst_name");
|
||||
text = LLUserAuth::getInstance()->getResponse("first_name");
|
||||
if(!text.empty())
|
||||
{
|
||||
// Remove quotes from string. Login.cgi sends these to force
|
||||
@@ -1663,10 +1660,10 @@ bool idle_startup()
|
||||
if(!sim_ip_str.empty() && !sim_port_str.empty())
|
||||
{
|
||||
U32 sim_port = strtoul(sim_port_str.c_str(), NULL, 10);
|
||||
first_sim.set(sim_ip_str, sim_port);
|
||||
if (first_sim.isOk())
|
||||
gFirstSim.set(sim_ip_str, sim_port);
|
||||
if (gFirstSim.isOk())
|
||||
{
|
||||
gMessageSystem->enableCircuit(first_sim, TRUE);
|
||||
gMessageSystem->enableCircuit(gFirstSim, TRUE);
|
||||
}
|
||||
}
|
||||
std::string region_x_str = LLUserAuth::getInstance()->getResponse("region_x");
|
||||
@@ -1675,7 +1672,7 @@ bool idle_startup()
|
||||
{
|
||||
U32 region_x = strtoul(region_x_str.c_str(), NULL, 10);
|
||||
U32 region_y = strtoul(region_y_str.c_str(), NULL, 10);
|
||||
first_sim_handle = to_region_handle(region_x, region_y);
|
||||
gFirstSimHandle = to_region_handle(region_x, region_y);
|
||||
}
|
||||
|
||||
text = LLUserAuth::getInstance()->getResponse("region_size_x");
|
||||
@@ -1698,7 +1695,7 @@ bool idle_startup()
|
||||
}
|
||||
|
||||
text = LLUserAuth::getInstance()->getResponse("seed_capability");
|
||||
if (!text.empty()) first_sim_seed_cap = text;
|
||||
if (!text.empty()) gFirstSimSeedCap = text;
|
||||
|
||||
text = LLUserAuth::getInstance()->getResponse("seconds_since_epoch");
|
||||
if(!text.empty())
|
||||
@@ -1874,7 +1871,7 @@ bool idle_startup()
|
||||
if(gAgentID.notNull()
|
||||
&& gAgentSessionID.notNull()
|
||||
&& gMessageSystem->mOurCircuitCode
|
||||
&& first_sim.isOk())
|
||||
&& gFirstSim.isOk())
|
||||
// OGPX : Inventory root might be null in OGP.
|
||||
// && gAgent.mInventoryRootID.notNull())
|
||||
{
|
||||
@@ -1970,14 +1967,14 @@ bool idle_startup()
|
||||
// This is necessary because creating objects before this is set will result in a
|
||||
// bad mPositionAgent cache.
|
||||
|
||||
gAgent.initOriginGlobal(from_region_handle(first_sim_handle));
|
||||
gAgent.initOriginGlobal(from_region_handle(gFirstSimHandle));
|
||||
|
||||
LLWorld::getInstance()->addRegion(first_sim_handle, first_sim, first_sim_size_x, first_sim_size_y);
|
||||
LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim, first_sim_size_x, first_sim_size_y);
|
||||
|
||||
LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(first_sim_handle);
|
||||
LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle);
|
||||
LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
|
||||
|
||||
regionp->setSeedCapability(first_sim_seed_cap);
|
||||
regionp->setSeedCapability(gFirstSimSeedCap);
|
||||
LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL;
|
||||
|
||||
// Set agent's initial region to be the one we just created.
|
||||
@@ -2019,6 +2016,25 @@ bool idle_startup()
|
||||
//---------------------------------------------------------------------
|
||||
if(STATE_SEED_GRANTED_WAIT == LLStartUp::getStartupState())
|
||||
{
|
||||
/*LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle);
|
||||
if (regionp->capabilitiesReceived())
|
||||
{
|
||||
LLStartUp::setStartupState( STATE_SEED_CAP_GRANTED );
|
||||
}
|
||||
else
|
||||
{
|
||||
U32 num_retries = regionp->getNumSeedCapRetries();
|
||||
if (num_retries > 0)
|
||||
{
|
||||
LLStringUtil::format_map_t args;
|
||||
args["[NUMBER]"] = llformat("%d", num_retries + 1);
|
||||
set_startup_status(0.4f, LLTrans::getString("LoginRetrySeedCapGrant", args), gAgent.mMOTD);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_startup_status(0.4f, LLTrans::getString("LoginRequestSeedCapGrant"), gAgent.mMOTD);
|
||||
}
|
||||
}*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2215,16 +2231,16 @@ bool idle_startup()
|
||||
|
||||
gUseCircuitCallbackCalled = FALSE;
|
||||
|
||||
msg->enableCircuit(first_sim, TRUE);
|
||||
msg->enableCircuit(gFirstSim, TRUE);
|
||||
// now, use the circuit info to tell simulator about us!
|
||||
LL_INFOS("AppInit") << "viewer: UserLoginLocationReply() Enabling " << first_sim << " with code " << msg->mOurCircuitCode << LL_ENDL;
|
||||
LL_INFOS("AppInit") << "viewer: UserLoginLocationReply() Enabling " << gFirstSim << " with code " << msg->mOurCircuitCode << LL_ENDL;
|
||||
msg->newMessageFast(_PREHASH_UseCircuitCode);
|
||||
msg->nextBlockFast(_PREHASH_CircuitCode);
|
||||
msg->addU32Fast(_PREHASH_Code, msg->mOurCircuitCode);
|
||||
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
|
||||
msg->addUUIDFast(_PREHASH_ID, gAgent.getID());
|
||||
msg->sendReliable(
|
||||
first_sim,
|
||||
gFirstSim,
|
||||
MAX_TIMEOUT_COUNT,
|
||||
FALSE,
|
||||
TIMEOUT_SECONDS,
|
||||
|
||||
@@ -3922,7 +3922,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
|
||||
<< x << ":" << y
|
||||
<< " current pos " << gAgent.getPositionGlobal()
|
||||
<< LL_ENDL;
|
||||
LLAppViewer::instance()->forceDisconnect("You were sent to an invalid region.");
|
||||
LLAppViewer::instance()->forceDisconnect(LLTrans::getString("SentToInvalidRegion"));
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
#include "llrect.h"
|
||||
#include "llsky.h"
|
||||
#include "llstring.h"
|
||||
#include "lltrans.h"
|
||||
#include "llui.h"
|
||||
#include "lluuid.h"
|
||||
#include "llview.h"
|
||||
@@ -1228,7 +1229,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
|
||||
{
|
||||
// if we're in world, show a progress bar to hide reloading of textures
|
||||
llinfos << "Restoring GL during activate" << llendl;
|
||||
restoreGL("Restoring...");
|
||||
restoreGL(LLTrans::getString("ProgressRestoring"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1403,6 +1404,27 @@ void LLViewerWindow::handlePauseWatchdog(LLWindow *window)
|
||||
LLAppViewer::instance()->pauseMainloopTimeout();
|
||||
}
|
||||
|
||||
//virtual
|
||||
std::string LLViewerWindow::translateString(const char* tag)
|
||||
{
|
||||
return LLTrans::getString( std::string(tag) );
|
||||
}
|
||||
|
||||
//virtual
|
||||
std::string LLViewerWindow::translateString(const char* tag,
|
||||
const std::map<std::string, std::string>& args)
|
||||
{
|
||||
// LLTrans uses a special subclass of std::string for format maps,
|
||||
// but we must use std::map<> in these callbacks, otherwise we create
|
||||
// a dependency between LLWindow and LLFormatMapString. So copy the data.
|
||||
LLStringUtil::format_map_t args_copy;
|
||||
std::map<std::string,std::string>::const_iterator it = args.begin();
|
||||
for ( ; it != args.end(); ++it)
|
||||
{
|
||||
args_copy[it->first] = it->second;
|
||||
}
|
||||
return LLTrans::getString( std::string(tag), args_copy);
|
||||
}
|
||||
|
||||
//
|
||||
// Classes
|
||||
@@ -1466,12 +1488,13 @@ LLViewerWindow::LLViewerWindow(
|
||||
|
||||
if (NULL == mWindow)
|
||||
{
|
||||
LLSplashScreen::update("Graphics Initialization Failed. Please Update Your Graphics Driver!");
|
||||
LLSplashScreen::update(LLTrans::getString("StartupRequireDriverUpdate"));
|
||||
|
||||
LL_WARNS("Window") << "Failed to create window, to be shutting Down, be sure your graphics driver is updated." << llendl ;
|
||||
|
||||
ms_sleep(5000) ; //wait for 5 seconds.
|
||||
LLSplashScreen::update("Shutting down...");
|
||||
|
||||
LLSplashScreen::update(LLTrans::getString("ShuttingDown"));
|
||||
#if LL_LINUX || LL_SOLARIS
|
||||
llwarns << "Unable to create window, be sure screen is set at 32-bit color and your graphics driver is configured correctly. See README-linux.txt or README-solaris.txt for further information."
|
||||
<< llendl;
|
||||
@@ -4577,7 +4600,7 @@ void LLViewerWindow::drawMouselookInstructions()
|
||||
}
|
||||
|
||||
// Draw instructions for mouselook ("Press ESC to leave Mouselook" in a box at the top of the screen.)
|
||||
const std::string instructions = "Press ESC to leave Mouselook.";
|
||||
const std::string instructions = LLTrans::getString("LeaveMouselook");
|
||||
const LLFontGL* font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF );
|
||||
|
||||
const S32 INSTRUCTIONS_PAD = 5;
|
||||
@@ -4983,7 +5006,7 @@ void LLViewerWindow::restartDisplay(BOOL show_progress_bar)
|
||||
stopGL();
|
||||
if (show_progress_bar)
|
||||
{
|
||||
restoreGL("Changing Resolution...");
|
||||
restoreGL(LLTrans::getString("ProgressChangingResolution"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5070,7 +5093,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size,
|
||||
llinfos << "Restoring GL during resolution change" << llendl;
|
||||
if (show_progress_bar)
|
||||
{
|
||||
restoreGL("Changing Resolution...");
|
||||
restoreGL(LLTrans::getString("ProgressChangingResolution"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -183,6 +183,9 @@ public:
|
||||
/*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg);
|
||||
/*virtual*/ void handlePauseWatchdog(LLWindow *window);
|
||||
/*virtual*/ void handleResumeWatchdog(LLWindow *window);
|
||||
/*virtual*/ std::string translateString(const char* tag);
|
||||
/*virtual*/ std::string translateString(const char* tag,
|
||||
const std::map<std::string, std::string>& args);
|
||||
|
||||
|
||||
//
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "llhttpnode.h"
|
||||
#include "llregionhandle.h"
|
||||
#include "llsurface.h"
|
||||
#include "lltrans.h"
|
||||
#include "llviewercamera.h"
|
||||
#include "llviewertexture.h"
|
||||
#include "llviewertexturelist.h"
|
||||
@@ -278,7 +279,7 @@ void LLWorld::removeRegion(const LLHost &host)
|
||||
llwarns << "gFrameTimeSeconds " << gFrameTimeSeconds << llendl;
|
||||
|
||||
llwarns << "Disabling region " << regionp->getName() << " that agent is in!" << llendl;
|
||||
LLAppViewer::instance()->forceDisconnect("You have been disconnected from the region you were in.");
|
||||
LLAppViewer::instance()->forceDisconnect(LLTrans::getString("YouHaveBeenDisconnected"));
|
||||
|
||||
regionp->saveObjectCache() ; //force to save objects here in case that the object cache is about to be destroyed.
|
||||
return;
|
||||
|
||||
@@ -14,8 +14,27 @@
|
||||
[NAME]'s teleport lure is to [DESTINATION]
|
||||
</string>
|
||||
|
||||
<!-- Default Args - these arguments will be replaced in all strings -->
|
||||
<string name="SECOND_LIFE">Second Life</string>
|
||||
<string name="APP_NAME">Singularity Viewer</string>
|
||||
<string name="CAPITALIZED_APP_NAME">SINGULARITY VIEWER</string>
|
||||
<string name="SECOND_LIFE_GRID">Second Life Grid</string>
|
||||
<string name="SUPPORT_SITE">Second Life Support Portal</string>
|
||||
|
||||
<!-- starting up -->
|
||||
<string name="StartupDetectingHardware">Detecting hardware...</string>
|
||||
<string name="StartupLoading">Loading [APP_NAME]...</string>
|
||||
<string name="StartupClearingCache">Clearing cache...</string>
|
||||
<string name="StartupInitializingTextureCache">Initializing Texture Cache...</string>
|
||||
<string name="StartupInitializingVFS">Initializing VFS...</string>
|
||||
<string name="StartupRequireDriverUpdate">Graphics Initialization Failed. Please Update Your Graphics Driver!</string>
|
||||
|
||||
<!-- progress -->
|
||||
<string name="ProgressRestoring">Restoring...</string>
|
||||
<string name="ProgressChangingResolution">Changing Resolution...</string>
|
||||
<!-- Login -->
|
||||
<string name="LoginInProgress">Logging in. [APP_NAME] may appear frozen. Please wait.</string>
|
||||
<string name="LoginInProgressNoFrozen">Logging in...</string>
|
||||
<string name="LoginAuthenticating">Authenticating</string>
|
||||
<string name="LoginMaintenance">Performing account maintenance...</string>
|
||||
<string name="LoginAttempt">Previous login attempt failed. Logging in, attempt [NUMBER]</string>
|
||||
@@ -30,14 +49,22 @@
|
||||
<string name="LoginInitializingQuicktime">Initializing QuickTime...</string>
|
||||
<string name="LoginQuicktimeNotFound">QuickTime not found - unable to initialize.</string>
|
||||
<string name="LoginQuicktimeOK">QuickTime initialized successfully.</string>
|
||||
<string name="LoginRequestSeedCapGrant">Requesting region capabilities...</string>
|
||||
<string name="LoginRetrySeedCapGrant">Requesting region capabilities, attempt [NUMBER]...</string>
|
||||
<string name="LoginWaitingForRegionHandshake">Waiting for region handshake...</string>
|
||||
<string name="LoginConnectingToRegion">Connecting to region...</string>
|
||||
<string name="LoginDownloadingClothing">Downloading clothing...</string>
|
||||
|
||||
<string name="LoginFailed">Login failed.</string>
|
||||
<string name="Quit">Quit</string>
|
||||
|
||||
<!-- Disconnection -->
|
||||
<string name="AgentLostConnection">This region may be experiencing trouble. Please check your connection to the Internet.</string>
|
||||
|
||||
<string name="SavingSettings">Saving your settings...</string>
|
||||
<string name="LoggingOut">Logging out...</string>
|
||||
<string name="ShuttingDown">Shutting down...</string>
|
||||
<string name="YouHaveBeenDisconnected">You have been disconnected from the region you were in.</string>
|
||||
<string name="SentToInvalidRegion">You were sent to an invalid region.</string>
|
||||
|
||||
<!-- Tooltip, llhoverview.cpp -->
|
||||
<string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar -->
|
||||
@@ -1781,6 +1808,78 @@ Returns a key that is the UUID of the user seated on the prim.
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!-- mouselook -->
|
||||
<string name="LeaveMouselook">Press ESC to return to World View</string>
|
||||
<!-- menu accelerators -->
|
||||
<string name="accel-mac-control">Ctrl-</string>
|
||||
<string name="accel-mac-command">Cmd-</string>
|
||||
<string name="accel-mac-option">Opt-</string>
|
||||
<string name="accel-mac-shift">Shift-</string>
|
||||
<string name="accel-win-control">Ctrl-</string>
|
||||
<string name="accel-win-alt">Alt-</string>
|
||||
<string name="accel-win-shift">Shift-</string>
|
||||
<!-- OSMessageBox messages -->
|
||||
<string name="MBCmdLineError">
|
||||
An error was found parsing the command line.
|
||||
Please see: http://wiki.secondlife.com/wiki/Client_parameters
|
||||
Error:
|
||||
</string>
|
||||
<string name="MBCmdLineUsg">[APP_NAME] Command line usage:</string>
|
||||
<string name="MBUnableToAccessFile">
|
||||
[APP_NAME] is unable to access a file that it needs.
|
||||
|
||||
This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open.
|
||||
If this message persists, restart your computer and try again.
|
||||
If it continues to persist, you may need to completely uninstall [APP_NAME] and reinstall it.
|
||||
</string>
|
||||
<string name="MBRequiresAltiVec"> [APP_NAME] requires a processor with AltiVec (G4 or later).</string>
|
||||
<string name="MBAlreadyRunning">
|
||||
[APP_NAME] is already running.
|
||||
Check your task bar for a minimized copy of the program.
|
||||
If this message persists, restart your computer.
|
||||
</string>
|
||||
<string name="MBFrozenCrashed">
|
||||
[APP_NAME] appears to have frozen or crashed on the previous run.
|
||||
Would you like to send a crash report?
|
||||
</string>
|
||||
<string name="MBAlert">Notification</string>
|
||||
<string name="MBNoDirectX">
|
||||
[APP_NAME] is unable to detect DirectX 9.0b or greater.
|
||||
[APP_NAME] uses DirectX to detect hardware and/or outdated drivers that can cause stability problems, poor performance and crashes. While you can run [APP_NAME] without it, we highly recommend running with DirectX 9.0b.
|
||||
|
||||
Do you wish to continue?
|
||||
</string>
|
||||
<string name="MBWarning">Warning</string>
|
||||
<string name="MBRegClassFailed">RegisterClass failed</string>
|
||||
<string name="MBError">Error</string>
|
||||
<string name="MBFullScreenErr">
|
||||
Unable to run fullscreen at [WIDTH] x [HEIGHT].
|
||||
Running in window.
|
||||
</string>
|
||||
<string name="MBDestroyWinFailed">Shutdown Error while destroying window (DestroyWindow() failed)</string>
|
||||
<string name="MBShutdownErr">Shutdown Error</string>
|
||||
<string name="MBDevContextErr">Can't make GL device context</string>
|
||||
<string name="MBPixelFmtErr">Can't find suitable pixel format</string>
|
||||
<string name="MBPixelFmtDescErr">Can't get pixel format description</string>
|
||||
<string name="MBTrueColorWindow">
|
||||
[APP_NAME] requires True Color (32-bit) to run.
|
||||
Please go to your computer's display settings and set the color mode to 32-bit.
|
||||
</string>
|
||||
<string name="MBAlpha">
|
||||
[APP_NAME] is unable to run because it can't get an 8 bit alpha channel. Usually this is due to video card driver issues.
|
||||
Please make sure you have the latest video card drivers installed.
|
||||
Also be sure your monitor is set to True Color (32-bit) in Control Panels > Display > Settings.
|
||||
If you continue to receive this message, contact the [SUPPORT_SITE].
|
||||
</string>
|
||||
<string name="MBPixelFmtSetErr">Can't set pixel format</string>
|
||||
<string name="MBGLContextErr">Can't create GL rendering context</string>
|
||||
<string name="MBGLContextActErr">Can't activate GL rendering context</string>
|
||||
<string name="MBVideoDrvErr">
|
||||
[APP_NAME] is unable to run because your video card drivers did not install properly, are out of date, or are for unsupported hardware. Please make sure you have the latest video card drivers and even if you do have the latest, try reinstalling them.
|
||||
|
||||
If you continue to receive this message, contact the [SUPPORT_SITE].
|
||||
</string>
|
||||
<!-- Addition of OSSL commands for use in OpenSimulator based regions, including Aurora -->
|
||||
<string name="LSLTipText_osSetRegionWaterHeight">
|
||||
osSetRegionWaterHeight(float height)
|
||||
|
||||
@@ -4,9 +4,51 @@
|
||||
For example, the strings used in avatar chat bubbles, and strings
|
||||
that are returned from one component and may appear in many places-->
|
||||
<strings>
|
||||
<string name="SECOND_LIFE">
|
||||
Second Life
|
||||
</string>
|
||||
<string name="APP_NAME">
|
||||
Singularity Viewer
|
||||
</string>
|
||||
<string name="CAPITALIZED_APP_NAME">
|
||||
SINGULARITY VIEWER
|
||||
</string>
|
||||
<string name="SECOND_LIFE_GRID">
|
||||
Grille de Second Life
|
||||
</string>
|
||||
<string name="SUPPORT_SITE">
|
||||
Portail Assistance Second Life
|
||||
</string>
|
||||
<string name="StartupDetectingHardware">
|
||||
Détection du matériel...
|
||||
</string>
|
||||
<string name="StartupLoading">
|
||||
Chargement de [APP_NAME]...
|
||||
</string>
|
||||
<string name="StartupClearingCache">
|
||||
Vidage du cache...
|
||||
</string>
|
||||
<string name="StartupInitializingTextureCache">
|
||||
Initialisation du cache des textures...
|
||||
</string>
|
||||
<string name="StartupInitializingVFS">
|
||||
Initialisation VFS...
|
||||
</string>
|
||||
<string name="StartupRequireDriverUpdate">
|
||||
Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour.
|
||||
</string>
|
||||
<string name="ProgressRestoring">
|
||||
Restauration...
|
||||
</string>
|
||||
<string name="ProgressChangingResolution">
|
||||
Changement de la résolution...
|
||||
</string>
|
||||
<string name="LoginInProgress">
|
||||
La connexion à [APP_NAME] apparaît peut-être comme étant gelée. Veuillez patienter.
|
||||
</string>
|
||||
<string name="LoginInProgressNoFrozen">
|
||||
Connexion...
|
||||
</string>
|
||||
<string name="LoginAuthenticating">
|
||||
Authentification en cours
|
||||
</string>
|
||||
@@ -46,6 +88,12 @@
|
||||
<string name="LoginQuicktimeOK">
|
||||
Initialisation de Quicktime réussie.
|
||||
</string>
|
||||
<string name="LoginRequestSeedCapGrant">
|
||||
Capacités de la région demandées...
|
||||
</string>
|
||||
<string name="LoginRetrySeedCapGrant">
|
||||
Capacités de la région demandées... Tentative n° [NUMBER].
|
||||
</string>
|
||||
<string name="LoginWaitingForRegionHandshake">
|
||||
Liaison avec la région en cours de création...
|
||||
</string>
|
||||
@@ -55,9 +103,30 @@
|
||||
<string name="LoginDownloadingClothing">
|
||||
Habits en cours de téléchargement, esperons le ...
|
||||
</string>
|
||||
<string name="LoginFailed">
|
||||
Échec de la connexion.
|
||||
</string>
|
||||
<string name="Quit">
|
||||
Quitter
|
||||
</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="SavingSettings">
|
||||
Enregistrement des paramètres...
|
||||
</string>
|
||||
<string name="LoggingOut">
|
||||
Déconnexion...
|
||||
</string>
|
||||
<string name="ShuttingDown">
|
||||
Arrêt en cours...
|
||||
</string>
|
||||
<string name="YouHaveBeenDisconnected">
|
||||
Vous avez été déconnecté de la région où vous étiez.
|
||||
</string>
|
||||
<string name="SentToInvalidRegion">
|
||||
Vous avez été transféré vers une région non valide.
|
||||
</string>
|
||||
<string name="TooltipPerson">
|
||||
Personne
|
||||
</string>
|
||||
@@ -488,3 +557,119 @@
|
||||
Choisir le répertoire
|
||||
</string>
|
||||
</strings>
|
||||
<string name="LeaveMouselook">
|
||||
Appuyez sur ESC pour quitter la vue subjective
|
||||
</string>
|
||||
<!-- menu accelerators -->
|
||||
<string name="accel-mac-control">
|
||||
Ctrl-
|
||||
</string>
|
||||
<string name="accel-mac-command">
|
||||
Cmd-
|
||||
</string>
|
||||
<string name="accel-mac-option">
|
||||
Opt-
|
||||
</string>
|
||||
<string name="accel-mac-shift">
|
||||
Maj-
|
||||
</string>
|
||||
<string name="accel-win-control">
|
||||
Ctrl-
|
||||
</string>
|
||||
<string name="accel-win-alt">
|
||||
Alt-
|
||||
</string>
|
||||
<string name="accel-win-shift">
|
||||
Maj-
|
||||
</string>
|
||||
<string name="MBCmdLineError">
|
||||
Une erreur est survenue lors de la lecture de la ligne de commande.
|
||||
Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters
|
||||
Erreur :
|
||||
</string>
|
||||
<string name="MBCmdLineUsg">
|
||||
[APP_NAME] - Utilisation de la ligne de commande :
|
||||
</string>
|
||||
<string name="MBUnableToAccessFile">
|
||||
[APP_NAME] ne peut accéder à un fichier requis.
|
||||
|
||||
Cela vient du fait que quelqu'un a ouvert plusieurs copies ou que votre système pense qu'un fichier est ouvert.
|
||||
Si ce message persiste, veuillez redémarrer votre ordinateur.
|
||||
Si le problème persiste, vous devrez peut-être complètement désinstaller puis réinstaller [APP_NAME].
|
||||
</string>
|
||||
<string name="MBFatalError">
|
||||
Erreur fatale
|
||||
</string>
|
||||
<string name="MBRequiresAltiVec">
|
||||
[APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).
|
||||
</string>
|
||||
<string name="MBAlreadyRunning">
|
||||
[APP_NAME] est déjà en cours d'exécution.
|
||||
Vérifiez si une version minimisée du programme apparaît dans votre barre de tâches.
|
||||
Si ce message persiste, redémarrez votre ordinateur.
|
||||
</string>
|
||||
<string name="MBFrozenCrashed">
|
||||
[APP_NAME] semble avoir crashé lors de l'utilisation précédente.
|
||||
Voulez-vous envoyer un rapport de crash ?
|
||||
</string>
|
||||
<string name="MBAlert">
|
||||
Notification
|
||||
</string>
|
||||
<string name="MBNoDirectX">
|
||||
[APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure.
|
||||
[APP_NAME] utilise DirectX pour détecter les matériels et/ou les pilotes qui ne sont pas à jour et peuvent causer des problèmes de stabilité, de performance ou des plantages. Bien que vous puissiez utiliser [APP_NAME] sans DirectX, nous vous recommandons de l'utiliser avec DirectX 9.0b.
|
||||
|
||||
Voulez-vous continuer ?
|
||||
</string>
|
||||
<string name="MBWarning">
|
||||
Avertissement
|
||||
</string>
|
||||
<string name="MBRegClassFailed">
|
||||
RegisterClass a échoué
|
||||
</string>
|
||||
<string name="MBError">
|
||||
Erreur
|
||||
</string>
|
||||
<string name="MBFullScreenErr">
|
||||
Impossible d'ouvrir le mode plein écran à [WIDTH] x [HEIGHT].
|
||||
Utilisation du mode fenêtré.
|
||||
</string>
|
||||
<string name="MBDestroyWinFailed">
|
||||
Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() a échoué)
|
||||
</string>
|
||||
<string name="MBShutdownErr">
|
||||
Erreur de fermeture
|
||||
</string>
|
||||
<string name="MBDevContextErr">
|
||||
Impossible de créer le contexte GL
|
||||
</string>
|
||||
<string name="MBPixelFmtErr">
|
||||
Impossible de trouver le format pixel approprié
|
||||
</string>
|
||||
<string name="MBPixelFmtDescErr">
|
||||
Impossible de trouver la description du format pixel
|
||||
</string>
|
||||
<string name="MBTrueColorWindow">
|
||||
[APP_NAME] nécessite True Color (32 bits) pour s'exécuter.
|
||||
Accédez aux paramètres d'affichage de votre ordinateur et réglez le mode couleur sur 32 bits.
|
||||
</string>
|
||||
<string name="MBAlpha">
|
||||
[APP_NAME] ne peut pas s'exécuter, car il n'y pas de canal alpha 8 bits accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo.
|
||||
Assurez-vous d'avoir installé le pilote de carte vidéo le plus récent possible.
|
||||
Assurez-vous aussi que votre écran est réglé sur True Color (32 bits) sous Panneau de configuration > Affichage > Paramètres.
|
||||
Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
|
||||
</string>
|
||||
<string name="MBPixelFmtSetErr">
|
||||
Impossible de trouver le format pixel approprié
|
||||
</string>
|
||||
<string name="MBGLContextErr">
|
||||
Impossible de créer le contexte de rendu GL
|
||||
</string>
|
||||
<string name="MBGLContextActErr">
|
||||
Impossible d'activer le contexte de rendu GL
|
||||
</string>
|
||||
<string name="MBVideoDrvErr">
|
||||
[APP_NAME] ne peut pas s'exécuter car les pilotes de votre carte vidéo n'ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d'avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les.
|
||||
|
||||
Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
|
||||
</string>
|
||||
|
||||
Reference in New Issue
Block a user