From abe62c23d74d5319691a49881719b03cc9b5b090 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 22 Nov 2022 16:21:44 -0500 Subject: SL-18330: Make LLSDSerialize::deserialize() default to notation. LLSDSerialize::serialize() emits a header string, e.g. "" for notation format. Until now, LLSDSerialize::deserialize() has required that header to properly decode the input stream. But none of LLSDBinaryFormatter, LLSDXMLFormatter or LLSDNotationFormatter emit that header themselves. Nor do any of the Python llsd.format_binary(), format_xml() or format_notation() functions. Until now, you could not use LLSD::deserialize() to parse an arbitrary-format LLSD stream serialized by anything but LLSDSerialize::serialize(). Change LLSDSerialize::deserialize() so that if no header is recognized, instead of failing, it attempts to parse as notation. Add tests to exercise this case. The tricky part about this processing is that deserialize() necessarily reads some number of bytes from the input stream first, to try to recognize the header. If it fails to do so, it must prepend the bytes it has already read to the rest of the input stream since they're probably the beginning of the serialized data. To support this use case, introduce cat_streambuf, a std::streambuf subclass that (virtually) concatenates other std::streambuf instances. When read by a std::istream, the sequence of underlying std::streambufs appears to the consumer as a single continuous stream. --- indra/llcommon/llsdserialize.cpp | 87 ++++++++----- indra/llcommon/llstreamtools.cpp | 26 ++++ indra/llcommon/llstreamtools.h | 27 +++- indra/llcommon/tests/llsdserialize_test.cpp | 192 +++++++++++++++++++--------- 4 files changed, 233 insertions(+), 99 deletions(-) diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index 8b4a0ee6d8..9ff4676b95 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -45,6 +45,7 @@ #endif #include "lldate.h" +#include "llmemorystream.h" #include "llsd.h" #include "llstring.h" #include "lluri.h" @@ -61,6 +62,23 @@ const std::string LLSD_NOTATION_HEADER("llsd/notation"); #define windowBits 15 #define ENABLE_ZLIB_GZIP 32 +// If we published this in llsdserialize.h, we could use it in the +// implementation of LLSDOStreamer's operator<<(). +template +void format_using(const LLSD& data, std::ostream& ostr, + LLSDFormatter::EFormatterOptions options=LLSDFormatter::OPTIONS_PRETTY_BINARY) +{ + LLPointer f{ new Formatter }; + f->format(data, ostr, options); +} + +template +S32 parse_using(std::istream& istr, LLSD& data, size_t max_bytes, S32 max_depth=-1) +{ + LLPointer p{ new Parser }; + return p->parse(istr, data, max_bytes, max_depth); +} + /** * LLSDSerialize */ @@ -83,10 +101,10 @@ void LLSDSerialize::serialize(const LLSD& sd, std::ostream& str, ELLSD_Serialize f = new LLSDXMLFormatter; break; - case LLSD_NOTATION: - str << "\n"; - f = new LLSDNotationFormatter; - break; + case LLSD_NOTATION: + str << "\n"; + f = new LLSDNotationFormatter; + break; default: LL_WARNS() << "serialize request for unknown ELLSD_Serialize" << LL_ENDL; @@ -101,10 +119,7 @@ void LLSDSerialize::serialize(const LLSD& sd, std::ostream& str, ELLSD_Serialize // static bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) { - LLPointer p = NULL; char hdr_buf[MAX_HDR_LEN + 1] = ""; /* Flawfinder: ignore */ - int i; - int inbuf = 0; bool legacy_no_header = false; bool fail_if_not_legacy = false; std::string header; @@ -112,7 +127,10 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) /* * Get the first line before anything. */ - str.get(hdr_buf, MAX_HDR_LEN, '\n'); + // Remember str's original input position: if there's no header, we'll + // want to back up and retry. + str.get(hdr_buf, sizeof(hdr_buf), '\n'); + auto inbuf = str.gcount(); if (str.fail()) { str.clear(); @@ -122,16 +140,18 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) if (!strncasecmp(LEGACY_NON_HEADER, hdr_buf, strlen(LEGACY_NON_HEADER))) /* Flawfinder: ignore */ { legacy_no_header = true; - inbuf = (int)str.gcount(); } else { if (fail_if_not_legacy) - goto fail; + { + LL_WARNS() << "deserialize LLSD parse failure" << LL_ENDL; + return false; + } /* * Remove the newline chars */ - for (i = 0; i < MAX_HDR_LEN; i++) + for (size_t i = 0; i < sizeof(hdr_buf); i++) { if (hdr_buf[i] == 0 || hdr_buf[i] == '\r' || hdr_buf[i] == '\n') @@ -149,50 +169,47 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) { end = header.find_first_of(" ?", start); } - if ((start == std::string::npos) || (end == std::string::npos)) - goto fail; - - header = header.substr(start, end - start); - ws(str); + if (! (start == std::string::npos) || (end == std::string::npos)) + { + header = header.substr(start, end - start); + ws(str); + } } /* * Create the parser as appropriate */ if (legacy_no_header) { // Create a LLSD XML parser, and parse the first chunk read above - LLSDXMLParser* x = new LLSDXMLParser(); - x->parsePart(hdr_buf, inbuf); // Parse the first part that was already read - x->parseLines(str, sd); // Parse the rest of it - delete x; - return true; + LLSDXMLParser x; + x.parsePart(hdr_buf, inbuf); // Parse the first part that was already read + auto parsed = x.parseLines(str, sd); // Parse the rest of it + // Formally we should probably check (parsed != PARSE_FAILURE && + // parsed > 0), but since PARSE_FAILURE is -1, this suffices. + return (parsed > 0); } if (header == LLSD_BINARY_HEADER) { - p = new LLSDBinaryParser; + return (parse_using(str, sd, max_bytes) > 0); } else if (header == LLSD_XML_HEADER) { - p = new LLSDXMLParser; + return (parse_using(str, sd, max_bytes) > 0); } else if (header == LLSD_NOTATION_HEADER) { - p = new LLSDNotationParser; + return (parse_using(str, sd, max_bytes) > 0); } else { - LL_WARNS() << "deserialize request for unknown ELLSD_Serialize" << LL_ENDL; + LL_DEBUGS() << "deserialize request with no header, assuming notation" << LL_ENDL; + // Since we've already read 'inbuf' bytes into 'hdr_buf', prepend that + // data to whatever remains in 'str'. + LLMemoryStreamBuf already(reinterpret_cast(hdr_buf), inbuf); + cat_streambuf prebuff(&already, str.rdbuf()); + std::istream prepend(&prebuff); + return (parse_using(prepend, sd, max_bytes) > 0); } - - if (p.notNull()) - { - p->parse(str, sd, max_bytes); - return true; - } - -fail: - LL_WARNS() << "deserialize LLSD parse failure" << LL_ENDL; - return false; } /** diff --git a/indra/llcommon/llstreamtools.cpp b/indra/llcommon/llstreamtools.cpp index d7a6f47932..1674f6edc2 100644 --- a/indra/llcommon/llstreamtools.cpp +++ b/indra/llcommon/llstreamtools.cpp @@ -523,3 +523,29 @@ std::istream& operator>>(std::istream& str, const char *tocheck) } return str; } + +int cat_streambuf::underflow() +{ + if (gptr() == egptr()) + { + // here because our buffer is empty + std::streamsize size; + // Until we've run out of mInputs, try reading the first of them + // into mBuffer. If that fetches some characters, break the loop. + while (! mInputs.empty() + && ! (size = mInputs.front()->sgetn(mBuffer.data(), mBuffer.size()))) + { + // We tried to read mInputs.front() but got zero characters. + // Discard the first streambuf and try the next one. + mInputs.pop_front(); + } + // Either we ran out of mInputs or we succeeded in reading some + // characters, that is, size != 0. Tell base class what we have. + setg(mBuffer.data(), mBuffer.data(), mBuffer.data() + size); + } + // If we fell out of the above loop with mBuffer still empty, return + // eof(), otherwise return the next character. + return (gptr() == egptr()) + ? std::char_traits::eof() + : std::char_traits::to_int_type(*gptr()); +} diff --git a/indra/llcommon/llstreamtools.h b/indra/llcommon/llstreamtools.h index 1b04bf91d7..997f738840 100644 --- a/indra/llcommon/llstreamtools.h +++ b/indra/llcommon/llstreamtools.h @@ -27,8 +27,10 @@ #ifndef LL_STREAM_TOOLS_H #define LL_STREAM_TOOLS_H +#include #include #include +#include // unless specifed otherwise these all return input_stream.good() @@ -113,6 +115,27 @@ LL_COMMON_API std::streamsize fullread( LL_COMMON_API std::istream& operator>>(std::istream& str, const char *tocheck); -#endif - +/** + * cat_streambuf is a std::streambuf subclass that accepts a variadic number + * of std::streambuf* (e.g. some_istream.rdbuf()) and virtually concatenates + * their contents. + */ +// derived from https://stackoverflow.com/a/49441066/5533635 +class cat_streambuf: public std::streambuf +{ +private: + std::deque mInputs; + std::vector mBuffer; + +public: + // only valid for std::streambuf* arguments + template + cat_streambuf(Inputs... inputs): + mInputs{inputs...}, + mBuffer(1024) + {} + + int underflow(); +}; +#endif diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index c246f5ee56..0334699c7f 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -60,6 +60,7 @@ using namespace boost::phoenix; #include "../test/lltut.h" #include "../test/namedtempfile.h" #include "stringize.h" +#include std::vector string_to_vector(const std::string& str) { @@ -112,7 +113,7 @@ namespace tut mSD = LLUUID::null; expected = "\n"; xml_test("null uuid", expected); - + mSD = LLUUID("c96f9b1e-f589-4100-9774-d98643ce0bed"); expected = "c96f9b1e-f589-4100-9774-d98643ce0bed\n"; xml_test("uuid", expected); @@ -136,7 +137,7 @@ namespace tut expected = "aGVsbG8=\n"; xml_test("binary", expected); } - + template<> template<> void sd_xml_object::test<2>() { @@ -225,7 +226,7 @@ namespace tut expected = "bazfoobar\n"; xml_test("2 element map", expected); } - + template<> template<> void sd_xml_object::test<6>() { @@ -241,7 +242,7 @@ namespace tut expected = "Nnw2fGFzZGZoYXBweWJveHw2MGU0NGVjNS0zMDVjLTQzYzItOWExOS1iNGI4OWIxYWUyYTZ8NjBlNDRlYzUtMzA1Yy00M2MyLTlhMTktYjRiODliMWFlMmE2fDYwZTQ0ZWM1LTMwNWMtNDNjMi05YTE5LWI0Yjg5YjFhZTJhNnwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDB8N2ZmZmZmZmZ8N2ZmZmZmZmZ8MHwwfDgyMDAwfDQ1MGZlMzk0LTI5MDQtYzlhZC0yMTRjLWEwN2ViN2ZlZWMyOXwoTm8gRGVzY3JpcHRpb24pfDB8MTB8MA==\n"; xml_test("binary", expected); } - + class TestLLSDSerializeData { public: @@ -250,9 +251,34 @@ namespace tut void doRoundTripTests(const std::string&); void checkRoundTrip(const std::string&, const LLSD& v); - - LLPointer mFormatter; - LLPointer mParser; + + void setFormatterParser(LLPointer formatter, LLPointer parser) + { + mFormatter = [formatter](const LLSD& data, std::ostream& str) + { + formatter->format(data, str); + }; + // this lambda must be mutable since otherwise the bound 'parser' + // is assumed to point to a const LLSDParser + mParser = [parser](std::istream& istr, LLSD& data, size_t max_bytes) mutable + { + // reset() call is needed since test code re-uses parser object + parser->reset(); + return (parser->parse(istr, data, max_bytes) > 0); + }; + } + + void setParser(bool (*parser)(LLSD&, std::istream&, size_t)) + { + // why does LLSDSerialize::deserialize() reverse the parse() params?? + mParser = [parser](std::istream& istr, LLSD& data, size_t max_bytes) + { + return (parser(data, istr, max_bytes) > 0); + }; + } + + std::function mFormatter; + std::function mParser; }; TestLLSDSerializeData::TestLLSDSerializeData() @@ -265,12 +291,11 @@ namespace tut void TestLLSDSerializeData::checkRoundTrip(const std::string& msg, const LLSD& v) { - std::stringstream stream; - mFormatter->format(v, stream); + std::stringstream stream; + mFormatter(v, stream); //LL_INFOS() << "checkRoundTrip: length " << stream.str().length() << LL_ENDL; LLSD w; - mParser->reset(); // reset() call is needed since test code re-uses mParser - mParser->parse(stream, w, stream.str().size()); + mParser(stream, w, stream.str().size()); try { @@ -299,52 +324,52 @@ namespace tut fillmap(root[key], width, depth - 1); } } - + void TestLLSDSerializeData::doRoundTripTests(const std::string& msg) { LLSD v; checkRoundTrip(msg + " undefined", v); - + v = true; checkRoundTrip(msg + " true bool", v); - + v = false; checkRoundTrip(msg + " false bool", v); - + v = 1; checkRoundTrip(msg + " positive int", v); - + v = 0; checkRoundTrip(msg + " zero int", v); - + v = -1; checkRoundTrip(msg + " negative int", v); - + v = 1234.5f; checkRoundTrip(msg + " positive float", v); - + v = 0.0f; checkRoundTrip(msg + " zero float", v); - + v = -1234.5f; checkRoundTrip(msg + " negative float", v); - + // FIXME: need a NaN test - + v = LLUUID::null; checkRoundTrip(msg + " null uuid", v); - + LLUUID newUUID; newUUID.generate(); v = newUUID; checkRoundTrip(msg + " new uuid", v); - + v = ""; checkRoundTrip(msg + " empty string", v); - + v = "some string"; checkRoundTrip(msg + " non-empty string", v); - + v = "Second Life is a 3-D virtual world entirely built and owned by its residents. " "Since opening to the public in 2003, it has grown explosively and today is " @@ -372,7 +397,7 @@ namespace tut for (U32 block = 0x000000; block <= 0x10ffff; block += block_size) { std::ostringstream out; - + for (U32 c = block; c < block + block_size; ++c) { if (c <= 0x000001f @@ -386,7 +411,7 @@ namespace tut if (0x00fdd0 <= c && c <= 0x00fdef) { continue; } if ((c & 0x00fffe) == 0x00fffe) { continue; } // see Unicode standard, section 15.8 - + if (c <= 0x00007f) { out << (char)(c & 0x7f); @@ -410,55 +435,55 @@ namespace tut out << (char)(0x80 | ((c >> 0) & 0x3f)); } } - + v = out.str(); std::ostringstream blockmsg; blockmsg << msg << " unicode string block 0x" << std::hex << block; checkRoundTrip(blockmsg.str(), v); } - + LLDate epoch; v = epoch; checkRoundTrip(msg + " epoch date", v); - + LLDate aDay("2002-12-07T05:07:15.00Z"); v = aDay; checkRoundTrip(msg + " date", v); - + LLURI path("http://slurl.com/secondlife/Ambleside/57/104/26/"); v = path; checkRoundTrip(msg + " url", v); - + const char source[] = "it must be a blue moon again"; std::vector data; // note, includes terminating '\0' copy(&source[0], &source[sizeof(source)], back_inserter(data)); - + v = data; checkRoundTrip(msg + " binary", v); - + v = LLSD::emptyMap(); checkRoundTrip(msg + " empty map", v); - + v = LLSD::emptyMap(); v["name"] = "luke"; //v.insert("name", "luke"); v["age"] = 3; //v.insert("age", 3); checkRoundTrip(msg + " map", v); - + v.clear(); v["a"]["1"] = true; v["b"]["0"] = false; checkRoundTrip(msg + " nested maps", v); - + v = LLSD::emptyArray(); checkRoundTrip(msg + " empty array", v); - + v = LLSD::emptyArray(); v.append("ali"); v.append(28); checkRoundTrip(msg + " array", v); - + v.clear(); v[0][0] = true; v[1][0] = false; @@ -468,7 +493,7 @@ namespace tut fillmap(v, 10, 3); // 10^6 maps checkRoundTrip(msg + " many nested maps", v); } - + typedef tut::test_group TestLLSDSerializeGroup; typedef TestLLSDSerializeGroup::object TestLLSDSerializeObject; TestLLSDSerializeGroup gTestLLSDSerializeGroup("llsd serialization"); @@ -476,35 +501,78 @@ namespace tut template<> template<> void TestLLSDSerializeObject::test<1>() { - mFormatter = new LLSDNotationFormatter(false, "", LLSDFormatter::OPTIONS_PRETTY_BINARY); - mParser = new LLSDNotationParser(); + setFormatterParser(new LLSDNotationFormatter(false, "", LLSDFormatter::OPTIONS_PRETTY_BINARY), + new LLSDNotationParser()); doRoundTripTests("pretty binary notation serialization"); } template<> template<> void TestLLSDSerializeObject::test<2>() { - mFormatter = new LLSDNotationFormatter(false, "", LLSDFormatter::OPTIONS_NONE); - mParser = new LLSDNotationParser(); + setFormatterParser(new LLSDNotationFormatter(false, "", LLSDFormatter::OPTIONS_NONE), + new LLSDNotationParser()); doRoundTripTests("raw binary notation serialization"); } template<> template<> void TestLLSDSerializeObject::test<3>() { - mFormatter = new LLSDXMLFormatter(); - mParser = new LLSDXMLParser(); + setFormatterParser(new LLSDXMLFormatter(), new LLSDXMLParser()); doRoundTripTests("xml serialization"); } template<> template<> void TestLLSDSerializeObject::test<4>() { - mFormatter = new LLSDBinaryFormatter(); - mParser = new LLSDBinaryParser(); + setFormatterParser(new LLSDBinaryFormatter(), new LLSDBinaryParser()); doRoundTripTests("binary serialization"); } + template<> template<> + void TestLLSDSerializeObject::test<5>() + { + mFormatter = [](const LLSD& sd, std::ostream& str) + { + LLSDSerialize::serialize(sd, str, LLSDSerialize::LLSD_BINARY); + }; + setParser(LLSDSerialize::deserialize); + doRoundTripTests("serialize(LLSD_BINARY)"); + }; + + template<> template<> + void TestLLSDSerializeObject::test<6>() + { + mFormatter = [](const LLSD& sd, std::ostream& str) + { + LLSDSerialize::serialize(sd, str, LLSDSerialize::LLSD_XML); + }; + setParser(LLSDSerialize::deserialize); + doRoundTripTests("serialize(LLSD_XML)"); + }; + + template<> template<> + void TestLLSDSerializeObject::test<7>() + { + mFormatter = [](const LLSD& sd, std::ostream& str) + { + LLSDSerialize::serialize(sd, str, LLSDSerialize::LLSD_NOTATION); + }; + setParser(LLSDSerialize::deserialize); + // In this test, serialize(LLSD_NOTATION) emits a header recognized by + // deserialize(). + doRoundTripTests("serialize(LLSD_NOTATION)"); + }; + + template<> template<> + void TestLLSDSerializeObject::test<8>() + { + setFormatterParser(new LLSDNotationFormatter(false, "", LLSDFormatter::OPTIONS_NONE), + new LLSDNotationParser()); + setParser(LLSDSerialize::deserialize); + // This is an interesting test because LLSDNotationFormatter does not + // emit an llsd/notation header. + doRoundTripTests("LLSDNotationFormatter -> deserialize"); + }; /** * @class TestLLSDParsing @@ -555,7 +623,7 @@ namespace tut public: TestLLSDXMLParsing() {} }; - + typedef tut::test_group TestLLSDXMLParsingGroup; typedef TestLLSDXMLParsingGroup::object TestLLSDXMLParsingObject; TestLLSDXMLParsingGroup gTestLLSDXMLParsingGroup("llsd XML parsing"); @@ -586,8 +654,8 @@ namespace tut LLSD(), LLSDParser::PARSE_FAILURE); } - - + + template<> template<> void TestLLSDXMLParsingObject::test<2>() { @@ -596,7 +664,7 @@ namespace tut v["amy"] = 23; v["bob"] = LLSD(); v["cam"] = 1.23; - + ensureParse( "unknown data type", "" @@ -607,16 +675,16 @@ namespace tut v, v.size() + 1); } - + template<> template<> void TestLLSDXMLParsingObject::test<3>() { // test handling of nested bad data - + LLSD v; v["amy"] = 23; v["cam"] = 1.23; - + ensureParse( "map with html", "" @@ -626,7 +694,7 @@ namespace tut "", v, v.size() + 1); - + v.clear(); v["amy"] = 23; v["cam"] = 1.23; @@ -639,7 +707,7 @@ namespace tut "", v, v.size() + 1); - + v.clear(); v["amy"] = 23; v["bob"] = LLSD::emptyMap(); @@ -661,7 +729,7 @@ namespace tut v[0] = 23; v[1] = LLSD(); v[2] = 1.23; - + ensureParse( "array value of html", "" @@ -671,7 +739,7 @@ namespace tut "", v, v.size() + 1); - + v.clear(); v[0] = 23; v[1] = LLSD::emptyMap(); @@ -1225,7 +1293,7 @@ namespace tut vec[0] = 'a'; vec[1] = 'b'; vec[2] = 'c'; vec[3] = '3'; vec[4] = '2'; vec[5] = '1'; LLSD value = vec; - + vec.resize(11); vec[0] = 'b'; // for binary vec[5] = 'a'; vec[6] = 'b'; vec[7] = 'c'; @@ -1909,6 +1977,6 @@ namespace tut "This string\n" "has several\n" "lines."); - + } } -- cgit v1.2.3 From 42e0787446d35bf967ff088148f8ad5f902e929b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 23 Nov 2022 17:15:15 -0500 Subject: SL-18330: LLSDSerialize::deserialize() w/o hdr uses XML or notation Absent a header from LLSDSerialize::serialize(), make deserialize() distinguish between XML or notation by recognizing an initial '<'. --- indra/llcommon/llsdserialize.cpp | 87 ++++++++++++++--------------- indra/llcommon/tests/llsdserialize_test.cpp | 28 ++++++++++ 2 files changed, 70 insertions(+), 45 deletions(-) diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index 9ff4676b95..dc8f8f5737 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -120,9 +120,7 @@ void LLSDSerialize::serialize(const LLSD& sd, std::ostream& str, ELLSD_Serialize bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) { char hdr_buf[MAX_HDR_LEN + 1] = ""; /* Flawfinder: ignore */ - bool legacy_no_header = false; bool fail_if_not_legacy = false; - std::string header; /* * Get the first line before anything. @@ -131,6 +129,7 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) // want to back up and retry. str.get(hdr_buf, sizeof(hdr_buf), '\n'); auto inbuf = str.gcount(); + std::string header{ hdr_buf, inbuf }; if (str.fail()) { str.clear(); @@ -138,38 +137,36 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) } if (!strncasecmp(LEGACY_NON_HEADER, hdr_buf, strlen(LEGACY_NON_HEADER))) /* Flawfinder: ignore */ + { // Create a LLSD XML parser, and parse the first chunk read above. + LLSDXMLParser x; + x.parsePart(hdr_buf, inbuf); // Parse the first part that was already read + auto parsed = x.parse(str, sd, max_bytes - inbuf); // Parse the rest of it + // Formally we should probably check (parsed != PARSE_FAILURE && + // parsed > 0), but since PARSE_FAILURE is -1, this suffices. + return (parsed > 0); + } + + if (fail_if_not_legacy) { - legacy_no_header = true; + LL_WARNS() << "deserialize LLSD parse failure" << LL_ENDL; + return false; } - else + + /* + * Remove the newline chars + */ + auto lastchar = header.find_last_not_of("\r\n"); + if (lastchar != std::string::npos) { - if (fail_if_not_legacy) - { - LL_WARNS() << "deserialize LLSD parse failure" << LL_ENDL; - return false; - } - /* - * Remove the newline chars - */ - for (size_t i = 0; i < sizeof(hdr_buf); i++) - { - if (hdr_buf[i] == 0 || hdr_buf[i] == '\r' || - hdr_buf[i] == '\n') - { - hdr_buf[i] = 0; - break; - } - } - header = hdr_buf; + header.erase(lastchar+1); + } - std::string::size_type start = std::string::npos; - std::string::size_type end = std::string::npos; - start = header.find_first_not_of(" header syntax + auto start = header.find_first_not_of(" 0), but since PARSE_FAILURE is -1, this suffices. - return (parsed > 0); - } - if (header == LLSD_BINARY_HEADER) { return (parse_using(str, sd, max_bytes) > 0); @@ -200,15 +187,27 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) { return (parse_using(str, sd, max_bytes) > 0); } - else + else // no header we recognize { - LL_DEBUGS() << "deserialize request with no header, assuming notation" << LL_ENDL; + LLPointer p; + if (inbuf && hdr_buf[0] == '<') + { + // looks like XML + LL_DEBUGS() << "deserialize request with no header, assuming XML" << LL_ENDL; + p = new LLSDXMLParser; + } + else + { + // assume notation + LL_DEBUGS() << "deserialize request with no header, assuming notation" << LL_ENDL; + p = new LLSDNotationParser; + } // Since we've already read 'inbuf' bytes into 'hdr_buf', prepend that // data to whatever remains in 'str'. LLMemoryStreamBuf already(reinterpret_cast(hdr_buf), inbuf); cat_streambuf prebuff(&already, str.rdbuf()); std::istream prepend(&prebuff); - return (parse_using(prepend, sd, max_bytes) > 0); + return (p->parse(prepend, sd, max_bytes) > 0); } } @@ -2411,5 +2410,3 @@ U8* unzip_llsdNavMesh( bool& valid, unsigned int& outsize, std::istream& is, S32 return result; } - - diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 0334699c7f..bbbc32214b 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -574,6 +574,34 @@ namespace tut doRoundTripTests("LLSDNotationFormatter -> deserialize"); }; + template<> template<> + void TestLLSDSerializeObject::test<9>() + { + setFormatterParser(new LLSDXMLFormatter(false, "", LLSDFormatter::OPTIONS_NONE), + new LLSDXMLParser()); + setParser(LLSDSerialize::deserialize); + // This is an interesting test because LLSDXMLFormatter does not + // emit an LLSD/XML header. + doRoundTripTests("LLSDXMLFormatter -> deserialize"); + }; + +/*==========================================================================*| + // We do not expect this test to succeed. Without a header, neither + // notation LLSD nor binary LLSD reliably start with a distinct character, + // the way XML LLSD starts with '<'. By convention, we default to notation + // rather than binary. + template<> template<> + void TestLLSDSerializeObject::test<10>() + { + setFormatterParser(new LLSDBinaryFormatter(false, "", LLSDFormatter::OPTIONS_NONE), + new LLSDBinaryParser()); + setParser(LLSDSerialize::deserialize); + // This is an interesting test because LLSDBinaryFormatter does not + // emit an LLSD/Binary header. + doRoundTripTests("LLSDBinaryFormatter -> deserialize"); + }; +|*==========================================================================*/ + /** * @class TestLLSDParsing * @brief Base class for of a parse tester. -- cgit v1.2.3 From b180e4de23cb54ec385e2d999fc5fdd4ea804ba4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 29 Nov 2022 14:03:02 -0500 Subject: SL-18330: WIP: Send LLLeap to child as binary LLSD; generic parser. Since parsing binary LLSD is faster than parsing notation LLSD, send data from the viewer to the LEAP plugin child process's stdin in binary instead of notation. Similarly, instead of parsing the child process's stdout using specifically a notation parser, use the generic LLSDSerialize::deserialize() LLSD parser. Add more LLSDSerialize Python compatibility tests. --- indra/llcommon/llleap.cpp | 28 +-- indra/llcommon/tests/llsdserialize_test.cpp | 286 +++++++++++++++++++--------- 2 files changed, 211 insertions(+), 103 deletions(-) diff --git a/indra/llcommon/llleap.cpp b/indra/llcommon/llleap.cpp index 2704f8b6de..f71eaf92c4 100644 --- a/indra/llcommon/llleap.cpp +++ b/indra/llcommon/llleap.cpp @@ -204,30 +204,35 @@ public: LLSD packet(LLSDMap("pump", pump)("data", data)); std::ostringstream buffer; - buffer << LLSDNotationStreamer(packet); + // SL-18330: for large data blocks, it's much faster to parse binary + // LLSD than notation LLSD. Use serialize(LLSD_BINARY) rather than + // directly calling LLSDBinaryFormatter because, unlike the latter, + // serialize() prepends the relevant header, needed by a general- + // purpose LLSD parser to distinguish binary from notation. + LLSDSerialize::serialize(packet, buffer, LLSDSerialize::LLSD_BINARY, + LLSDFormatter::OPTIONS_NONE); /*==========================================================================*| // DEBUGGING ONLY: don't copy str() if we can avoid it. std::string strdata(buffer.str()); if (std::size_t(buffer.tellp()) != strdata.length()) { - LL_ERRS("LLLeap") << "tellp() -> " << buffer.tellp() << " != " + LL_ERRS("LLLeap") << "tellp() -> " << static_cast(buffer.tellp()) << " != " << "str().length() -> " << strdata.length() << LL_ENDL; } // DEBUGGING ONLY: reading back is terribly inefficient. std::istringstream readback(strdata); LLSD echo; - LLPointer parser(new LLSDNotationParser()); - S32 parse_status(parser->parse(readback, echo, strdata.length())); - if (parse_status == LLSDParser::PARSE_FAILURE) + bool parse_status(LLSDSerialize::deserialize(echo, readback, strdata.length())); + if (! parse_status) { - LL_ERRS("LLLeap") << "LLSDNotationParser() cannot parse output of " - << "LLSDNotationStreamer()" << LL_ENDL; + LL_ERRS("LLLeap") << "LLSDSerialize::deserialize() cannot parse output of " + << "LLSDSerialize::serialize(LLSD_BINARY)" << LL_ENDL; } if (! llsd_equals(echo, packet)) { - LL_ERRS("LLLeap") << "LLSDNotationParser() produced different LLSD " - << "than passed to LLSDNotationStreamer()" << LL_ENDL; + LL_ERRS("LLLeap") << "LLSDSerialize::deserialize() returned different LLSD " + << "than passed to LLSDSerialize::serialize()" << LL_ENDL; } |*==========================================================================*/ @@ -312,9 +317,8 @@ public: LL_DEBUGS("LLLeap") << "needed " << mExpect << " bytes, got " << childout.size() << ", parsing LLSD" << LL_ENDL; LLSD data; - LLPointer parser(new LLSDNotationParser()); - S32 parse_status(parser->parse(childout.get_istream(), data, mExpect)); - if (parse_status == LLSDParser::PARSE_FAILURE) + bool parse_status(LLSDSerialize::deserialize(data, childout.get_istream(), mExpect)); + if (! parse_status) { bad_protocol("unparseable LLSD data"); } diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index bbbc32214b..601f2c580d 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -46,7 +46,6 @@ typedef U32 uint32_t; #include "boost/range.hpp" #include "boost/foreach.hpp" -#include "boost/function.hpp" #include "boost/bind.hpp" #include "boost/phoenix/bind/bind_function.hpp" #include "boost/phoenix/core/argument.hpp" @@ -62,6 +61,9 @@ using namespace boost::phoenix; #include "stringize.h" #include +typedef std::function FormatterFunction; +typedef std::function ParserFunction; + std::vector string_to_vector(const std::string& str) { return std::vector(str.begin(), str.end()); @@ -277,8 +279,8 @@ namespace tut }; } - std::function mFormatter; - std::function mParser; + FormatterFunction mFormatter; + ParserFunction mParser; }; TestLLSDSerializeData::TestLLSDSerializeData() @@ -1790,85 +1792,83 @@ namespace tut ensureBinaryAndXML("map", test); } - struct TestPythonCompatible + // helper for TestPythonCompatible + static std::string import_llsd("import os.path\n" + "import sys\n" + "try:\n" + // new freestanding llsd package + " import llsd\n" + "except ImportError:\n" + // older llbase.llsd module + " from llbase import llsd\n"); + + // helper for TestPythonCompatible + template + void python(const std::string& desc, const CONTENT& script, int expect=0) { - TestPythonCompatible(): - // Note the peculiar insertion of __FILE__ into this string. Since - // this script is being written into a platform-dependent temp - // directory, we can't locate indra/lib/python relative to - // Python's __file__. Use __FILE__ instead, navigating relative - // to this C++ source file. Use Python raw-string syntax so - // Windows pathname backslashes won't mislead Python's string - // scanner. - import_llsd("import os.path\n" - "import sys\n" - "from llbase import llsd\n") - {} - ~TestPythonCompatible() {} + auto PYTHON(LLStringUtil::getenv("PYTHON")); + ensure("Set $PYTHON to the Python interpreter", !PYTHON.empty()); - std::string import_llsd; + NamedTempFile scriptfile("py", script); - template - void python(const std::string& desc, const CONTENT& script, int expect=0) +#if LL_WINDOWS + std::string q("\""); + std::string qPYTHON(q + PYTHON + q); + std::string qscript(q + scriptfile.getName() + q); + int rc = _spawnl(_P_WAIT, PYTHON.c_str(), qPYTHON.c_str(), qscript.c_str(), NULL); + if (rc == -1) { - auto PYTHON(LLStringUtil::getenv("PYTHON")); - ensure("Set $PYTHON to the Python interpreter", !PYTHON.empty()); - - NamedTempFile scriptfile("py", script); + char buffer[256]; + strerror_s(buffer, errno); // C++ can infer the buffer size! :-O + ensure(STRINGIZE("Couldn't run Python " << desc << "script: " << buffer), false); + } + else + { + ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), rc, expect); + } -#if LL_WINDOWS - std::string q("\""); - std::string qPYTHON(q + PYTHON + q); - std::string qscript(q + scriptfile.getName() + q); - int rc = _spawnl(_P_WAIT, PYTHON.c_str(), qPYTHON.c_str(), qscript.c_str(), NULL); - if (rc == -1) - { - char buffer[256]; - strerror_s(buffer, errno); // C++ can infer the buffer size! :-O - ensure(STRINGIZE("Couldn't run Python " << desc << "script: " << buffer), false); - } - else +#else // LL_DARWIN, LL_LINUX + LLProcess::Params params; + params.executable = PYTHON; + params.args.add(scriptfile.getName()); + LLProcessPtr py(LLProcess::create(params)); + ensure(STRINGIZE("Couldn't launch " << desc << " script"), bool(py)); + // Implementing timeout would mean messing with alarm() and + // catching SIGALRM... later maybe... + int status(0); + if (waitpid(py->getProcessID(), &status, 0) == -1) + { + int waitpid_errno(errno); + ensure_equals(STRINGIZE("Couldn't retrieve rc from " << desc << " script: " + "waitpid() errno " << waitpid_errno), + waitpid_errno, ECHILD); + } + else + { + if (WIFEXITED(status)) { - ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), rc, expect); + int rc(WEXITSTATUS(status)); + ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), + rc, expect); } - -#else // LL_DARWIN, LL_LINUX - LLProcess::Params params; - params.executable = PYTHON; - params.args.add(scriptfile.getName()); - LLProcessPtr py(LLProcess::create(params)); - ensure(STRINGIZE("Couldn't launch " << desc << " script"), bool(py)); - // Implementing timeout would mean messing with alarm() and - // catching SIGALRM... later maybe... - int status(0); - if (waitpid(py->getProcessID(), &status, 0) == -1) + else if (WIFSIGNALED(status)) { - int waitpid_errno(errno); - ensure_equals(STRINGIZE("Couldn't retrieve rc from " << desc << " script: " - "waitpid() errno " << waitpid_errno), - waitpid_errno, ECHILD); + ensure(STRINGIZE(desc << " script terminated by signal " << WTERMSIG(status)), + false); } else { - if (WIFEXITED(status)) - { - int rc(WEXITSTATUS(status)); - ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), - rc, expect); - } - else if (WIFSIGNALED(status)) - { - ensure(STRINGIZE(desc << " script terminated by signal " << WTERMSIG(status)), - false); - } - else - { - ensure(STRINGIZE(desc << " script produced impossible status " << status), - false); - } + ensure(STRINGIZE(desc << " script produced impossible status " << status), + false); } -#endif } +#endif + } + + struct TestPythonCompatible + { + TestPythonCompatible() {} + ~TestPythonCompatible() {} }; typedef tut::test_group TestPythonCompatibleGroup; @@ -1894,12 +1894,13 @@ namespace tut "print('Running on', sys.platform)\n"); } - // helper for test<3> - static void writeLLSDArray(std::ostream& out, const LLSD& array) + // helper for test<3> - test<7> + static void writeLLSDArray(const FormatterFunction& serialize, + std::ostream& out, const LLSD& array) { BOOST_FOREACH(LLSD item, llsd::inArray(array)) { - LLSDSerialize::toNotation(item, out); + serialize(item, out); // It's important to separate with newlines because Python's llsd // module doesn't support parsing from a file stream, only from a // string, so we have to know how much of the file to read into a @@ -1908,11 +1909,10 @@ namespace tut } } - template<> template<> - void TestPythonCompatibleObject::test<3>() + // helper for test<3> - test<7> + static void toPythonUsing(const std::string& desc, + const FormatterFunction& serialize) { - set_test_name("verify sequence to Python"); - LLSD cdata(LLSDArray(17)(3.14) ("This string\n" "has several\n" @@ -1941,9 +1941,11 @@ namespace tut // takes a callable. To this callable it passes the // std::ostream with which it's writing the // NamedTempFile. - boost::bind(writeLLSDArray, _1, cdata)); + [serialize, cdata] + (std::ostream& out) + { writeLLSDArray(serialize, out, cdata); }); - python("read C++ notation", + python("read C++ " + desc, placeholders::arg1 << import_llsd << "def parse_each(iterable):\n" @@ -1954,17 +1956,70 @@ namespace tut "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n"); } + template<> template<> + void TestPythonCompatibleObject::test<3>() + { + set_test_name("to Python using LLSDSerialize::serialize(LLSD_XML)"); + toPythonUsing("LLSD_XML", + [](const LLSD& sd, std::ostream& out) + { LLSDSerialize::serialize(sd, out, LLSDSerialize::LLSD_XML); }); + } + template<> template<> void TestPythonCompatibleObject::test<4>() { - set_test_name("verify sequence from Python"); + set_test_name("to Python using LLSDSerialize::serialize(LLSD_NOTATION)"); + toPythonUsing("LLSD_NOTATION", + [](const LLSD& sd, std::ostream& out) + { LLSDSerialize::serialize(sd, out, LLSDSerialize::LLSD_NOTATION); }); + } + + template<> template<> + void TestPythonCompatibleObject::test<5>() + { + set_test_name("to Python using LLSDSerialize::serialize(LLSD_BINARY)"); + toPythonUsing("LLSD_BINARY", + [](const LLSD& sd, std::ostream& out) + { LLSDSerialize::serialize(sd, out, LLSDSerialize::LLSD_BINARY); }); + } + + template<> template<> + void TestPythonCompatibleObject::test<6>() + { + set_test_name("to Python using LLSDSerialize::toXML()"); + toPythonUsing("toXML()", LLSDSerialize::toXML); + } + + template<> template<> + void TestPythonCompatibleObject::test<7>() + { + set_test_name("to Python using LLSDSerialize::toNotation()"); + toPythonUsing("toNotation()", LLSDSerialize::toNotation); + } + +/*==========================================================================*| + template<> template<> + void TestPythonCompatibleObject::test<8>() + { + set_test_name("to Python using LLSDSerialize::toBinary()"); + // We don't expect this to work because, without a header, + // llsd.parse() will assume notation rather than binary. + toPythonUsing("toBinary()", LLSDSerialize::toBinary); + } +|*==========================================================================*/ + // helper for test<8> - test<12> + void fromPythonUsing(const std::string& pyformatter, + const ParserFunction& parse= + [](std::istream& istr, LLSD& data, size_t max_bytes) + { return LLSDSerialize::deserialize(data, istr, max_bytes); }) + { // Create an empty data file. This is just a placeholder for our // script to write into. Create it to establish a unique name that // we know. NamedTempFile file("llsd", ""); - python("write Python notation", + python("Python " + pyformatter, placeholders::arg1 << import_llsd << "DATA = [\n" @@ -1977,9 +2032,9 @@ namespace tut "]\n" // Don't forget raw-string syntax for Windows pathnames. // N.B. Using 'print' implicitly adds newlines. - "with open(r'" << file.getName() << "', 'w') as f:\n" + "with open(r'" << file.getName() << "', 'wb') as f:\n" " for item in DATA:\n" - " print(llsd.format_notation(item).decode(), file=f)\n"); + " print(llsd." << pyformatter << "(item), file=f)\n"); std::ifstream inf(file.getName().c_str()); LLSD item; @@ -1989,22 +2044,71 @@ namespace tut // want to ensure that notation-separated-by-newlines works in both // directions -- since in practice, a given file might be read by // either language. - ensure_equals("Failed to read LLSD::Integer from Python", - LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED), - 1); + ensure("Failed to read LLSD::Integer from Python", + parse(inf, item, LLSDSerialize::SIZE_UNLIMITED)); ensure_equals(item.asInteger(), 17); - ensure_equals("Failed to read LLSD::Real from Python", - LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED), - 1); + ensure("Failed to read LLSD::Real from Python", + parse(inf, item, LLSDSerialize::SIZE_UNLIMITED)); ensure_approximately_equals("Bad LLSD::Real value from Python", item.asReal(), 3.14, 7); // 7 bits ~= 0.01 - ensure_equals("Failed to read LLSD::String from Python", - LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED), - 1); + ensure("Failed to read LLSD::String from Python", + parse(inf, item, LLSDSerialize::SIZE_UNLIMITED)); ensure_equals(item.asString(), "This string\n" "has several\n" "lines."); + } + template<> template<> + void TestPythonCompatibleObject::test<8>() + { + set_test_name("from Python XML using LLSDSerialize::deserialize()"); + fromPythonUsing("format_xml"); } + + template<> template<> + void TestPythonCompatibleObject::test<9>() + { + set_test_name("from Python notation using LLSDSerialize::deserialize()"); + fromPythonUsing("format_notation"); + } + + template<> template<> + void TestPythonCompatibleObject::test<10>() + { + set_test_name("from Python binary using LLSDSerialize::deserialize()"); + fromPythonUsing("format_binary"); + } + + template<> template<> + void TestPythonCompatibleObject::test<11>() + { + set_test_name("from Python XML using fromXML()"); + // fromXML()'s optional 3rd param isn't max_bytes, it's emit_errors + fromPythonUsing("format_xml", + [](std::istream& istr, LLSD& data, size_t) + { return LLSDSerialize::fromXML(data, istr) > 0; }); + } + + template<> template<> + void TestPythonCompatibleObject::test<12>() + { + set_test_name("from Python notation using fromNotation()"); + fromPythonUsing("format_notation", + [](std::istream& istr, LLSD& data, size_t max_bytes) + { return LLSDSerialize::fromNotation(data, istr, max_bytes) > 0; }); + } + +/*==========================================================================*| + template<> template<> + void TestPythonCompatibleObject::test<13>() + { + set_test_name("from Python binary using fromBinary()"); + // We don't expect this to work because format_binary() emits a + // header, but fromBinary() won't recognize a header. + fromPythonUsing("format_binary", + [](std::istream& istr, LLSD& data, size_t max_bytes) + { return LLSDSerialize::fromBinary(data, istr, max_bytes) > 0; }); + } +|*==========================================================================*/ } -- cgit v1.2.3 From 2f557cd7faceec36acace1eee4ee38904ff06130 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Dec 2022 15:17:56 -0500 Subject: SL-18330: Fix new C++ <-> Python LLSD compatibility tests. When sending multiple LEAP packets in the same file (for testing convenience), use a length prefix instead of delimiting with '\n'. Now that we allow a serialization format that includes an LLSD format header (e.g. ""), '\n' is part of the packet content. But in fact, testing binary LLSD means we can't pick any delimiter guaranteed not to appear in the packet content. Using a length prefix also lets us pass a specific max_bytes to the subject C++ LLSD parser. Make llleap_test.cpp use new freestanding Python llsd package when available. Update Python-side LEAP protocol code to work directly with encoded bytes stream, avoiding bytes<->str encoding and decoding, which breaks binary LLSD. Make LLSDSerialize::deserialize() recognize LLSD format header case- insensitively. Python emits and checks for "llsd/binary", while LLSDSerialize emits and checks for "LLSD/Binary". Once any of the headers is recognized, pass corrected max_bytes to the specific parser. Make deserialize() more careful about the no-header case: preserve '\n' in content. Introduce debugging code (disabled) because it's a little tricky to recreate. Revert LLLeap child process stdout parser from LLSDSerialize::deserialize() to the specific LLSDNotationParser(), as at present: the generic parser fails one of LLLeap's integration tests for reasons that remain mysterious. --- indra/llcommon/llleap.cpp | 9 +++ indra/llcommon/llsdserialize.cpp | 49 +++++++++--- indra/llcommon/tests/llleap_test.cpp | 32 ++++---- indra/llcommon/tests/llsdserialize_test.cpp | 118 +++++++++++++++++++--------- 4 files changed, 147 insertions(+), 61 deletions(-) diff --git a/indra/llcommon/llleap.cpp b/indra/llcommon/llleap.cpp index f71eaf92c4..e8ccc4300d 100644 --- a/indra/llcommon/llleap.cpp +++ b/indra/llcommon/llleap.cpp @@ -317,8 +317,17 @@ public: LL_DEBUGS("LLLeap") << "needed " << mExpect << " bytes, got " << childout.size() << ", parsing LLSD" << LL_ENDL; LLSD data; +#if 1 + // specifically require notation LLSD from child + LLPointer parser(new LLSDNotationParser()); + S32 parse_status(parser->parse(childout.get_istream(), data, mExpect)); + if (parse_status == LLSDParser::PARSE_FAILURE) +#else + // SL-18330: accept any valid LLSD serialization format from child + // Unfortunately this runs into trouble we have not yet debugged. bool parse_status(LLSDSerialize::deserialize(data, childout.get_istream(), mExpect)); if (! parse_status) +#endif { bad_protocol("unparseable LLSD data"); } diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index dc8f8f5737..97bf51eeaa 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -123,12 +123,26 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) bool fail_if_not_legacy = false; /* - * Get the first line before anything. + * Get the first line before anything. Don't read more than max_bytes: + * this get() overload reads no more than (count-1) bytes into the + * specified buffer. In the usual case when max_bytes exceeds + * sizeof(hdr_buf), get() will read no more than sizeof(hdr_buf)-2. */ - // Remember str's original input position: if there's no header, we'll - // want to back up and retry. - str.get(hdr_buf, sizeof(hdr_buf), '\n'); + str.get(hdr_buf, std::min(max_bytes+1, sizeof(hdr_buf)-1), '\n'); auto inbuf = str.gcount(); + // https://en.cppreference.com/w/cpp/io/basic_istream/get + // When the get() above sees the specified delimiter '\n', it stops there + // without pulling it from the stream. If it turns out that the stream + // does NOT contain a header, and the content includes meaningful '\n', + // it's important to pull that into hdr_buf too. + if (inbuf < max_bytes && str.get(hdr_buf[inbuf])) + { + // got the delimiting '\n' + ++inbuf; + // None of the following requires that hdr_buf contain a final '\0' + // byte. We could store one if needed, since even the incremented + // inbuf won't exceed sizeof(hdr_buf)-1, but there's no need. + } std::string header{ hdr_buf, inbuf }; if (str.fail()) { @@ -175,17 +189,17 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) /* * Create the parser as appropriate */ - if (header == LLSD_BINARY_HEADER) + if (0 == LLStringUtil::compareInsensitive(header, LLSD_BINARY_HEADER)) { - return (parse_using(str, sd, max_bytes) > 0); + return (parse_using(str, sd, max_bytes-inbuf) > 0); } - else if (header == LLSD_XML_HEADER) + else if (0 == LLStringUtil::compareInsensitive(header, LLSD_XML_HEADER)) { - return (parse_using(str, sd, max_bytes) > 0); + return (parse_using(str, sd, max_bytes-inbuf) > 0); } - else if (header == LLSD_NOTATION_HEADER) + else if (0 == LLStringUtil::compareInsensitive(header, LLSD_NOTATION_HEADER)) { - return (parse_using(str, sd, max_bytes) > 0); + return (parse_using(str, sd, max_bytes-inbuf) > 0); } else // no header we recognize { @@ -207,7 +221,22 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) LLMemoryStreamBuf already(reinterpret_cast(hdr_buf), inbuf); cat_streambuf prebuff(&already, str.rdbuf()); std::istream prepend(&prebuff); +#if 1 return (p->parse(prepend, sd, max_bytes) > 0); +#else + // debugging the reconstituted 'prepend' stream + // allocate a buffer that we hope is big enough for the whole thing + std::vector wholemsg((max_bytes == size_t(SIZE_UNLIMITED))? 1024 : max_bytes); + prepend.read(wholemsg.data(), std::min(max_bytes, wholemsg.size())); + LLMemoryStream replay(reinterpret_cast(wholemsg.data()), prepend.gcount()); + auto success{ p->parse(replay, sd, prepend.gcount()) > 0 }; + { + LL_DEBUGS() << (success? "parsed: $$" : "failed: '") + << std::string(wholemsg.data(), llmin(prepend.gcount(), 100)) << "$$" + << LL_ENDL; + } + return success; +#endif } } diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 9754353ab0..6c799b7993 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -110,12 +110,12 @@ namespace tut "import os\n" "import sys\n" "\n" - // Don't forget that this Python script is written to some - // temp directory somewhere! Its __file__ is useless in - // finding indra/lib/python. Use our __FILE__, with - // raw-string syntax to deal with Windows pathnames. - "mydir = os.path.dirname(r'" << __FILE__ << "')\n" - "from llbase import llsd\n" + "try:\n" + // new freestanding llsd package + " import llsd\n" + "except ImportError:\n" + // older llbase.llsd module + " from llbase import llsd\n" "\n" "class ProtocolError(Exception):\n" " def __init__(self, msg, data):\n" @@ -126,26 +126,26 @@ namespace tut " pass\n" "\n" "def get():\n" - " hdr = ''\n" - " while ':' not in hdr and len(hdr) < 20:\n" - " hdr += sys.stdin.read(1)\n" + " hdr = []\n" + " while b':' not in hdr and len(hdr) < 20:\n" + " hdr.append(sys.stdin.buffer.read(1))\n" " if not hdr:\n" " sys.exit(0)\n" - " if not hdr.endswith(':'):\n" + " if not hdr[-1] == b':':\n" " raise ProtocolError('Expected len:data, got %r' % hdr, hdr)\n" " try:\n" - " length = int(hdr[:-1])\n" + " length = int(b''.join(hdr[:-1]))\n" " except ValueError:\n" " raise ProtocolError('Non-numeric len %r' % hdr[:-1], hdr[:-1])\n" " parts = []\n" " received = 0\n" " while received < length:\n" - " parts.append(sys.stdin.read(length - received))\n" + " parts.append(sys.stdin.buffer.read(length - received))\n" " received += len(parts[-1])\n" - " data = ''.join(parts)\n" + " data = b''.join(parts)\n" " assert len(data) == length\n" " try:\n" - " return llsd.parse(data.encode())\n" + " return llsd.parse(data)\n" // Seems the old indra.base.llsd module didn't properly // convert IndexError (from running off end of string) to // LLSDParseError. @@ -185,11 +185,11 @@ namespace tut " return _reply\n" "\n" "def put(req):\n" - " sys.stdout.write(':'.join((str(len(req)), req)))\n" + " sys.stdout.buffer.write(b'%d:%b' % (len(req), req))\n" " sys.stdout.flush()\n" "\n" "def send(pump, data):\n" - " put(llsd.format_notation(dict(pump=pump, data=data)).decode())\n" + " put(llsd.format_notation(dict(pump=pump, data=data)))\n" "\n" "def request(pump, data):\n" " # we expect 'data' is a dict\n" diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 601f2c580d..39b93cf335 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -51,10 +51,11 @@ typedef U32 uint32_t; #include "boost/phoenix/core/argument.hpp" using namespace boost::phoenix; -#include "../llsd.h" -#include "../llsdserialize.h" +#include "llsd.h" +#include "llsdserialize.h" #include "llsdutil.h" -#include "../llformat.h" +#include "llformat.h" +#include "llmemorystream.h" #include "../test/lltut.h" #include "../test/namedtempfile.h" @@ -1898,14 +1899,22 @@ namespace tut static void writeLLSDArray(const FormatterFunction& serialize, std::ostream& out, const LLSD& array) { - BOOST_FOREACH(LLSD item, llsd::inArray(array)) + for (const LLSD& item : llsd::inArray(array)) { - serialize(item, out); - // It's important to separate with newlines because Python's llsd - // module doesn't support parsing from a file stream, only from a - // string, so we have to know how much of the file to read into a - // string. - out << '\n'; + // It's important to delimit the entries in this file somehow + // because, although Python's llsd.parse() can accept a file + // stream, the XML parser expects EOF after a single outer element + // -- it doesn't just stop. So we must extract a sequence of bytes + // strings from the file. But since one of the serialization + // formats we want to test is binary, we can't pick any single + // byte value as a delimiter! Use a binary integer length prefix + // instead. + std::ostringstream buffer; + serialize(item, buffer); + auto buffstr{ buffer.str() }; + int bufflen{ static_cast(buffstr.length()) }; + out.write(reinterpret_cast(&bufflen), sizeof(bufflen)); + out.write(buffstr.c_str(), buffstr.length()); } } @@ -1932,7 +1941,7 @@ namespace tut " except StopIteration:\n" " pass\n" " else:\n" - " assert False, 'Too many data items'\n"; + " raise AssertionError('Too many data items')\n"; // Create an llsdXXXXXX file containing 'data' serialized to // notation. @@ -1948,10 +1957,23 @@ namespace tut python("read C++ " + desc, placeholders::arg1 << import_llsd << - "def parse_each(iterable):\n" - " for item in iterable:\n" - " yield llsd.parse(item)\n" << - pydata << + "from functools import partial\n" + "import struct\n" + "lenformat = struct.Struct('i')\n" + "def parse_each(inf):\n" + " for rawlen in iter(partial(inf.read, lenformat.size), b''):\n" + " len = lenformat.unpack(rawlen)[0]\n" + // Since llsd.parse() has no max_bytes argument, instead of + // passing the input stream directly to parse(), read the item + // into a distinct bytes object and parse that. + " data = inf.read(len)\n" + " try:\n" + " yield llsd.parse(data)\n" + " except llsd.LLSDParseError as err:\n" + " print(f'*** {err}')\n" + " print(f'Bad content:\\n{data!r}')\n" + " raise\n" + << pydata << // Don't forget raw-string syntax for Windows pathnames. "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n"); } @@ -2008,6 +2030,26 @@ namespace tut } |*==========================================================================*/ + // helper for test<8> - test<12> + bool itemFromStream(std::istream& istr, LLSD& item, const ParserFunction& parse) + { + // reset the output value for debugging clarity + item.clear(); + // We use an int length prefix as a foolproof delimiter even for + // binary serialized streams. + int length{ 0 }; + istr.read(reinterpret_cast(&length), sizeof(length)); +// return parse(istr, item, length); + // Sadly, as of 2022-12-01 it seems we can't really trust our LLSD + // parsers to honor max_bytes: this test works better when we read + // each item into its own distinct LLMemoryStream, instead of passing + // the original istr with a max_bytes constraint. + std::vector buffer(length); + istr.read(reinterpret_cast(buffer.data()), length); + LLMemoryStream stream(buffer.data(), length); + return parse(stream, item, length); + } + // helper for test<8> - test<12> void fromPythonUsing(const std::string& pyformatter, const ParserFunction& parse= @@ -2022,6 +2064,8 @@ namespace tut python("Python " + pyformatter, placeholders::arg1 << import_llsd << + "import struct\n" + "lenformat = struct.Struct('i')\n" "DATA = [\n" " 17,\n" " 3.14,\n" @@ -2034,29 +2078,33 @@ namespace tut // N.B. Using 'print' implicitly adds newlines. "with open(r'" << file.getName() << "', 'wb') as f:\n" " for item in DATA:\n" - " print(llsd." << pyformatter << "(item), file=f)\n"); + " serialized = llsd." << pyformatter << "(item)\n" + " f.write(lenformat.pack(len(serialized)))\n" + " f.write(serialized)\n"); std::ifstream inf(file.getName().c_str()); LLSD item; - // Notice that we're not doing anything special to parse out the - // newlines: LLSDSerialize::fromNotation ignores them. While it would - // seem they're not strictly necessary, going in this direction, we - // want to ensure that notation-separated-by-newlines works in both - // directions -- since in practice, a given file might be read by - // either language. - ensure("Failed to read LLSD::Integer from Python", - parse(inf, item, LLSDSerialize::SIZE_UNLIMITED)); - ensure_equals(item.asInteger(), 17); - ensure("Failed to read LLSD::Real from Python", - parse(inf, item, LLSDSerialize::SIZE_UNLIMITED)); - ensure_approximately_equals("Bad LLSD::Real value from Python", - item.asReal(), 3.14, 7); // 7 bits ~= 0.01 - ensure("Failed to read LLSD::String from Python", - parse(inf, item, LLSDSerialize::SIZE_UNLIMITED)); - ensure_equals(item.asString(), - "This string\n" - "has several\n" - "lines."); + try + { + ensure("Failed to read LLSD::Integer from Python", + itemFromStream(inf, item, parse)); + ensure_equals(item.asInteger(), 17); + ensure("Failed to read LLSD::Real from Python", + itemFromStream(inf, item, parse)); + ensure_approximately_equals("Bad LLSD::Real value from Python", + item.asReal(), 3.14, 7); // 7 bits ~= 0.01 + ensure("Failed to read LLSD::String from Python", + itemFromStream(inf, item, parse)); + ensure_equals(item.asString(), + "This string\n" + "has several\n" + "lines."); + } + catch (const tut::failure& err) + { + std::cout << "for " << err.what() << ", item = " << item << std::endl; + throw; + } } template<> template<> -- cgit v1.2.3 From 761d8337fb70cea9cfb326f06a8b1b35438ed96b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Dec 2022 17:14:31 -0500 Subject: SL-18330: Test Python llsd.parse() both from bytes and from stream. --- indra/llcommon/tests/llsdserialize_test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 39b93cf335..6e5d8a26e1 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -1958,6 +1958,7 @@ namespace tut placeholders::arg1 << import_llsd << "from functools import partial\n" + "import io\n" "import struct\n" "lenformat = struct.Struct('i')\n" "def parse_each(inf):\n" @@ -1968,11 +1969,16 @@ namespace tut // into a distinct bytes object and parse that. " data = inf.read(len)\n" " try:\n" - " yield llsd.parse(data)\n" + " frombytes = llsd.parse(data)\n" " except llsd.LLSDParseError as err:\n" " print(f'*** {err}')\n" " print(f'Bad content:\\n{data!r}')\n" " raise\n" + // Also try parsing from a distinct stream. + " stream = io.BytesIO(data)\n" + " fromstream = llsd.parse(stream)\n" + " assert frombytes == fromstream\n" + " yield frombytes\n" << pydata << // Don't forget raw-string syntax for Windows pathnames. "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n"); -- cgit v1.2.3 From 590e158cf36b6e6fca07f54837db084fe8a163c6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Dec 2022 16:30:35 -0500 Subject: SL-18330: Adapt LLSDSerialize and tests to llssize max_bytes params. --- indra/llcommon/llsdserialize.cpp | 2 +- indra/llcommon/tests/llsdserialize_test.cpp | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index 97bf51eeaa..c1b24d8138 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -128,7 +128,7 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, S32 max_bytes) * specified buffer. In the usual case when max_bytes exceeds * sizeof(hdr_buf), get() will read no more than sizeof(hdr_buf)-2. */ - str.get(hdr_buf, std::min(max_bytes+1, sizeof(hdr_buf)-1), '\n'); + str.get(hdr_buf, llmin(max_bytes+1, sizeof(hdr_buf)-1), '\n'); auto inbuf = str.gcount(); // https://en.cppreference.com/w/cpp/io/basic_istream/get // When the get() above sees the specified delimiter '\n', it stops there diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 6e5d8a26e1..29e3007aff 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -63,7 +63,7 @@ using namespace boost::phoenix; #include typedef std::function FormatterFunction; -typedef std::function ParserFunction; +typedef std::function ParserFunction; std::vector string_to_vector(const std::string& str) { @@ -263,7 +263,7 @@ namespace tut }; // this lambda must be mutable since otherwise the bound 'parser' // is assumed to point to a const LLSDParser - mParser = [parser](std::istream& istr, LLSD& data, size_t max_bytes) mutable + mParser = [parser](std::istream& istr, LLSD& data, llssize max_bytes) mutable { // reset() call is needed since test code re-uses parser object parser->reset(); @@ -271,10 +271,10 @@ namespace tut }; } - void setParser(bool (*parser)(LLSD&, std::istream&, size_t)) + void setParser(bool (*parser)(LLSD&, std::istream&, llssize)) { // why does LLSDSerialize::deserialize() reverse the parse() params?? - mParser = [parser](std::istream& istr, LLSD& data, size_t max_bytes) + mParser = [parser](std::istream& istr, LLSD& data, llssize max_bytes) { return (parser(data, istr, max_bytes) > 0); }; @@ -2059,7 +2059,7 @@ namespace tut // helper for test<8> - test<12> void fromPythonUsing(const std::string& pyformatter, const ParserFunction& parse= - [](std::istream& istr, LLSD& data, size_t max_bytes) + [](std::istream& istr, LLSD& data, llssize max_bytes) { return LLSDSerialize::deserialize(data, istr, max_bytes); }) { // Create an empty data file. This is just a placeholder for our @@ -2140,7 +2140,7 @@ namespace tut set_test_name("from Python XML using fromXML()"); // fromXML()'s optional 3rd param isn't max_bytes, it's emit_errors fromPythonUsing("format_xml", - [](std::istream& istr, LLSD& data, size_t) + [](std::istream& istr, LLSD& data, llssize) { return LLSDSerialize::fromXML(data, istr) > 0; }); } @@ -2149,7 +2149,7 @@ namespace tut { set_test_name("from Python notation using fromNotation()"); fromPythonUsing("format_notation", - [](std::istream& istr, LLSD& data, size_t max_bytes) + [](std::istream& istr, LLSD& data, llssize max_bytes) { return LLSDSerialize::fromNotation(data, istr, max_bytes) > 0; }); } @@ -2161,7 +2161,7 @@ namespace tut // We don't expect this to work because format_binary() emits a // header, but fromBinary() won't recognize a header. fromPythonUsing("format_binary", - [](std::istream& istr, LLSD& data, size_t max_bytes) + [](std::istream& istr, LLSD& data, llssize max_bytes) { return LLSDSerialize::fromBinary(data, istr, max_bytes) > 0; }); } |*==========================================================================*/ -- cgit v1.2.3 From c1e1f1e423d6afa1b5f954296726a49e42a3fe74 Mon Sep 17 00:00:00 2001 From: Bennett Goble Date: Fri, 3 Feb 2023 16:21:01 -0800 Subject: SL-17761: Replace 'Grid emergency' message with generic error The viewer currently presents a startling "Grid emergency" warning if an unrecognized error is returned from login. Let's tone this down a bit and present the error as it is: an unrecognized login failure rather than SLearth exploding. --- indra/newview/skins/default/xui/en/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index cf5d98aa9a..269df1349b 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -126,7 +126,7 @@ http://secondlife.com/download For more information, see our FAQ below: http://secondlife.com/viewer-access-faq - Grid emergency login failure. + Login failure. If you feel this is an error, please contact support@secondlife.com. Optional viewer update available: [VERSION] Required viewer update: [VERSION] -- cgit v1.2.3 From bf7faa3267e549b01131c6746202a5b6cda8e68a Mon Sep 17 00:00:00 2001 From: Henri Beauchamp Date: Mon, 6 Feb 2023 11:30:23 +0100 Subject: Faster and simpler inventory category hashing. This commit changes inventory category hashing from slow LLMD5 to fast HBXX128 hashing, and allows to use a simple LLUUID for the hash, instead of an LLMD5 instance. It also removes some old cruft dealing with unused baked texture hashing. --- indra/llappearance/llwearable.h | 4 ---- indra/llappearance/llwearabledata.cpp | 40 ----------------------------------- indra/llappearance/llwearabledata.h | 9 -------- indra/newview/llagentwearables.cpp | 1 - indra/newview/llinventorymodel.cpp | 11 +++++----- indra/newview/llinventorymodel.h | 3 +-- indra/newview/llinventoryobserver.cpp | 7 +++--- indra/newview/llinventoryobserver.h | 5 ++--- indra/newview/lloutfitobserver.cpp | 3 +-- indra/newview/lloutfitobserver.h | 3 +-- indra/newview/llviewerwearable.h | 1 - 11 files changed, 13 insertions(+), 74 deletions(-) diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h index 875c2932f1..d86db236a3 100644 --- a/indra/llappearance/llwearable.h +++ b/indra/llappearance/llwearable.h @@ -32,7 +32,6 @@ #include "llsaleinfo.h" #include "llwearabletype.h" -class LLMD5; class LLVisualParam; class LLTexGlobalColorInfo; class LLTexGlobalColor; @@ -110,9 +109,6 @@ public: // Something happened that requires the wearable to be updated (e.g. worn/unworn). virtual void setUpdated() const = 0; - // Update the baked texture hash. - virtual void addToBakedTextureHash(LLMD5& hash) const = 0; - typedef std::map visual_param_index_map_t; visual_param_index_map_t mVisualParamIndexMap; diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp index 0eaeedb6ee..9fbbc57c87 100644 --- a/indra/llappearance/llwearabledata.cpp +++ b/indra/llappearance/llwearabledata.cpp @@ -31,7 +31,6 @@ #include "llavatarappearance.h" #include "llavatarappearancedefines.h" #include "lldriverparam.h" -#include "llmd5.h" LLWearableData::LLWearableData() : mAvatarAppearance(NULL) @@ -343,42 +342,3 @@ U32 LLWearableData::getWearableCount(const U32 tex_index) const const LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index); return getWearableCount(wearable_type); } - -LLUUID LLWearableData::computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index, - BOOL generate_valid_hash) // Set to false if you want to upload the baked texture w/o putting it in the cache -{ - LLUUID hash_id; - bool hash_computed = false; - LLMD5 hash; - const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearance::getDictionary()->getBakedTexture(baked_index); - - for (U8 i=0; i < baked_dict->mWearables.size(); i++) - { - const LLWearableType::EType baked_type = baked_dict->mWearables[i]; - const U32 num_wearables = getWearableCount(baked_type); - for (U32 index = 0; index < num_wearables; ++index) - { - const LLWearable* wearable = getWearable(baked_type,index); - if (wearable) - { - wearable->addToBakedTextureHash(hash); - hash_computed = true; - } - } - } - if (hash_computed) - { - hash.update((const unsigned char*)baked_dict->mWearablesHashID.mData, UUID_BYTES); - - if (!generate_valid_hash) - { - invalidateBakedTextureHash(hash); - } - hash.finalize(); - hash.raw_digest(hash_id.mData); - } - - return hash_id; -} - - diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h index a0c446ea9e..b8e0bf8bd1 100644 --- a/indra/llappearance/llwearabledata.h +++ b/indra/llappearance/llwearabledata.h @@ -85,15 +85,6 @@ protected: private: void pullCrossWearableValues(const LLWearableType::EType type); - //-------------------------------------------------------------------- - // Server Communication - //-------------------------------------------------------------------- -public: - LLUUID computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index, - BOOL generate_valid_hash = TRUE); -protected: - virtual void invalidateBakedTextureHash(LLMD5& hash) const {} - //-------------------------------------------------------------------- // Member variables //-------------------------------------------------------------------- diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 2e769dc737..53397978e0 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -41,7 +41,6 @@ #include "llinventoryobserver.h" #include "llinventorypanel.h" #include "lllocaltextureobject.h" -#include "llmd5.h" #include "llnotificationsutil.h" #include "lloutfitobserver.h" #include "llsidepanelappearance.h" diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 6ba04cdff2..b41ad51fa4 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -62,6 +62,7 @@ #include "bufferarray.h" #include "bufferstream.h" #include "llcorehttputil.h" +#include "hbxxh.h" //#define DIFF_INVENTORY_FILES #ifdef DIFF_INVENTORY_FILES @@ -451,17 +452,16 @@ void LLInventoryModel::getDirectDescendentsOf(const LLUUID& cat_id, items = get_ptr_in_map(mParentChildItemTree, cat_id); } -LLMD5 LLInventoryModel::hashDirectDescendentNames(const LLUUID& cat_id) const +LLUUID LLInventoryModel::hashDirectDescendentNames(const LLUUID& cat_id) const { LLInventoryModel::cat_array_t* cat_array; LLInventoryModel::item_array_t* item_array; getDirectDescendentsOf(cat_id,cat_array,item_array); - LLMD5 item_name_hash; if (!item_array) { - item_name_hash.finalize(); - return item_name_hash; + return LLUUID::null; } + HBXXH128 item_name_hash; for (LLInventoryModel::item_array_t::const_iterator iter = item_array->begin(); iter != item_array->end(); iter++) @@ -471,8 +471,7 @@ LLMD5 LLInventoryModel::hashDirectDescendentNames(const LLUUID& cat_id) const continue; item_name_hash.update(item->getName()); } - item_name_hash.finalize(); - return item_name_hash; + return item_name_hash.digest(); } // SJB: Added version to lock the arrays to catch potential logic bugs diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index c4133ff9bb..ac10488d14 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -39,7 +39,6 @@ #include "llpermissionsflags.h" #include "llviewerinventory.h" #include "llstring.h" -#include "llmd5.h" #include "httpcommon.h" #include "httprequest.h" #include "httpoptions.h" @@ -258,7 +257,7 @@ public: item_array_t*& items) const; // Compute a hash of direct descendant names (for detecting child name changes) - LLMD5 hashDirectDescendentNames(const LLUUID& cat_id) const; + LLUUID hashDirectDescendentNames(const LLUUID& cat_id) const; // Starting with the object specified, add its descendants to the // array provided, but do not add the inventory object specified diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 26d7a7a28a..2b252e369d 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -640,7 +640,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask) // computed, or (b) a name has changed. if (!cat_data.mIsNameHashInitialized || (mask & LLInventoryObserver::LABEL)) { - LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id); + LLUUID item_name_hash = gInventory.hashDirectDescendentNames(cat_id); if (cat_data.mItemNameHash != item_name_hash) { cat_data.mIsNameHashInitialized = true; @@ -701,7 +701,7 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t { if(init_name_hash) { - LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id); + LLUUID item_name_hash = gInventory.hashDirectDescendentNames(cat_id); mCategoryMap.insert(category_map_value_t(cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents,item_name_hash))); } else @@ -727,11 +727,10 @@ LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData( , mDescendentsCount(num_descendents) , mIsNameHashInitialized(false) { - mItemNameHash.finalize(); } LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData( - const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, LLMD5 name_hash) + const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, const LLUUID& name_hash) : mCatID(cat_id) , mCallback(cb) diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index 36d8ee3f59..ec42e0449b 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -28,7 +28,6 @@ #define LL_LLINVENTORYOBSERVERS_H #include "lluuid.h" -#include "llmd5.h" #include #include @@ -274,11 +273,11 @@ protected: struct LLCategoryData { LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents); - LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, LLMD5 name_hash); + LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, const LLUUID& name_hash); callback_t mCallback; S32 mVersion; S32 mDescendentsCount; - LLMD5 mItemNameHash; + LLUUID mItemNameHash; bool mIsNameHashInitialized; LLUUID mCatID; }; diff --git a/indra/newview/lloutfitobserver.cpp b/indra/newview/lloutfitobserver.cpp index 5bb69367aa..3ec5bcd9fc 100644 --- a/indra/newview/lloutfitobserver.cpp +++ b/indra/newview/lloutfitobserver.cpp @@ -34,7 +34,6 @@ LLOutfitObserver::LLOutfitObserver() : mCOFLastVersion(LLViewerInventoryCategory::VERSION_UNKNOWN) { - mItemNameHash.finalize(); gInventory.addObserver(this); } @@ -83,7 +82,7 @@ bool LLOutfitObserver::checkCOF() return false; bool cof_changed = false; - LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cof); + LLUUID item_name_hash = gInventory.hashDirectDescendentNames(cof); if (item_name_hash != mItemNameHash) { cof_changed = true; diff --git a/indra/newview/lloutfitobserver.h b/indra/newview/lloutfitobserver.h index 77041db68d..2f136d48e8 100644 --- a/indra/newview/lloutfitobserver.h +++ b/indra/newview/lloutfitobserver.h @@ -28,7 +28,6 @@ #define LL_OUTFITOBSERVER_H #include "llsingleton.h" -#include "llmd5.h" /** * Outfit observer facade that provides simple possibility to subscribe on @@ -78,7 +77,7 @@ protected: bool mLastOutfitDirtiness; - LLMD5 mItemNameHash; + LLUUID mItemNameHash; private: signal_t mBOFReplaced; diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h index cc99f6af2f..24b1323b2b 100644 --- a/indra/newview/llviewerwearable.h +++ b/indra/newview/llviewerwearable.h @@ -93,7 +93,6 @@ public: // the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem, // not the wearable asset itself. void refreshName(); - /*virtual*/void addToBakedTextureHash(LLMD5& hash) const {} protected: LLAssetID mAssetID; -- cgit v1.2.3 From 61b93e778bf58f6db4d2f3d8dd6ec67de25598ea Mon Sep 17 00:00:00 2001 From: Henri Beauchamp Date: Tue, 7 Feb 2023 00:17:22 +0100 Subject: SL-19110 Make HBXXH* classes no-copy. (#72) These classes are not trivially copyable because of the mState pointer on an internal XXH3 state that would have to be explicitely copied. While it would be possible to add custom copy constructor and operator for them, it does not really make sense to allow copying an instance of these classes, since all we care about storing and copying is the digest (which is either an U64 or an LLUUID). --- indra/llcommon/hbxxh.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/indra/llcommon/hbxxh.h b/indra/llcommon/hbxxh.h index 236716722a..9c0e9cf172 100644 --- a/indra/llcommon/hbxxh.h +++ b/indra/llcommon/hbxxh.h @@ -96,6 +96,15 @@ public: } } + // Make this class no-copy (it would be possible, with custom copy + // operators, but it is not trivially copyable, because of the mState + // pointer): it does not really make sense to allow copying it anyway, + // since all we care about is the resulting digest (so you should only + // need and care about storing/copying the digest and not a class + // instance). + HBXXH64(const HBXXH64&) noexcept = delete; + HBXXH64& operator=(const HBXXH64&) noexcept = delete; + ~HBXXH64(); void update(const void* buffer, size_t len); @@ -199,6 +208,15 @@ public: } } + // Make this class no-copy (it would be possible, with custom copy + // operators, but it is not trivially copyable, because of the mState + // pointer): it does not really make sense to allow copying it anyway, + // since all we care about is the resulting digest (so you should only + // need and care about storing/copying the digest and not a class + // instance). + HBXXH128(const HBXXH128&) noexcept = delete; + HBXXH128& operator=(const HBXXH128&) noexcept = delete; + ~HBXXH128(); void update(const void* buffer, size_t len); -- cgit v1.2.3 From 1eb2b23f4b254052924b198d446c052df9ca3124 Mon Sep 17 00:00:00 2001 From: Henri Beauchamp Date: Tue, 7 Feb 2023 13:51:53 +0100 Subject: SL-19159 Faster LLUUID and LLMaterialID hashing for std and boost containers keys (#70) LLUUID and LLMaterialID already have an excellent entropy and value dispersion; there is therefore strictly no need to further (slowly) hash their value for use with std and boost libraries containers. This commit adds a trivial getDigest64() method to both LLUUID and LLMaterialID (which simply returns the XOR of the two 64 bits long words their value is made of), and uses it in std::hash and hash_value() specializations for use with containers. --- indra/llcommon/lluuid.cpp | 2 +- indra/llcommon/lluuid.h | 50 +++++++++++++++++----------------------- indra/llprimitive/llmaterialid.h | 26 +++++++++++++++++++++ indra/newview/llmaterialmgr.h | 27 +++++++++++++++------- 4 files changed, 67 insertions(+), 38 deletions(-) diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp index 8ff6c45760..aa8045e6ab 100644 --- a/indra/llcommon/lluuid.cpp +++ b/indra/llcommon/lluuid.cpp @@ -878,7 +878,7 @@ U32 LLUUID::getRandomSeed() seed[7]=(unsigned char)(pid); getSystemTime((uuid_time_t *)(&seed[8])); - U64 seed64 = HBXXH64((const void*)seed, 16).digest(); + U64 seed64 = HBXXH64::digest((const void*)seed, 16); return U32(seed64) ^ U32(seed64 >> 32); } diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h index 86a396ab06..2c36a1d222 100644 --- a/indra/llcommon/lluuid.h +++ b/indra/llcommon/lluuid.h @@ -119,6 +119,14 @@ public: U16 getCRC16() const; U32 getCRC32() const; + // Returns a 64 bits digest of the UUID, by XORing its two 64 bits long + // words. HB + inline U64 getDigest64() const + { + U64* tmp = (U64*)mData; + return tmp[0] ^ tmp[1]; + } + static BOOL validate(const std::string& in_string); // Validate that the UUID string is legal. static const LLUUID null; @@ -165,36 +173,20 @@ public: LLAssetID makeAssetID(const LLUUID& session) const; }; -// Generate a hash of an LLUUID object using the boost hash templates. -template <> -struct boost::hash -{ - typedef LLUUID argument_type; - typedef std::size_t result_type; - result_type operator()(argument_type const& s) const - { - result_type seed(0); - - for (S32 i = 0; i < UUID_BYTES; ++i) - { - boost::hash_combine(seed, s.mData[i]); - } - - return seed; - } -}; - -// Adapt boost hash to std hash +// std::hash implementation for LLUUID namespace std { - template<> struct hash - { - std::size_t operator()(LLUUID const& s) const noexcept - { - return boost::hash()(s); - } - }; + template<> struct hash + { + inline size_t operator()(const LLUUID& id) const noexcept + { + return (size_t)id.getDigest64(); + } + }; } -#endif - +// For use with boost containers. +inline size_t hash_value(const LLUUID& id) noexcept +{ + return (size_t)id.getDigest64(); +} diff --git a/indra/llprimitive/llmaterialid.h b/indra/llprimitive/llmaterialid.h index ee663f8f99..c66e3e30a3 100644 --- a/indra/llprimitive/llmaterialid.h +++ b/indra/llprimitive/llmaterialid.h @@ -66,6 +66,14 @@ public: static const LLMaterialID null; + // Returns a 64 bits digest of the material Id, by XORing its two 64 bits + // long words. HB + inline U64 getDigest64() const + { + U64* tmp = (U64*)mID; + return tmp[0] ^ tmp[1]; + } + private: void parseFromBinary(const LLSD::Binary& pMaterialID); void copyFromOtherMaterialID(const LLMaterialID& pOtherMaterialID); @@ -74,5 +82,23 @@ private: U8 mID[MATERIAL_ID_SIZE]; } ; +// std::hash implementation for LLMaterialID +namespace std +{ + template<> struct hash + { + inline size_t operator()(const LLMaterialID& id) const noexcept + { + return (size_t)id.getDigest64(); + } + }; +} + +// For use with boost containers. +inline size_t hash_value(const LLMaterialID& id) noexcept +{ + return (size_t)id.getDigest64(); +} + #endif // LL_LLMATERIALID_H diff --git a/indra/newview/llmaterialmgr.h b/indra/newview/llmaterialmgr.h index 843dc66fbc..47c322357a 100644 --- a/indra/newview/llmaterialmgr.h +++ b/indra/newview/llmaterialmgr.h @@ -102,13 +102,6 @@ private: (lhs.materialID < rhs.materialID); } - struct TEMaterialPairHasher - { - enum { bucket_size = 8 }; - size_t operator()(const TEMaterialPair& key_value) const { return *((size_t*)key_value.materialID.get()); } // cheesy, but effective - bool operator()(const TEMaterialPair& left, const TEMaterialPair& right) const { return left < right; } - }; - typedef std::set material_queue_t; typedef std::map get_queue_t; typedef std::pair pending_material_t; @@ -116,7 +109,7 @@ private: typedef std::map get_callback_map_t; - typedef boost::unordered_map get_callback_te_map_t; + typedef boost::unordered_map get_callback_te_map_t; typedef std::set getall_queue_t; typedef std::map getall_pending_map_t; typedef std::map getall_callback_map_t; @@ -146,5 +139,23 @@ private: U32 getMaxEntries(const LLViewerRegion* regionp); }; +// std::hash implementation for TEMaterialPair +namespace std +{ + template<> struct hash + { + inline size_t operator()(const LLMaterialMgr::TEMaterialPair& p) const noexcept + { + return size_t((p.te + 1) * p.materialID.getDigest64()); + } + }; +} + +// For use with boost containers. +inline size_t hash_value(const LLMaterialMgr::TEMaterialPair& p) noexcept +{ + return size_t((p.te + 1) * p.materialID.getDigest64()); +} + #endif // LL_LLMATERIALMGR_H -- cgit v1.2.3 From c3ab9487245ac77016f3b651e2db47d239941659 Mon Sep 17 00:00:00 2001 From: Henri Beauchamp Date: Tue, 7 Feb 2023 22:18:44 +0100 Subject: Added a digest_t typedef to clarify the usage of the digest LLUUID As suggested in comments for previous commit. --- indra/newview/llinventorymodel.cpp | 2 +- indra/newview/llinventorymodel.h | 3 ++- indra/newview/llinventoryobserver.cpp | 6 +++--- indra/newview/llinventoryobserver.h | 5 +++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index b41ad51fa4..e56a0ba414 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -452,7 +452,7 @@ void LLInventoryModel::getDirectDescendentsOf(const LLUUID& cat_id, items = get_ptr_in_map(mParentChildItemTree, cat_id); } -LLUUID LLInventoryModel::hashDirectDescendentNames(const LLUUID& cat_id) const +LLInventoryModel::digest_t LLInventoryModel::hashDirectDescendentNames(const LLUUID& cat_id) const { LLInventoryModel::cat_array_t* cat_array; LLInventoryModel::item_array_t* item_array; diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index ac10488d14..ef4a7d984d 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -256,8 +256,9 @@ public: cat_array_t*& categories, item_array_t*& items) const; + typedef LLUUID digest_t; // To clarify the actual usage of this "UUID" // Compute a hash of direct descendant names (for detecting child name changes) - LLUUID hashDirectDescendentNames(const LLUUID& cat_id) const; + digest_t hashDirectDescendentNames(const LLUUID& cat_id) const; // Starting with the object specified, add its descendants to the // array provided, but do not add the inventory object specified diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 2b252e369d..db0751cb89 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -640,7 +640,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask) // computed, or (b) a name has changed. if (!cat_data.mIsNameHashInitialized || (mask & LLInventoryObserver::LABEL)) { - LLUUID item_name_hash = gInventory.hashDirectDescendentNames(cat_id); + digest_t item_name_hash = gInventory.hashDirectDescendentNames(cat_id); if (cat_data.mItemNameHash != item_name_hash) { cat_data.mIsNameHashInitialized = true; @@ -701,7 +701,7 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t { if(init_name_hash) { - LLUUID item_name_hash = gInventory.hashDirectDescendentNames(cat_id); + digest_t item_name_hash = gInventory.hashDirectDescendentNames(cat_id); mCategoryMap.insert(category_map_value_t(cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents,item_name_hash))); } else @@ -730,7 +730,7 @@ LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData( } LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData( - const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, const LLUUID& name_hash) + const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, const digest_t& name_hash) : mCatID(cat_id) , mCallback(cb) diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index ec42e0449b..4af8102055 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -270,14 +270,15 @@ public: void removeCategory(const LLUUID& cat_id); protected: + typedef LLUUID digest_t; // To clarify the actual usage of this "UUID" struct LLCategoryData { LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents); - LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, const LLUUID& name_hash); + LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, const digest_t& name_hash); callback_t mCallback; S32 mVersion; S32 mDescendentsCount; - LLUUID mItemNameHash; + digest_t mItemNameHash; bool mIsNameHashInitialized; LLUUID mCatID; }; -- cgit v1.2.3 From a2f8f3db0663887462d0de69f3fc7eef673dfd35 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 7 Feb 2023 23:55:22 +0200 Subject: SL-19159 Update contribution doc --- doc/contributions.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index c6c7ea8f53..1fa81dd1df 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -586,6 +586,7 @@ Henri Beauchamp VWR-4157 SL-15175 SL-19110 + SL-19159 herina Bode Hikkoshi Sakai VWR-429 -- cgit v1.2.3 From c833f711d513d559dc0b584cae54347749090d5f Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 13 Feb 2023 09:10:29 -0800 Subject: Reduce stale time for PRs Let's reduce the stale time from 60 days to 30. We already have at least two multi-month PRs. --- .github/workflows/stale.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 82a9a968b9..35ac41420c 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -15,8 +15,8 @@ jobs: - uses: actions/stale@v6 id: stale with: - stale-pr-message: This pull request is stale because it has been open 60 days with no activity. Remove stale label or comment or it will be closed in 7 days - days-before-stale: 60 + stale-pr-message: This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days + days-before-stale: 30 days-before-close: 7 exempt-pr-labels: blocked,must,should,keep stale-pr-label: stale -- cgit v1.2.3 From e2836313a8d2b5e2acd4fd20bde50521613ed0ef Mon Sep 17 00:00:00 2001 From: Henri Beauchamp Date: Mon, 13 Feb 2023 18:34:00 +0100 Subject: SL-19110 revert LLUUID::combine() to old algorithm to match server code. (#75) As it happens, the change in the LLUUID::combine() algorithm introduced by one of my previous commits is causing invalid assets creation (seen with some clothing items, such as Shape and Universal types); obviously, the server is using the old algorithm for UUID validation purpose of these assets. This commit reverts LLUUID::combine() code to use LLMD5. --- indra/llcommon/lluuid.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp index aa8045e6ab..adf31b2d28 100644 --- a/indra/llcommon/lluuid.cpp +++ b/indra/llcommon/lluuid.cpp @@ -44,6 +44,7 @@ #include "lltimer.h" #include "llthread.h" #include "llmutex.h" +#include "llmd5.h" #include "hbxxh.h" const LLUUID LLUUID::null; @@ -400,11 +401,16 @@ LLUUID LLUUID::operator^(const LLUUID& rhs) const return id; } +// WARNING: this algorithm SHALL NOT be changed. It is also used by the server +// and plays a role in some assets validation (e.g. clothing items). Changing +// it would cause invalid assets. void LLUUID::combine(const LLUUID& other, LLUUID& result) const { - HBXXH128 hash((const void*)mData, 16, false); // false = do not finalize - hash.update((const void*)other.mData, 16); - hash.digest(result); + LLMD5 md5_uuid; + md5_uuid.update((unsigned char*)mData, 16); + md5_uuid.update((unsigned char*)other.mData, 16); + md5_uuid.finalize(); + md5_uuid.raw_digest(result.mData); } LLUUID LLUUID::combine(const LLUUID &other) const -- cgit v1.2.3 From 177267415a8c86e524955b7619db3c29ad193e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pantera=20P=C3=B3=C5=82nocy?= Date: Mon, 13 Feb 2023 19:33:55 +0100 Subject: SL-19207 Polish translation: notifications, strings, a few floaters; Minor changes in /en/ (#78) --- .../default/xui/en/panel_script_experience.xml | 17 +- indra/newview/skins/default/xui/en/strings.xml | 2 +- .../newview/skins/default/xui/pl/floater_about.xml | 4 +- .../skins/default/xui/pl/floater_about_land.xml | 120 ++- .../xui/pl/floater_animation_anim_preview.xml | 2 +- .../xui/pl/floater_animation_bvh_preview.xml | 2 +- .../default/xui/pl/floater_associate_listing.xml | 5 +- .../newview/skins/default/xui/pl/notifications.xml | 1134 ++++++++++++++------ indra/newview/skins/default/xui/pl/strings.xml | 938 ++++++++++++---- 9 files changed, 1665 insertions(+), 559 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_script_experience.xml b/indra/newview/skins/default/xui/en/panel_script_experience.xml index e798638751..9ae5b201a6 100644 --- a/indra/newview/skins/default/xui/en/panel_script_experience.xml +++ b/indra/newview/skins/default/xui/en/panel_script_experience.xml @@ -48,23 +48,28 @@ layout="topleft" visible="false"> - + height="140" + name="xp_layout_panel"> + Script: - + Associated with: - + You can contribute: - + Associate with: + height="140" + name="xp_choose_panel"> EasySit Animator 1.2.4 diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 269df1349b..efc70440d2 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -233,7 +233,7 @@ If you feel this is an error, please contact support@secondlife.com For Sale: L$[AMOUNT] Group Build No Build - Group Build + No Edit Not Safe No Fly Group Scripts diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index b9c75e8e88..b8d75315de 100644 --- a/indra/newview/skins/default/xui/pl/floater_about.xml +++ b/indra/newview/skins/default/xui/pl/floater_about.xml @@ -6,8 +6,8 @@ - Second Life zostało dla Ciebie stworzone przez Lindenów, - z wkładem open source od: +Second Life zostało dla Ciebie stworzone przez Lindenów, +z wkładem open source od: diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml index 1646db897a..9f8e110dd6 100644 --- a/indra/newview/skins/default/xui/pl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml @@ -1,17 +1,26 @@ + + [HOURS] godz. + + + godz. + - [MINUTES] minuty + [MINUTES] min. - minuta + min. - [SECONDS] sekund + [SECONDS] sek. pozostało + + Zawsze + @@ -65,16 +74,10 @@ Właściciel: - - Ładowanie... - + -- cgit v1.2.3 From 971e851157da688b480d6ada188daec532e4b682 Mon Sep 17 00:00:00 2001 From: Andrey Lihatskiy Date: Thu, 4 May 2023 16:44:23 +0300 Subject: SL-19647 OSX buildfix --- indra/llcommon/tests/llsdserialize_test.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 85791e2979..acb2953b5b 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -1922,8 +1922,6 @@ namespace tut static void toPythonUsing(const std::string& desc, const FormatterFunction& serialize) { - set_test_name("verify sequence to Python"); - LLSD cdata(llsd::array(17, 3.14, "This string\n" "has several\n" -- cgit v1.2.3 From e8c1a18105bddc29951d4c4b1700dc0af37c83c2 Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 4 May 2023 16:52:35 +0100 Subject: First work on sl-19676 - Stats on updates --- indra/newview/app_settings/settings.xml | 33 +++ indra/newview/llappviewer.cpp | 7 +- indra/newview/llfloater360capture.cpp | 18 +- indra/newview/lltexturefetch.cpp | 5 - indra/newview/llviewermenu.cpp | 143 ++++++----- indra/newview/llviewerobjectlist.cpp | 42 ++-- indra/newview/llviewerregion.cpp | 17 +- indra/newview/llviewerregion.h | 12 +- indra/newview/llviewerstatsrecorder.cpp | 267 +++++++++++++-------- indra/newview/llviewerstatsrecorder.h | 117 +++++---- indra/newview/skins/default/xui/en/menu_viewer.xml | 24 +- 11 files changed, 409 insertions(+), 276 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9fffab70f4..3d1a384793 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -17085,5 +17085,38 @@ Value 0 + StatsReportMaxDuration + + Comment + Maximum seconds for viewer stats file data, prevents huge file + Persist + 1 + Type + F32 + Value + 300 + + StatsReportFileInterval + + Comment + Interval to save viewer stats file data + Persist + 1 + Type + F32 + Value + 0.2 + + StatsReportSkipZeroDataSaves + + Comment + In viewer stats data file, skip saving entry if there is no data + Persist + 0 + Type + Boolean + Value + 0 + diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 8d77a39c74..9c194562f9 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1536,7 +1536,12 @@ bool LLAppViewer::doFrame() LLFloaterSimpleOutfitSnapshot::update(); gGLActive = FALSE; } - } + + if (LLViewerStatsRecorder::instanceExists()) + { + LLViewerStatsRecorder::instance().idle(); + } + } } { diff --git a/indra/newview/llfloater360capture.cpp b/indra/newview/llfloater360capture.cpp index 23f86e2361..9c25cdbc7d 100644 --- a/indra/newview/llfloater360capture.cpp +++ b/indra/newview/llfloater360capture.cpp @@ -197,21 +197,18 @@ void LLFloater360Capture::changeInterestListMode(bool send_everything) if (gAgent.requestPostCapability("InterestList", body, [](const LLSD & response) { - LL_INFOS("360Capture") << - "InterestList capability responded: \n" << + LL_DEBUGS("360Capture") << "InterestList capability responded: \n" << ll_pretty_print_sd(response) << LL_ENDL; })) { - LL_INFOS("360Capture") << - "Successfully posted an InterestList capability request with payload: \n" << + LL_DEBUGS("360Capture") << "Successfully posted an InterestList capability request with payload: \n" << ll_pretty_print_sd(body) << LL_ENDL; } else { - LL_INFOS("360Capture") << - "Unable to post an InterestList capability request with payload: \n" << + LL_WARNS("360Capture") << "Unable to post an InterestList capability request with payload: \n" << ll_pretty_print_sd(body) << LL_ENDL; } @@ -632,11 +629,8 @@ void LLFloater360Capture::capture360Images() // display time to encode all 6 images. It tends to be a fairly linear // time for each so we don't need to worry about displaying the time // for each - this gives us plenty to use for optimizing - LL_INFOS("360Capture") << - "Time to encode and save 6 images was " << - encode_time_total << - " seconds" << - LL_ENDL; + LL_INFOS("360Capture") << "Time to encode and save 6 images was " << + encode_time_total << " seconds" << LL_ENDL; // Write the JavaScript file footer (the bottom of the file after the // declarations of the actual data URLs array). The footer comprises of @@ -668,7 +662,7 @@ void LLFloater360Capture::capture360Images() // as a change - only the subsequent 5 are if (camera_changed_times < 5) { - LL_INFOS("360Capture") << "Warning: we only captured " << camera_changed_times << " images." << LL_ENDL; + LL_WARNS("360Capture") << "360 image capture expected 5 or more images, only captured " << camera_changed_times << " images." << LL_ENDL; } // now we have the 6 shots saved in a well specified location, diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index a7dcb1a9bb..b0d6a5d466 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -2258,11 +2258,6 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response, mLoaded = TRUE; setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); - if (LLViewerStatsRecorder::instanceExists()) - { - // Do not create this instance inside thread - LLViewerStatsRecorder::instance().log(0.2f); - } return data_size ; } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 998f5c020e..77cb5f86af 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -119,6 +119,7 @@ #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" #include "llviewerstats.h" +#include "llviewerstatsrecorder.h" #include "llvoavatarself.h" #include "llvoicevivox.h" #include "llworldmap.h" @@ -1295,49 +1296,99 @@ class LLAdvancedDumpRegionObjectCache : public view_listener_t } }; -class LLAdvancedInterestListFullUpdate : public view_listener_t +class LLAdvancedToggleInterestList360Mode : public view_listener_t { - bool handleEvent(const LLSD& userdata) - { - LLSD request; - LLSD body; - static bool using_360 = false; - - if (using_360) - { - body["mode"] = LLSD::String("default"); - } - else - { - body["mode"] = LLSD::String("360"); - } - using_360 = !using_360; +public: + bool handleEvent(const LLSD &userdata) + { + LLSD request; + LLSD body; + + // First do a GET to report on current mode and update stats + if (gAgent.requestGetCapability("InterestList", + [](const LLSD &response) { + LL_DEBUGS("360Capture") << "InterestList capability GET responded: \n" + << ll_pretty_print_sd(response) << LL_ENDL; + })) + { + LL_DEBUGS("360Capture") << "Successful GET InterestList capability request with return body: \n" + << ll_pretty_print_sd(body) << LL_ENDL; + } + else + { + LL_WARNS("360Capture") << "Unable to GET InterestList capability request with return body: \n" + << ll_pretty_print_sd(body) << LL_ENDL; + } - if (gAgent.requestPostCapability("InterestList", body, [](const LLSD& response) + // Now do a POST to change the mode + if (sUsing360) { - LL_INFOS("360Capture") << - "InterestList capability responded: \n" << - ll_pretty_print_sd(response) << - LL_ENDL; - })) + body["mode"] = LLSD::String("default"); + } + else { - LL_INFOS("360Capture") << - "Successfully posted an InterestList capability request with payload: \n" << - ll_pretty_print_sd(body) << - LL_ENDL; + body["mode"] = LLSD::String("360"); + } + sUsing360 = !sUsing360; + LL_INFOS("360Capture") << "Setting InterestList capability mode to " << body["mode"].asString() << LL_ENDL; + + if (gAgent.requestPostCapability("InterestList", body, + [](const LLSD &response) { + LL_DEBUGS("360Capture") << "InterestList capability responded: \n" + << ll_pretty_print_sd(response) << LL_ENDL; + })) + { + LL_DEBUGS("360Capture") << "Successfully posted an InterestList capability request with payload: \n" + << ll_pretty_print_sd(body) << LL_ENDL; return true; } else { - LL_INFOS("360Capture") << - "Unable to post an InterestList capability request with payload: \n" << - ll_pretty_print_sd(body) << - LL_ENDL; + LL_DEBUGS("360Capture") << "Unable to post an InterestList capability request with payload: \n" + << ll_pretty_print_sd(body) << LL_ENDL; return false; } + }; + + static bool sUsing360; +}; + +bool LLAdvancedToggleInterestList360Mode::sUsing360 = false; + +class LLAdvancedCheckInterestList360Mode : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + return LLAdvancedToggleInterestList360Mode::sUsing360; } }; +class LLAdvancedToggleStatsRecorder : public view_listener_t +{ + bool handleEvent(const LLSD &userdata) + { + if (LLViewerStatsRecorder::instance().isEnabled()) + { // Turn off both recording and logging + LLViewerStatsRecorder::instance().enableObjectStatsRecording(false); + } + else + { // Turn on both recording and logging + LLViewerStatsRecorder::instance().enableObjectStatsRecording(true, true); + } + return true; + } +}; + +class LLAdvancedCheckStatsRecorder : public view_listener_t +{ + bool handleEvent(const LLSD &userdata) + { // Use the logging state as the indicator of whether the stats recorder is on + return LLViewerStatsRecorder::instance().isLogging(); + } +}; + + + class LLAdvancedBuyCurrencyTest : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -4492,33 +4543,6 @@ void handle_duplicate_in_place(void*) LLSelectMgr::getInstance()->selectDuplicate(offset, TRUE); } -/* dead code 30-apr-2008 -void handle_deed_object_to_group(void*) -{ - LLUUID group_id; - - LLSelectMgr::getInstance()->selectGetGroup(group_id); - LLSelectMgr::getInstance()->sendOwner(LLUUID::null, group_id, FALSE); - LLViewerStats::getInstance()->incStat(LLViewerStats::ST_RELEASE_COUNT); -} - -BOOL enable_deed_object_to_group(void*) -{ - if(LLSelectMgr::getInstance()->getSelection()->isEmpty()) return FALSE; - LLPermissions perm; - LLUUID group_id; - - if (LLSelectMgr::getInstance()->selectGetGroup(group_id) && - gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED) && - LLSelectMgr::getInstance()->selectGetPermissions(perm) && - perm.deedToGroup(gAgent.getID(), group_id)) - { - return TRUE; - } - return FALSE; -} - -*/ /* @@ -9448,7 +9472,10 @@ void initialize_menus() // Advanced > World view_listener_t::addMenu(new LLAdvancedDumpScriptedCamera(), "Advanced.DumpScriptedCamera"); view_listener_t::addMenu(new LLAdvancedDumpRegionObjectCache(), "Advanced.DumpRegionObjectCache"); - view_listener_t::addMenu(new LLAdvancedInterestListFullUpdate(), "Advanced.InterestListFullUpdate"); + view_listener_t::addMenu(new LLAdvancedToggleInterestList360Mode(), "Advanced.ToggleInterestList360Mode"); + view_listener_t::addMenu(new LLAdvancedCheckInterestList360Mode(), "Advanced.CheckInterestList360Mode"); + view_listener_t::addMenu(new LLAdvancedToggleStatsRecorder(), "Advanced.ToggleStatsRecorder"); + view_listener_t::addMenu(new LLAdvancedCheckStatsRecorder(), "Advanced.CheckStatsRecorder"); // Advanced > UI commit.add("Advanced.WebBrowserTest", boost::bind(&handle_web_browser_test, _2)); // sigh! this one opens the MEDIA browser diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index efc4ded79e..0c9e929cf3 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -369,7 +369,7 @@ LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry* if (!objectp) { LL_INFOS() << "createObject failure for object: " << fullid << LL_ENDL; - recorder.objectUpdateFailure(entry->getLocalID(), OUT_FULL_CACHED, 0); + recorder.objectUpdateFailure(0); return NULL; } justCreated = true; @@ -393,7 +393,6 @@ LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry* objectp->setLastUpdateType(OUT_FULL_COMPRESSED); //newly cached objectp->setLastUpdateCached(TRUE); } - recorder.log(0.2f); LLVOAvatar::cullAvatarsByPixelArea(); return objectp; @@ -472,18 +471,15 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, for (i = 0; i < num_objects; i++) { - // timer is unused? - LLTimer update_timer; BOOL justCreated = FALSE; S32 msg_size = 0; bool update_cache = false; //update object cache if it is a full-update or terse update if (compressed) { - S32 uncompressed_length = 2048; compressed_dp.reset(); - uncompressed_length = mesgsys->getSizeFast(_PREHASH_ObjectData, i, _PREHASH_Data); + S32 uncompressed_length = mesgsys->getSizeFast(_PREHASH_ObjectData, i, _PREHASH_Data); LL_DEBUGS("ObjectUpdate") << "got binary data from message to compressed_dpbuffer" << LL_ENDL; mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_Data, compressed_dpbuffer, 0, i, 2048); compressed_dp.assignBuffer(compressed_dpbuffer, uncompressed_length); @@ -505,7 +501,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, << " Flags: " << flags << " Region: " << regionp->getName() << " Region id: " << regionp->getRegionID() << LL_ENDL; - recorder.objectUpdateFailure(local_id, update_type, msg_size); + recorder.objectUpdateFailure(msg_size); continue; } else if ((flags & FLAGS_TEMPORARY_ON_REZ) == 0) @@ -616,7 +612,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (update_type == OUT_TERSE_IMPROVED) { // LL_INFOS() << "terse update for an unknown object (compressed):" << fullid << LL_ENDL; - recorder.objectUpdateFailure(local_id, update_type, msg_size); + recorder.objectUpdateFailure(msg_size); continue; } } @@ -625,7 +621,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (update_type != OUT_FULL) { //LL_INFOS() << "terse update for an unknown object:" << fullid << LL_ENDL; - recorder.objectUpdateFailure(local_id, update_type, msg_size); + recorder.objectUpdateFailure(msg_size); continue; } @@ -638,7 +634,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, { mNumDeadObjectUpdates++; //LL_INFOS() << "update for a dead object:" << fullid << LL_ENDL; - recorder.objectUpdateFailure(local_id, update_type, msg_size); + recorder.objectUpdateFailure(msg_size); continue; } #endif @@ -651,7 +647,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (!objectp) { LL_INFOS() << "createObject failure for object: " << fullid << LL_ENDL; - recorder.objectUpdateFailure(local_id, update_type, msg_size); + recorder.objectUpdateFailure(msg_size); continue; } @@ -681,11 +677,11 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if(!(flags & FLAGS_TEMPORARY_ON_REZ)) { - bCached = true; + bCached = true; LLViewerRegion::eCacheUpdateResult result = objectp->mRegionp->cacheFullUpdate(objectp, compressed_dp, flags); - recorder.cacheFullUpdate(local_id, update_type, result, objectp, msg_size); + recorder.cacheFullUpdate(result); + } } - } #endif } else @@ -696,12 +692,10 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, } processUpdateCore(objectp, user_data, i, update_type, NULL, justCreated); } - recorder.objectUpdateEvent(local_id, update_type, objectp, msg_size); + recorder.objectUpdateEvent(update_type); objectp->setLastUpdateType(update_type); } - recorder.log(0.2f); - LLVOAvatar::cullAvatarsByPixelArea(); } @@ -748,14 +742,14 @@ void LLViewerObjectList::processCachedObjectUpdate(LLMessageSystem *mesgsys, // Lookup data packer and add this id to cache miss lists if necessary. U8 cache_miss_type = LLViewerRegion::CACHE_MISS_TYPE_NONE; - if(!regionp->probeCache(id, crc, flags, cache_miss_type)) - { - // Cache Miss. + if (regionp->probeCache(id, crc, flags, cache_miss_type)) + { // Cache Hit + recorder.cacheHitEvent(); + } + else + { // Cache Miss LL_DEBUGS("ObjectUpdate") << "cache miss for id " << id << " crc " << crc << " miss type " << (S32) cache_miss_type << LL_ENDL; - - recorder.cacheMissEvent(id, update_type, cache_miss_type, msg_size); - - continue; // no data packer, skip this object + recorder.cacheMissEvent(cache_miss_type); } } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index ad7321ca4b..3d1a81694a 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -2618,14 +2618,10 @@ LLVOCacheEntry* LLViewerRegion::getCacheEntry(U32 local_id, bool valid) return NULL; } -void LLViewerRegion::addCacheMiss(U32 id, LLViewerRegion::eCacheMissType miss_type) +void LLViewerRegion::addCacheMiss(U32 id, LLViewerRegion::eCacheMissType cache_miss_type) { mRegionCacheMissCount++; -#if 0 - mCacheMissList.insert(CacheMissItem(id, miss_type)); -#else - mCacheMissList.push_back(CacheMissItem(id, miss_type)); -#endif + mCacheMissList.push_back(CacheMissItem(id, cache_miss_type)); } //check if a non-cacheable object is already created. @@ -2701,10 +2697,10 @@ bool LLViewerRegion::probeCache(U32 local_id, U32 crc, U32 flags, U8 &cache_miss } } else - { + { // Total miss, don't have the object in cache // LL_INFOS() << "Cache miss for " << local_id << LL_ENDL; - addCacheMiss(local_id, CACHE_MISS_TYPE_FULL); - cache_miss_type = CACHE_MISS_TYPE_FULL; + addCacheMiss(local_id, CACHE_MISS_TYPE_TOTAL); + cache_miss_type = CACHE_MISS_TYPE_TOTAL; } return false; @@ -2712,7 +2708,7 @@ bool LLViewerRegion::probeCache(U32 local_id, U32 crc, U32 flags, U8 &cache_miss void LLViewerRegion::addCacheMissFull(const U32 local_id) { - addCacheMiss(local_id, CACHE_MISS_TYPE_FULL); + addCacheMiss(local_id, CACHE_MISS_TYPE_TOTAL); } void LLViewerRegion::requestCacheMisses() @@ -2763,7 +2759,6 @@ void LLViewerRegion::requestCacheMisses() mCacheDirty = TRUE ; // LL_INFOS() << "KILLDEBUG Sent cache miss full " << full_count << " crc " << crc_count << LL_ENDL; LLViewerStatsRecorder::instance().requestCacheMissesEvent(mCacheMissList.size()); - LLViewerStatsRecorder::instance().log(0.2f); mCacheMissList.clear(); } diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 6548e8d372..81371b7f30 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -332,9 +332,9 @@ public: typedef enum { - CACHE_MISS_TYPE_FULL = 0, - CACHE_MISS_TYPE_CRC, - CACHE_MISS_TYPE_NONE + CACHE_MISS_TYPE_TOTAL = 0, // total cache miss - object not in cache + CACHE_MISS_TYPE_CRC, // object in cache, but CRC doesn't match + CACHE_MISS_TYPE_NONE // not a miss: cache hit } eCacheMissType; typedef enum @@ -551,10 +551,10 @@ private: class CacheMissItem { public: - CacheMissItem(U32 id, LLViewerRegion::eCacheMissType miss_type) : mID(id), mType(miss_type){} + CacheMissItem(U32 id, LLViewerRegion::eCacheMissType miss_type) : mID(id), mType(miss_type) {} - U32 mID; //local object id - LLViewerRegion::eCacheMissType mType; //cache miss type + U32 mID; //local object id + LLViewerRegion::eCacheMissType mType; // cache miss type typedef std::list cache_miss_list_t; }; diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp index b5ccf4ffa0..64167135ac 100644 --- a/indra/newview/llviewerstatsrecorder.cpp +++ b/indra/newview/llviewerstatsrecorder.cpp @@ -28,24 +28,25 @@ #include "llviewerstatsrecorder.h" +#include "llcontrol.h" #include "llfile.h" #include "llviewerregion.h" #include "llviewerobject.h" +#include "llworld.h" - -// To do - something using region name or global position -#if LL_WINDOWS - static const std::string STATS_FILE_NAME("C:\\ViewerObjectCacheStats.csv"); -#else - static const std::string STATS_FILE_NAME("/tmp/viewerstats.csv"); -#endif +extern LLControlGroup gSavedSettings; LLViewerStatsRecorder* LLViewerStatsRecorder::sInstance = NULL; LLViewerStatsRecorder::LLViewerStatsRecorder() : - mObjectCacheFile(NULL), + mStatsFile(NULL), mTimer(), - mStartTime(0.0), - mLastSnapshotTime(0.0) + mFileOpenTime(0.0), + mLastSnapshotTime(0.0), + mEnableStatsRecording(false), + mEnableStatsLogging(false), + mInterval(0.2), + mMaxDuration(300.f), + mSkipSaveIfZeros(false) { if (NULL != sInstance) { @@ -57,30 +58,22 @@ LLViewerStatsRecorder::LLViewerStatsRecorder() : LLViewerStatsRecorder::~LLViewerStatsRecorder() { - if (mObjectCacheFile != NULL) + if (mStatsFile) { - // last chance snapshot - writeToLog(0.f); - LLFile::close(mObjectCacheFile); - mObjectCacheFile = NULL; + writeToLog(0.f); // Save last data + closeStatsFile(); } } void LLViewerStatsRecorder::clearStats() { mObjectCacheHitCount = 0; - mObjectCacheHitSize = 0; mObjectCacheMissFullCount = 0; - mObjectCacheMissFullSize = 0; mObjectCacheMissCrcCount = 0; - mObjectCacheMissCrcSize = 0; mObjectFullUpdates = 0; - mObjectFullUpdatesSize = 0; mObjectTerseUpdates = 0; - mObjectTerseUpdatesSize = 0; mObjectCacheMissRequests = 0; mObjectCacheMissResponses = 0; - mObjectCacheMissResponsesSize = 0; mObjectCacheUpdateDupes = 0; mObjectCacheUpdateChanges = 0; mObjectCacheUpdateAdds = 0; @@ -91,45 +84,57 @@ void LLViewerStatsRecorder::clearStats() } -void LLViewerStatsRecorder::recordObjectUpdateFailure(U32 local_id, const EObjectUpdateType update_type, S32 msg_size) +void LLViewerStatsRecorder::enableObjectStatsRecording(bool enable, bool logging /* false */) +{ + mEnableStatsRecording = enable; + + // if logging is stopping, close the file + if (mStatsFile && !logging) + { + writeToLog(0.f); // Save last data + closeStatsFile(); + } + mEnableStatsLogging = logging; +} + + + +void LLViewerStatsRecorder::recordObjectUpdateFailure(S32 msg_size) { mObjectUpdateFailures++; mObjectUpdateFailuresSize += msg_size; } -void LLViewerStatsRecorder::recordCacheMissEvent(U32 local_id, const EObjectUpdateType update_type, U8 cache_miss_type, S32 msg_size) +void LLViewerStatsRecorder::recordCacheMissEvent(U8 cache_miss_type) { - if (LLViewerRegion::CACHE_MISS_TYPE_FULL == cache_miss_type) + if (LLViewerRegion::CACHE_MISS_TYPE_TOTAL == cache_miss_type) { mObjectCacheMissFullCount++; - mObjectCacheMissFullSize += msg_size; } else { mObjectCacheMissCrcCount++; - mObjectCacheMissCrcSize += msg_size; } } -void LLViewerStatsRecorder::recordObjectUpdateEvent(U32 local_id, const EObjectUpdateType update_type, LLViewerObject * objectp, S32 msg_size) + +void LLViewerStatsRecorder::recordCacheHitEvent() +{ + mObjectCacheHitCount++; +} + +void LLViewerStatsRecorder::recordObjectUpdateEvent(const EObjectUpdateType update_type) { - switch (update_type) + switch (update_type) { case OUT_FULL: mObjectFullUpdates++; - mObjectFullUpdatesSize += msg_size; break; case OUT_TERSE_IMPROVED: mObjectTerseUpdates++; - mObjectTerseUpdatesSize += msg_size; break; case OUT_FULL_COMPRESSED: mObjectCacheMissResponses++; - mObjectCacheMissResponsesSize += msg_size; - break; - case OUT_FULL_CACHED: - mObjectCacheHitCount++; - mObjectCacheHitSize += msg_size; break; default: LL_WARNS() << "Unknown update_type" << LL_ENDL; @@ -137,9 +142,9 @@ void LLViewerStatsRecorder::recordObjectUpdateEvent(U32 local_id, const EObjectU }; } -void LLViewerStatsRecorder::recordCacheFullUpdate(U32 local_id, const EObjectUpdateType update_type, LLViewerRegion::eCacheUpdateResult update_result, LLViewerObject* objectp, S32 msg_size) +void LLViewerStatsRecorder::recordCacheFullUpdate(LLViewerRegion::eCacheUpdateResult update_result) { - switch (update_result) + switch (update_result) { case LLViewerRegion::CACHE_UPDATE_DUPE: mObjectCacheUpdateDupes++; @@ -154,7 +159,7 @@ void LLViewerStatsRecorder::recordCacheFullUpdate(U32 local_id, const EObjectUpd mObjectCacheUpdateReplacements++; break; default: - LL_WARNS() << "Unknown update_result type" << LL_ENDL; + LL_WARNS() << "Unknown update_result type " << (S32) update_result << LL_ENDL; break; }; } @@ -166,14 +171,30 @@ void LLViewerStatsRecorder::recordRequestCacheMissesEvent(S32 count) void LLViewerStatsRecorder::writeToLog( F32 interval ) { + if (!mEnableStatsLogging || !mEnableStatsRecording) + { + return; + } + size_t data_size = 0; - F64 delta_time = LLTimer::getTotalSeconds() - mLastSnapshotTime; - S32 total_objects = mObjectCacheHitCount + mObjectCacheMissCrcCount + mObjectCacheMissFullCount + mObjectFullUpdates + mObjectTerseUpdates + mObjectCacheMissRequests + mObjectCacheMissResponses + mObjectCacheUpdateDupes + mObjectCacheUpdateChanges + mObjectCacheUpdateAdds + mObjectCacheUpdateReplacements + mObjectUpdateFailures; + F64 delta_time = LLFrameTimer::getTotalSeconds() - mLastSnapshotTime; + if (delta_time < interval) + return; - if ( delta_time < interval || total_objects == 0) return; + if (mSkipSaveIfZeros) + { + S32 total_events = mObjectCacheHitCount + mObjectCacheMissCrcCount + mObjectCacheMissFullCount + mObjectFullUpdates + + mObjectTerseUpdates + mObjectCacheMissRequests + mObjectCacheMissResponses + mObjectCacheUpdateDupes + + mObjectCacheUpdateChanges + mObjectCacheUpdateAdds + mObjectCacheUpdateReplacements + mObjectUpdateFailures; + if (total_events == 0) + { + LL_DEBUGS("ILXZeroData") << "ILX: not saving zero data" << LL_ENDL; + return; + } + } - mLastSnapshotTime = LLTimer::getTotalSeconds(); - LL_DEBUGS() << "ILX: " + mLastSnapshotTime = LLFrameTimer::getTotalSeconds(); + LL_DEBUGS("ILX") << "ILX: " << mObjectCacheHitCount << " hits, " << mObjectCacheMissFullCount << " full misses, " << mObjectCacheMissCrcCount << " crc misses, " @@ -188,84 +209,124 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << mObjectUpdateFailures << " update failures" << LL_ENDL; - if (mObjectCacheFile == NULL) + if (mStatsFile == NULL) { - mStartTime = LLTimer::getTotalSeconds(); - mObjectCacheFile = LLFile::fopen(STATS_FILE_NAME, "wb"); - if (mObjectCacheFile) - { // Write column headers - std::ostringstream data_msg; - data_msg << "EventTime(ms)\t" - << "Cache Hits\t" - << "Cache Full Misses\t" - << "Cache Crc Misses\t" - << "Full Updates\t" - << "Terse Updates\t" - << "Cache Miss Requests\t" - << "Cache Miss Responses\t" - << "Cache Update Dupes\t" - << "Cache Update Changes\t" - << "Cache Update Adds\t" - << "Cache Update Replacements\t" - << "Update Failures\t" - << "Cache Hits bps\t" - << "Cache Full Misses bps\t" - << "Cache Crc Misses bps\t" - << "Full Updates bps\t" - << "Terse Updates bps\t" - << "Cache Miss Responses bps\t" - << "Texture Fetch bps\t" - << "\n"; - - data_size = data_msg.str().size(); - if (fwrite(data_msg.str().c_str(), 1, data_size, mObjectCacheFile ) != data_size) + // Refresh settings + mInterval = gSavedSettings.getF32("StatsReportFileInterval"); + mSkipSaveIfZeros = gSavedSettings.getBOOL("StatsReportSkipZeroDataSaves"); + mMaxDuration = gSavedSettings.getF32("StatsReportMaxDuration"); + + // Open the data file + makeStatsFileName(); + mStatsFile = LLFile::fopen(mStatsFileName, "wb"); + + if (mStatsFile) + { + LL_INFOS("ILX") << "ILX: Writing update information to " << mStatsFileName << LL_ENDL; + + mFileOpenTime = LLFrameTimer::getTotalSeconds(); + + // Write column headers + std::ostringstream col_headers; + col_headers << "Time (sec)," + << "Regions," + << "Active Cached Objects," + << "Cache Hits," + << "Cache Full Misses," + << "Cache Crc Misses," + << "Full Updates," + << "Terse Updates," + << "Cache Miss Requests," + << "Cache Miss Responses," + << "Cache Update Dupes," + << "Cache Update Changes," + << "Cache Update Adds," + << "Cache Update Replacements," + << "Update Failures," + << "Texture Fetch bps," + << "\n"; + + data_size = col_headers.str().size(); + if (fwrite(col_headers.str().c_str(), 1, data_size, mStatsFile ) != data_size) { - LL_WARNS() << "failed to write full headers to " << STATS_FILE_NAME << LL_ENDL; + LL_WARNS() << "failed to write full headers to " << mStatsFileName << LL_ENDL; } } else - { - //LL_WARNS() << "Couldn't open " << STATS_FILE_NAME << " for logging." << LL_ENDL; + { // Failed to open file + LL_WARNS() << "Couldn't open " << mStatsFileName << " for logging, turning off stats recording." << LL_ENDL; + mEnableStatsLogging = false; return; } } - std::ostringstream data_msg; - - data_msg << getTimeSinceStart() - << "\t " << mObjectCacheHitCount - << "\t" << mObjectCacheMissFullCount - << "\t" << mObjectCacheMissCrcCount - << "\t" << mObjectFullUpdates - << "\t" << mObjectTerseUpdates - << "\t" << mObjectCacheMissRequests - << "\t" << mObjectCacheMissResponses - << "\t" << mObjectCacheUpdateDupes - << "\t" << mObjectCacheUpdateChanges - << "\t" << mObjectCacheUpdateAdds - << "\t" << mObjectCacheUpdateReplacements - << "\t" << mObjectUpdateFailures - << "\t" << (mObjectCacheHitSize * 8 / delta_time) - << "\t" << (mObjectCacheMissFullSize * 8 / delta_time) - << "\t" << (mObjectCacheMissCrcSize * 8 / delta_time) - << "\t" << (mObjectFullUpdatesSize * 8 / delta_time) - << "\t" << (mObjectTerseUpdatesSize * 8 / delta_time) - << "\t" << (mObjectCacheMissResponsesSize * 8 / delta_time) - << "\t" << (mTextureFetchSize * 8 / delta_time) + std::ostringstream stats_data; + + stats_data << getTimeSinceStart() + << "," << LLWorld::getInstance()->getRegionList().size() + << "," << LLWorld::getInstance()->getNumOfActiveCachedObjects() + << "," << mObjectCacheHitCount + << "," << mObjectCacheMissFullCount + << "," << mObjectCacheMissCrcCount + << "," << mObjectFullUpdates + << "," << mObjectTerseUpdates + << "," << mObjectCacheMissRequests + << "," << mObjectCacheMissResponses + << "," << mObjectCacheUpdateDupes + << "," << mObjectCacheUpdateChanges + << "," << mObjectCacheUpdateAdds + << "," << mObjectCacheUpdateReplacements + << "," << mObjectUpdateFailures + << "," << (mTextureFetchSize * 8 / delta_time) << "\n"; - data_size = data_msg.str().size(); - if ( data_size != fwrite(data_msg.str().c_str(), 1, data_size, mObjectCacheFile )) + data_size = stats_data.str().size(); + if ( data_size != fwrite(stats_data.str().c_str(), 1, data_size, mStatsFile )) { - LL_WARNS() << "Unable to write complete column data to " << STATS_FILE_NAME << LL_ENDL; - } + LL_WARNS() << "Unable to write complete column data to " << mStatsFileName << LL_ENDL; + closeStatsFile(); + } clearStats(); + + if (getTimeSinceStart() >= mMaxDuration) + { // If file recording has been running for too long, stop it. + closeStatsFile(); + } +} + +void LLViewerStatsRecorder::closeStatsFile() +{ + if (mStatsFile) + { + LL_INFOS("ILX") << "ILX: Stopped writing update information to " << mStatsFileName << " after " << getTimeSinceStart() + << " seconds." << LL_ENDL; + LLFile::close(mStatsFile); + mStatsFile = NULL; + } + mEnableStatsLogging = false; +} + +void LLViewerStatsRecorder::makeStatsFileName() +{ + // Create filename - tbd: use pid? +#if LL_WINDOWS + std::string stats_file_name("SLViewerStats-"); +#else + std::string stats_file_name("slviewerstats-"); +#endif + + F64 now = LLFrameTimer::getTotalSeconds(); + std::string date_str = LLDate(now).asString(); + std::replace(date_str.begin(), date_str.end(), ':', '-'); // Make it valid for a filename + stats_file_name.append(date_str); + stats_file_name.append(".csv"); + mStatsFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, stats_file_name); } F32 LLViewerStatsRecorder::getTimeSinceStart() { - return (F32) (LLTimer::getTotalSeconds() - mStartTime); + return (F32) (LLFrameTimer::getTotalSeconds() - mFileOpenTime); } void LLViewerStatsRecorder::recordTextureFetch( S32 msg_size ) diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h index c974bea49d..90f8ca8742 100644 --- a/indra/newview/llviewerstatsrecorder.h +++ b/indra/newview/llviewerstatsrecorder.h @@ -31,10 +31,6 @@ // This is a diagnostic class used to record information from the viewer // for analysis. -// This is normally 0. Set to 1 to enable viewer stats recording -#define LL_RECORD_VIEWER_STATS 0 - - #include "llframetimer.h" #include "llviewerobject.h" #include "llviewerregion.h" @@ -49,86 +45,111 @@ class LLViewerStatsRecorder : public LLSingleton ~LLViewerStatsRecorder(); public: - void objectUpdateFailure(U32 local_id, const EObjectUpdateType update_type, S32 msg_size) - { -#if LL_RECORD_VIEWER_STATS - recordObjectUpdateFailure(local_id, update_type, msg_size); -#endif + // Enable/disable stats recording. This is broken down into two + // flags so we can record stats without writing them to the log + // file. This is useful to analyzing updates for scene loading. + void enableObjectStatsRecording(bool enable, bool logging = false); + + bool isEnabled() const { return mEnableStatsRecording; } + bool isLogging() const { return mEnableStatsLogging; } + + void objectUpdateFailure(S32 msg_size) + { + if (mEnableStatsRecording) + { + recordObjectUpdateFailure(msg_size); + } } - void cacheMissEvent(U32 local_id, const EObjectUpdateType update_type, U8 cache_miss_type, S32 msg_size) + void cacheMissEvent(U8 cache_miss_type) { -#if LL_RECORD_VIEWER_STATS - recordCacheMissEvent(local_id, update_type, cache_miss_type, msg_size); -#endif + if (mEnableStatsRecording) + { + recordCacheMissEvent(cache_miss_type); + } + } + + void cacheHitEvent() + { + if (mEnableStatsRecording) + { + recordCacheHitEvent(); + } + } + + void objectUpdateEvent(const EObjectUpdateType update_type) + { + if (mEnableStatsRecording) + { + recordObjectUpdateEvent(update_type); + } } - void objectUpdateEvent(U32 local_id, const EObjectUpdateType update_type, LLViewerObject * objectp, S32 msg_size) - { -#if LL_RECORD_VIEWER_STATS - recordObjectUpdateEvent(local_id, update_type, objectp, msg_size); -#endif - } - - void cacheFullUpdate(U32 local_id, const EObjectUpdateType update_type, LLViewerRegion::eCacheUpdateResult update_result, LLViewerObject* objectp, S32 msg_size) - { -#if LL_RECORD_VIEWER_STATS - recordCacheFullUpdate(local_id, update_type, update_result, objectp, msg_size); -#endif + void cacheFullUpdate(LLViewerRegion::eCacheUpdateResult update_result) + { + if (mEnableStatsRecording) + { + recordCacheFullUpdate(update_result); + } } void requestCacheMissesEvent(S32 count) { -#if LL_RECORD_VIEWER_STATS - recordRequestCacheMissesEvent(count); -#endif + if (mEnableStatsRecording) + { + recordRequestCacheMissesEvent(count); + } } void textureFetch(S32 msg_size) { -#if LL_RECORD_VIEWER_STATS - recordTextureFetch(msg_size); -#endif + if (mEnableStatsRecording) + { + recordTextureFetch(msg_size); + } } - void log(F32 interval) + void idle() { -#if LL_RECORD_VIEWER_STATS - writeToLog(interval); -#endif + writeToLog(mInterval); } F32 getTimeSinceStart(); private: - void recordObjectUpdateFailure(U32 local_id, const EObjectUpdateType update_type, S32 msg_size); - void recordCacheMissEvent(U32 local_id, const EObjectUpdateType update_type, U8 cache_miss_type, S32 msg_size); - void recordObjectUpdateEvent(U32 local_id, const EObjectUpdateType update_type, LLViewerObject * objectp, S32 msg_size); - void recordCacheFullUpdate(U32 local_id, const EObjectUpdateType update_type, LLViewerRegion::eCacheUpdateResult update_result, LLViewerObject* objectp, S32 msg_size); + void recordObjectUpdateFailure(S32 msg_size); + void recordCacheMissEvent(U8 cache_miss_type); + void recordCacheHitEvent(); + void recordObjectUpdateEvent(const EObjectUpdateType update_type); + void recordCacheFullUpdate(LLViewerRegion::eCacheUpdateResult update_result); void recordRequestCacheMissesEvent(S32 count); void recordTextureFetch(S32 msg_size); void writeToLog(F32 interval); + void closeStatsFile(); + void makeStatsFileName(); static LLViewerStatsRecorder* sInstance; - LLFILE * mObjectCacheFile; // File to write data into + LLFILE * mStatsFile; // File to write data into + std::string mStatsFileName; + LLFrameTimer mTimer; - F64 mStartTime; + F64 mFileOpenTime; F64 mLastSnapshotTime; + F32 mInterval; // Interval between data log writes + F32 mMaxDuration; // Time limit on file + + bool mEnableStatsRecording; // Set to true to enable recording stats data + bool mEnableStatsLogging; // Set true to write stats to log file + bool mSkipSaveIfZeros; // Set true to skip saving stats if all values are zero S32 mObjectCacheHitCount; - S32 mObjectCacheHitSize; S32 mObjectCacheMissFullCount; - S32 mObjectCacheMissFullSize; S32 mObjectCacheMissCrcCount; - S32 mObjectCacheMissCrcSize; S32 mObjectFullUpdates; - S32 mObjectFullUpdatesSize; S32 mObjectTerseUpdates; - S32 mObjectTerseUpdatesSize; S32 mObjectCacheMissRequests; S32 mObjectCacheMissResponses; - S32 mObjectCacheMissResponsesSize; S32 mObjectCacheUpdateDupes; S32 mObjectCacheUpdateChanges; S32 mObjectCacheUpdateAdds; @@ -137,9 +158,7 @@ private: S32 mObjectUpdateFailuresSize; S32 mTextureFetchSize; - void clearStats(); }; #endif // LLVIEWERSTATSRECORDER_H - diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index f72d1f0bf9..d78ebf17e3 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3463,14 +3463,24 @@ function="World.EnvPreset" - - - - + + + + + + + Date: Tue, 9 May 2023 17:16:26 +0100 Subject: SL-19676 - more update and scene loading stats. Added texture and mesh count --- indra/newview/llmeshrepository.cpp | 3 +++ indra/newview/lltexturefetch.cpp | 8 +++++++- indra/newview/llviewerstatsrecorder.cpp | 19 +++++++++++++------ indra/newview/llviewerstatsrecorder.h | 18 ++++++++++++++---- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index f937754368..e2fb218b1b 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -56,6 +56,7 @@ #include "llviewermessage.h" #include "llviewerobjectlist.h" #include "llviewerregion.h" +#include "llviewerstatsrecorder.h" #include "llviewertexturelist.h" #include "llvolume.h" #include "llvolumemgr.h" @@ -4089,6 +4090,8 @@ void LLMeshRepository::notifyMeshLoaded(const LLVolumeParams& mesh_params, LLVol } mLoadingMeshes[detail].erase(obj_iter); + + LLViewerStatsRecorder::instance().meshLoaded(); } } diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index b0d6a5d466..eea56af0ae 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -2183,7 +2183,6 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response, LL_DEBUGS(LOG_TXT) << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL; if (data_size > 0) { - LLViewerStatsRecorder::instance().textureFetch(data_size); // *TODO: set the formatted image data here directly to avoid the copy // Hold on to body for later copy @@ -2249,6 +2248,13 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response, mHaveAllData = TRUE; } mRequestedSize = data_size; + + if (mHaveAllData) + { + LLViewerStatsRecorder::instance().textureFetch(); + } + + // *TODO: set the formatted image data here directly to avoid the copy } else { diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp index 64167135ac..f95a960186 100644 --- a/indra/newview/llviewerstatsrecorder.cpp +++ b/indra/newview/llviewerstatsrecorder.cpp @@ -80,7 +80,8 @@ void LLViewerStatsRecorder::clearStats() mObjectCacheUpdateReplacements = 0; mObjectUpdateFailures = 0; mObjectUpdateFailuresSize = 0; - mTextureFetchSize = 0; + mTextureFetchCount = 0; + mMeshLoadedCount = 0; } @@ -243,8 +244,9 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "Cache Update Adds," << "Cache Update Replacements," << "Update Failures," - << "Texture Fetch bps," - << "\n"; + << "Texture Count," + << "Mesh Load Count," + << "\n"; data_size = col_headers.str().size(); if (fwrite(col_headers.str().c_str(), 1, data_size, mStatsFile ) != data_size) @@ -277,7 +279,8 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "," << mObjectCacheUpdateAdds << "," << mObjectCacheUpdateReplacements << "," << mObjectUpdateFailures - << "," << (mTextureFetchSize * 8 / delta_time) + << "," << mTextureFetchCount + << "," << mMeshLoadedCount << "\n"; data_size = stats_data.str().size(); @@ -329,10 +332,14 @@ F32 LLViewerStatsRecorder::getTimeSinceStart() return (F32) (LLFrameTimer::getTotalSeconds() - mFileOpenTime); } -void LLViewerStatsRecorder::recordTextureFetch( S32 msg_size ) +void LLViewerStatsRecorder::recordTextureFetch() { - mTextureFetchSize += msg_size; + mTextureFetchCount += 1; } +void LLViewerStatsRecorder::recordMeshLoaded() +{ + mMeshLoadedCount += 1; +} diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h index 90f8ca8742..37c08a51cf 100644 --- a/indra/newview/llviewerstatsrecorder.h +++ b/indra/newview/llviewerstatsrecorder.h @@ -101,14 +101,22 @@ class LLViewerStatsRecorder : public LLSingleton } } - void textureFetch(S32 msg_size) + void textureFetch() { if (mEnableStatsRecording) { - recordTextureFetch(msg_size); + recordTextureFetch(); } } + void meshLoaded() + { + if (mEnableStatsRecording) + { + recordMeshLoaded(); + } + } + void idle() { writeToLog(mInterval); @@ -123,7 +131,8 @@ private: void recordObjectUpdateEvent(const EObjectUpdateType update_type); void recordCacheFullUpdate(LLViewerRegion::eCacheUpdateResult update_result); void recordRequestCacheMissesEvent(S32 count); - void recordTextureFetch(S32 msg_size); + void recordTextureFetch(); + void recordMeshLoaded(); void writeToLog(F32 interval); void closeStatsFile(); void makeStatsFileName(); @@ -156,7 +165,8 @@ private: S32 mObjectCacheUpdateReplacements; S32 mObjectUpdateFailures; S32 mObjectUpdateFailuresSize; - S32 mTextureFetchSize; + S32 mTextureFetchCount; + S32 mMeshLoadedCount; void clearStats(); }; -- cgit v1.2.3 From 4173cae02165e36d96638761f29bd6d00ac24ddc Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 11 May 2023 01:16:42 +0100 Subject: sl-19676 - more loading stats and 360 Interest List mode work --- indra/newview/app_settings/settings.xml | 11 ----- indra/newview/llagent.cpp | 76 +++++++++++++++++++----------- indra/newview/llagent.h | 5 ++ indra/newview/llfloater360capture.cpp | 66 +++++--------------------- indra/newview/llfloater360capture.h | 4 +- indra/newview/llviewermenu.cpp | 59 +++--------------------- indra/newview/llviewermessage.cpp | 36 ++++++++------- indra/newview/llviewerobjectlist.cpp | 12 ++--- indra/newview/llviewerregion.cpp | 82 ++++++++++++++++++++++++++++++++- indra/newview/llviewerregion.h | 18 ++++++++ indra/newview/llviewerstatsrecorder.cpp | 56 +++++++--------------- indra/newview/llviewerstatsrecorder.h | 28 +++++------ 12 files changed, 231 insertions(+), 222 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9f2d6f746d..775ddb0571 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -16964,17 +16964,6 @@ Value 0 - 360CaptureUseInterestListCap - - Comment - Flag if set, uses the new InterestList cap to ask the simulator for full content - Persist - 1 - Type - Boolean - Value - 1 - 360CaptureJPEGEncodeQuality Comment diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 8cc9be7244..89d4df7caa 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -401,6 +401,7 @@ LLAgent::LLAgent() : mHttpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID), mTeleportState(TELEPORT_NONE), mRegionp(NULL), + mUse360Mode(false), mAgentOriginGlobal(), mPositionGlobal(), @@ -894,11 +895,20 @@ boost::signals2::connection LLAgent::addParcelChangedCallback(parcel_changed_cal // static void LLAgent::capabilityReceivedCallback(const LLUUID ®ion_id, LLViewerRegion *regionp) -{ - if (regionp && regionp->getRegionID() == region_id) +{ // Changed regions and now have the region capabilities + if (regionp) { - regionp->requestSimulatorFeatures(); - LLAppViewer::instance()->updateNameLookupUrl(regionp); + if (regionp->getRegionID() == region_id) + { + regionp->requestSimulatorFeatures(); + LLAppViewer::instance()->updateNameLookupUrl(regionp); + } + + if (gAgent.getInterestList360Mode()) + { + const bool use_360_mode = true; + gAgent.changeInterestListMode(use_360_mode); + } } } @@ -2910,39 +2920,53 @@ void LLAgent::processMaturityPreferenceFromServer(const LLSD &result, U8 perferr handlePreferredMaturityResult(maturity); } - -bool LLAgent::requestPostCapability(const std::string &capName, LLSD &postData, httpCallback_t cbSuccess, httpCallback_t cbFailure) -{ - if (!getRegion()) +// Using a new capability, tell the simulator that we want it to send everything +// it knows about and not just what is in front of the camera, in its view +// frustum. We need this feature so that the contents of the region that appears +// in the 6 snapshots which we cannot see and is normally not "considered", is +// also rendered. Typically, this is turned on when the 360 capture floater is +// opened and turned off when it is closed. +// Note: for this version, we do not have a way to determine when "everything" +// has arrived and has been rendered so for now, the proposal is that users +// will need to experiment with the low resolution version and wait for some +// (hopefully) small period of time while the full contents resolves. +// Pass in a flag to ask the simulator/interest list to "send everything" or +// not (the default mode) +void LLAgent::changeInterestListMode(bool use_360_mode) +{ + mUse360Mode = use_360_mode; + + // Change interest list mode for all regions. If they are already set for the current mode, + // the setting will have no effect. + for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); + iter != LLWorld::getInstance()->getRegionList().end(); + ++iter) { - return false; + LLViewerRegion *regionp = *iter; + if (regionp && regionp->isAlive() && regionp->capabilitiesReceived()) + { + regionp->setInterestList360Mode(mUse360Mode); + } } - std::string url = getRegion()->getCapability(capName); +} - if (url.empty()) + +bool LLAgent::requestPostCapability(const std::string &capName, LLSD &postData, httpCallback_t cbSuccess, httpCallback_t cbFailure) +{ + if (getRegion()) { - LL_WARNS("Agent") << "Could not retrieve region capability \"" << capName << "\"" << LL_ENDL; - return false; + return getRegion()->requestPostCapability(capName, postData, cbSuccess, cbFailure); } - - LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpPost(url, mHttpPolicy, postData, cbSuccess, cbFailure); - return true; + return false; } bool LLAgent::requestGetCapability(const std::string &capName, httpCallback_t cbSuccess, httpCallback_t cbFailure) { - std::string url; - - url = getRegionCapability(capName); - - if (url.empty()) + if (getRegion()) { - LL_WARNS("Agent") << "Could not retrieve region capability \"" << capName << "\"" << LL_ENDL; - return false; + return getRegion()->requestGetCapability(capName, cbSuccess, cbFailure); } - - LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet(url, mHttpPolicy, cbSuccess, cbFailure); - return true; + return false; } BOOL LLAgent::getAdminOverride() const diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 498bea3c07..ef8df13fc6 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -294,9 +294,14 @@ public: boost::signals2::connection addRegionChangedCallback(const region_changed_signal_t::slot_type& cb); void removeRegionChangedCallback(boost::signals2::connection callback); + + void changeInterestListMode(bool use_360_mode); + bool getInterestList360Mode() const { return mUse360Mode; } + private: LLViewerRegion *mRegionp; region_changed_signal_t mRegionChangedSignal; + bool mUse360Mode; //-------------------------------------------------------------------- // History diff --git a/indra/newview/llfloater360capture.cpp b/indra/newview/llfloater360capture.cpp index 9c25cdbc7d..a0889abe2d 100644 --- a/indra/newview/llfloater360capture.cpp +++ b/indra/newview/llfloater360capture.cpp @@ -64,12 +64,11 @@ LLFloater360Capture::LLFloater360Capture(const LLSD& key) // such time as we ask it not to (the dtor). If we crash or // otherwise, exit before this is turned off, the Simulator // will take care of cleaning up for us. - if (gSavedSettings.getBOOL("360CaptureUseInterestListCap")) - { - // send everything to us for as long as this floater is open - const bool send_everything = true; - changeInterestListMode(send_everything); - } + mWasIn360Mode = gAgent.getInterestList360Mode(); + + // send everything to us for as long as this floater is open + const bool use_360_mode = true; + gAgent.changeInterestListMode(use_360_mode); } LLFloater360Capture::~LLFloater360Capture() @@ -81,13 +80,15 @@ LLFloater360Capture::~LLFloater360Capture() mWebBrowser->unloadMediaSource(); } - // Tell the Simulator not to send us everything anymore - // and revert to the regular "keyhole" frustum of interest + // Restore interest list mode to the state when started + // Normally LLFloater360Capture tells the Simulator send everything + // and now reverts to the regular "keyhole" frustum of interest // list updates. - if (!LLApp::isExiting() && gSavedSettings.getBOOL("360CaptureUseInterestListCap")) + if (!LLApp::isExiting() && + gSavedSettings.getBOOL("360CaptureUseInterestListCap") && + mWasIn360Mode != gAgent.getInterestList360Mode()) { - const bool send_everything = false; - changeInterestListMode(send_everything); + gAgent.changeInterestListMode(mWasIn360Mode); } } @@ -170,49 +171,6 @@ void LLFloater360Capture::onChooseQualityRadioGroup() setSourceImageSize(); } -// Using a new capability, tell the simulator that we want it to send everything -// it knows about and not just what is in front of the camera, in its view -// frustum. We need this feature so that the contents of the region that appears -// in the 6 snapshots which we cannot see and is normally not "considered", is -// also rendered. Typically, this is turned on when the 360 capture floater is -// opened and turned off when it is closed. -// Note: for this version, we do not have a way to determine when "everything" -// has arrived and has been rendered so for now, the proposal is that users -// will need to experiment with the low resolution version and wait for some -// (hopefully) small period of time while the full contents resolves. -// Pass in a flag to ask the simulator/interest list to "send everything" or -// not (the default mode) -void LLFloater360Capture::changeInterestListMode(bool send_everything) -{ - LLSD body; - - if (send_everything) - { - body["mode"] = LLSD::String("360"); - } - else - { - body["mode"] = LLSD::String("default"); - } - - if (gAgent.requestPostCapability("InterestList", body, [](const LLSD & response) - { - LL_DEBUGS("360Capture") << "InterestList capability responded: \n" << - ll_pretty_print_sd(response) << - LL_ENDL; - })) - { - LL_DEBUGS("360Capture") << "Successfully posted an InterestList capability request with payload: \n" << - ll_pretty_print_sd(body) << - LL_ENDL; - } - else - { - LL_WARNS("360Capture") << "Unable to post an InterestList capability request with payload: \n" << - ll_pretty_print_sd(body) << - LL_ENDL; - } -} // There is is a setting (360CaptureSourceImageSize) that holds the size // (width == height since it's a square) of each of the 6 source snapshots. diff --git a/indra/newview/llfloater360capture.h b/indra/newview/llfloater360capture.h index 8f765c0b1b..61316c65f3 100644 --- a/indra/newview/llfloater360capture.h +++ b/indra/newview/llfloater360capture.h @@ -50,8 +50,6 @@ class LLFloater360Capture: void onOpen(const LLSD& key) override; void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) override; - void changeInterestListMode(bool send_everything); - const std::string getHTMLBaseFolder(); void capture360Images(); @@ -93,6 +91,8 @@ class LLFloater360Capture: std::string mImageSaveDir; LLPointer mRawImages[6]; + + bool mWasIn360Mode; }; #endif // LL_FLOATER_360CAPTURE_H diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d1b240d2c4..23abd0fe16 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1301,65 +1301,18 @@ class LLAdvancedToggleInterestList360Mode : public view_listener_t public: bool handleEvent(const LLSD &userdata) { - LLSD request; - LLSD body; - - // First do a GET to report on current mode and update stats - if (gAgent.requestGetCapability("InterestList", - [](const LLSD &response) { - LL_DEBUGS("360Capture") << "InterestList capability GET responded: \n" - << ll_pretty_print_sd(response) << LL_ENDL; - })) - { - LL_DEBUGS("360Capture") << "Successful GET InterestList capability request with return body: \n" - << ll_pretty_print_sd(body) << LL_ENDL; - } - else - { - LL_WARNS("360Capture") << "Unable to GET InterestList capability request with return body: \n" - << ll_pretty_print_sd(body) << LL_ENDL; - } - - // Now do a POST to change the mode - if (sUsing360) - { - body["mode"] = LLSD::String("default"); - } - else - { - body["mode"] = LLSD::String("360"); - } - sUsing360 = !sUsing360; - LL_INFOS("360Capture") << "Setting InterestList capability mode to " << body["mode"].asString() << LL_ENDL; - - if (gAgent.requestPostCapability("InterestList", body, - [](const LLSD &response) { - LL_DEBUGS("360Capture") << "InterestList capability responded: \n" - << ll_pretty_print_sd(response) << LL_ENDL; - })) - { - LL_DEBUGS("360Capture") << "Successfully posted an InterestList capability request with payload: \n" - << ll_pretty_print_sd(body) << LL_ENDL; - return true; - } - else - { - LL_DEBUGS("360Capture") << "Unable to post an InterestList capability request with payload: \n" - << ll_pretty_print_sd(body) << LL_ENDL; - return false; - } - }; - - static bool sUsing360; + // Toggle the mode - regions will get updated + bool new_mode = !gAgent.getInterestList360Mode(); + gAgent.changeInterestListMode(new_mode); + return true; + } }; -bool LLAdvancedToggleInterestList360Mode::sUsing360 = false; - class LLAdvancedCheckInterestList360Mode : public view_listener_t { bool handleEvent(const LLSD& userdata) { - return LLAdvancedToggleInterestList360Mode::sUsing360; + return gAgent.getInterestList360Mode(); } }; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index a60f11d97b..ef83fa161b 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -99,6 +99,7 @@ #include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" #include "llviewerstats.h" +#include "llviewerstatsrecorder.h" #include "llviewertexteditor.h" #include "llviewerthrottle.h" #include "llviewerwindow.h" @@ -3759,31 +3760,34 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data) continue; } - LLViewerObject *objectp = gObjectList.findObject(id); - if (objectp) + LLViewerObject *objectp = gObjectList.findObject(id); + if (objectp) + { + // Display green bubble on kill + if ( gShowObjectUpdates ) { - // Display green bubble on kill - if ( gShowObjectUpdates ) - { - LLColor4 color(0.f,1.f,0.f,1.f); - gPipeline.addDebugBlip(objectp->getPositionAgent(), color); - LL_DEBUGS("MessageBlip") << "Kill blip for local " << local_id << " at " << objectp->getPositionAgent() << LL_ENDL; - } - - // Do the kill - gObjectList.killObject(objectp); + LLColor4 color(0.f,1.f,0.f,1.f); + gPipeline.addDebugBlip(objectp->getPositionAgent(), color); + LL_DEBUGS("MessageBlip") << "Kill blip for local " << local_id << " at " << objectp->getPositionAgent() << LL_ENDL; } - if(delete_object) - { - regionp->killCacheEntry(local_id); + // Do the kill + gObjectList.killObject(objectp); + } + + if(delete_object) + { + regionp->killCacheEntry(local_id); } // We should remove the object from selection after it is marked dead by gObjectList to make LLToolGrab, // which is using the object, release the mouse capture correctly when the object dies. // See LLToolGrab::handleHoverActive() and LLToolGrab::handleHoverNonPhysical(). LLSelectMgr::getInstance()->removeObjectFromSelections(id); - } + + } // end for loop + + LLViewerStatsRecorder::instance().recordObjectKills(num_objects); } void process_time_synch(LLMessageSystem *mesgsys, void **user_data) diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 0c9e929cf3..5f0e331baa 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -369,7 +369,7 @@ LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry* if (!objectp) { LL_INFOS() << "createObject failure for object: " << fullid << LL_ENDL; - recorder.objectUpdateFailure(0); + recorder.objectUpdateFailure(); return NULL; } justCreated = true; @@ -501,7 +501,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, << " Flags: " << flags << " Region: " << regionp->getName() << " Region id: " << regionp->getRegionID() << LL_ENDL; - recorder.objectUpdateFailure(msg_size); + recorder.objectUpdateFailure(); continue; } else if ((flags & FLAGS_TEMPORARY_ON_REZ) == 0) @@ -612,7 +612,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (update_type == OUT_TERSE_IMPROVED) { // LL_INFOS() << "terse update for an unknown object (compressed):" << fullid << LL_ENDL; - recorder.objectUpdateFailure(msg_size); + recorder.objectUpdateFailure(); continue; } } @@ -621,7 +621,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (update_type != OUT_FULL) { //LL_INFOS() << "terse update for an unknown object:" << fullid << LL_ENDL; - recorder.objectUpdateFailure(msg_size); + recorder.objectUpdateFailure(); continue; } @@ -634,7 +634,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, { mNumDeadObjectUpdates++; //LL_INFOS() << "update for a dead object:" << fullid << LL_ENDL; - recorder.objectUpdateFailure(msg_size); + recorder.objectUpdateFailure(); continue; } #endif @@ -647,7 +647,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (!objectp) { LL_INFOS() << "createObject failure for object: " << fullid << LL_ENDL; - recorder.objectUpdateFailure(msg_size); + recorder.objectUpdateFailure(); continue; } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 54d787366f..7abd77505d 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -646,7 +646,8 @@ LLViewerRegion::LLViewerRegion(const U64 &handle, mInvisibilityCheckHistory(-1), mPaused(FALSE), mRegionCacheHitCount(0), - mRegionCacheMissCount(0) + mRegionCacheMissCount(0), + mUse360Mode(false) { mWidth = region_width_meters; mImpl->mOriginGlobal = from_region_handle(handle); @@ -3283,6 +3284,9 @@ void LLViewerRegion::setCapabilitiesReceived(bool received) // This is a single-shot signal. Forget callbacks to save resources. mCapabilitiesReceivedSignal.disconnect_all_slots(); + + // Set the region to the desired interest list mode + setInterestList360Mode(gAgent.getInterestList360Mode()); } } @@ -3301,6 +3305,82 @@ void LLViewerRegion::logActiveCapabilities() const log_capabilities(mImpl->mCapabilities); } + +bool LLViewerRegion::requestPostCapability(const std::string &capName, LLSD &postData, httpCallback_t cbSuccess, httpCallback_t cbFailure) +{ + std::string url = getCapability(capName); + + if (url.empty()) + { + LL_WARNS("Region") << "Could not retrieve region " << getRegionID() + << " POST capability \"" << capName << "\"" << LL_ENDL; + return false; + } + + LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpPost(url, gAgent.getAgentPolicy(), postData, cbSuccess, cbFailure); + return true; +} + +bool LLViewerRegion::requestGetCapability(const std::string &capName, httpCallback_t cbSuccess, httpCallback_t cbFailure) +{ + std::string url; + + url = getCapability(capName); + + if (url.empty()) + { + LL_WARNS("Region") << "Could not retrieve region " << getRegionID() + << " GET capability \"" << capName << "\"" << LL_ENDL; + return false; + } + + LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet(url, gAgent.getAgentPolicy(), cbSuccess, cbFailure); + return true; +} + + +void LLViewerRegion::setInterestList360Mode(bool use_360_mode) +{ + if (use_360_mode != mUse360Mode) + { + LLSD body; + mUse360Mode = use_360_mode; + + if (mUse360Mode) + { + body["mode"] = LLSD::String("360"); + } + else + { + body["mode"] = LLSD::String("default"); + } + + if (requestPostCapability("InterestList", body, + [](const LLSD &response) { + LL_DEBUGS("360Capture") << "InterestList capability responded: \n" + << ll_pretty_print_sd(response) << LL_ENDL; + })) + { + LL_DEBUGS("360Capture") << "Region " << getRegionID() + << " Successfully posted an InterestList capability request with payload: \n" + << ll_pretty_print_sd(body) << LL_ENDL; + } + else + { + LL_WARNS("360Capture") << "Region " << getRegionID() + << " Unable to post an InterestList capability request with payload: \n" + << ll_pretty_print_sd(body) << LL_ENDL; + } + } + else + { + LL_DEBUGS("360Capture") << "Region " << getRegionID() << "No change, skipping Interest List mode POST to " + << (use_360_mode ? "360" : "default") << " mode" << LL_ENDL; + } +} + + + LLSpatialPartition* LLViewerRegion::getSpatialPartition(U32 type) { if (type < mImpl->mObjectPartition.size() && type < PARTITION_VO_CACHE) diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 81371b7f30..3da0c376d3 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -32,6 +32,7 @@ #include #include +#include "llcorehttputil.h" #include "llwind.h" #include "v3dmath.h" #include "llstring.h" @@ -278,6 +279,15 @@ public: static bool isSpecialCapabilityName(const std::string &name); void logActiveCapabilities() const; + // Utilities to post and get via + // HTTP using the agent's policy settings and headers. + typedef LLCoreHttpUtil::HttpCoroutineAdapter::completionCallback_t httpCallback_t; + bool requestPostCapability(const std::string &capName, + LLSD &postData, + httpCallback_t cbSuccess = NULL, + httpCallback_t cbFailure = NULL); + bool requestGetCapability(const std::string &capName, httpCallback_t cbSuccess = NULL, httpCallback_t cbFailure = NULL); + /// implements LLCapabilityProvider /*virtual*/ const LLHost& getHost() const; const U64 &getHandle() const { return mHandle; } @@ -477,6 +487,11 @@ public: }; typedef std::set region_priority_list_t; + void setInterestList360Mode(bool use_360_mode); + bool getInterestList360Mode() const { return mUse360Mode; } + + + private: static S32 sNewObjectCreationThrottle; LLViewerRegionImpl * mImpl; @@ -574,6 +589,9 @@ private: LLFrameTimer mMaterialsCapThrottleTimer; LLFrameTimer mRenderInfoRequestTimer; LLFrameTimer mRenderInfoReportTimer; + + // how the server interest list works + bool mUse360Mode; }; inline BOOL LLViewerRegion::getRegionProtocol(U64 protocol) const diff --git a/indra/newview/llviewerstatsrecorder.cpp b/indra/newview/llviewerstatsrecorder.cpp index f95a960186..6372679a07 100644 --- a/indra/newview/llviewerstatsrecorder.cpp +++ b/indra/newview/llviewerstatsrecorder.cpp @@ -73,15 +73,14 @@ void LLViewerStatsRecorder::clearStats() mObjectFullUpdates = 0; mObjectTerseUpdates = 0; mObjectCacheMissRequests = 0; - mObjectCacheMissResponses = 0; mObjectCacheUpdateDupes = 0; mObjectCacheUpdateChanges = 0; mObjectCacheUpdateAdds = 0; mObjectCacheUpdateReplacements = 0; mObjectUpdateFailures = 0; - mObjectUpdateFailuresSize = 0; mTextureFetchCount = 0; mMeshLoadedCount = 0; + mObjectKills = 0; } @@ -100,12 +99,6 @@ void LLViewerStatsRecorder::enableObjectStatsRecording(bool enable, bool logging -void LLViewerStatsRecorder::recordObjectUpdateFailure(S32 msg_size) -{ - mObjectUpdateFailures++; - mObjectUpdateFailuresSize += msg_size; -} - void LLViewerStatsRecorder::recordCacheMissEvent(U8 cache_miss_type) { if (LLViewerRegion::CACHE_MISS_TYPE_TOTAL == cache_miss_type) @@ -119,24 +112,17 @@ void LLViewerStatsRecorder::recordCacheMissEvent(U8 cache_miss_type) } -void LLViewerStatsRecorder::recordCacheHitEvent() -{ - mObjectCacheHitCount++; -} - void LLViewerStatsRecorder::recordObjectUpdateEvent(const EObjectUpdateType update_type) { switch (update_type) { case OUT_FULL: - mObjectFullUpdates++; + case OUT_FULL_COMPRESSED: + mObjectFullUpdates++; break; case OUT_TERSE_IMPROVED: mObjectTerseUpdates++; break; - case OUT_FULL_COMPRESSED: - mObjectCacheMissResponses++; - break; default: LL_WARNS() << "Unknown update_type" << LL_ENDL; break; @@ -165,11 +151,6 @@ void LLViewerStatsRecorder::recordCacheFullUpdate(LLViewerRegion::eCacheUpdateRe }; } -void LLViewerStatsRecorder::recordRequestCacheMissesEvent(S32 count) -{ - mObjectCacheMissRequests += count; -} - void LLViewerStatsRecorder::writeToLog( F32 interval ) { if (!mEnableStatsLogging || !mEnableStatsRecording) @@ -185,7 +166,7 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) if (mSkipSaveIfZeros) { S32 total_events = mObjectCacheHitCount + mObjectCacheMissCrcCount + mObjectCacheMissFullCount + mObjectFullUpdates + - mObjectTerseUpdates + mObjectCacheMissRequests + mObjectCacheMissResponses + mObjectCacheUpdateDupes + + mObjectTerseUpdates + mObjectCacheMissRequests + mObjectCacheUpdateDupes + mObjectCacheUpdateChanges + mObjectCacheUpdateAdds + mObjectCacheUpdateReplacements + mObjectUpdateFailures; if (total_events == 0) { @@ -202,14 +183,16 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << mObjectFullUpdates << " full updates, " << mObjectTerseUpdates << " terse updates, " << mObjectCacheMissRequests << " cache miss requests, " - << mObjectCacheMissResponses << " cache miss responses, " << mObjectCacheUpdateDupes << " cache update dupes, " << mObjectCacheUpdateChanges << " cache update changes, " << mObjectCacheUpdateAdds << " cache update adds, " - << mObjectCacheUpdateReplacements << " cache update replacements, " - << mObjectUpdateFailures << " update failures" + << mObjectCacheUpdateReplacements << " cache update replacements," + << mObjectUpdateFailures << " update failures," + << mTextureFetchCount << " texture fetches, " + << mMeshLoadedCount << " mesh loads, " + << mObjectKills << " object kills" << LL_ENDL; - + if (mStatsFile == NULL) { // Refresh settings @@ -237,8 +220,7 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "Cache Crc Misses," << "Full Updates," << "Terse Updates," - << "Cache Miss Requests," - << "Cache Miss Responses," + << "Cache Miss Requests," // Normally results in a Full Update from simulator << "Cache Update Dupes," << "Cache Update Changes," << "Cache Update Adds," @@ -246,12 +228,16 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "Update Failures," << "Texture Count," << "Mesh Load Count," + << "Object Kills" << "\n"; data_size = col_headers.str().size(); if (fwrite(col_headers.str().c_str(), 1, data_size, mStatsFile ) != data_size) { LL_WARNS() << "failed to write full headers to " << mStatsFileName << LL_ENDL; + // Close the file and turn off stats logging + closeStatsFile(); + return; } } else @@ -273,7 +259,6 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "," << mObjectFullUpdates << "," << mObjectTerseUpdates << "," << mObjectCacheMissRequests - << "," << mObjectCacheMissResponses << "," << mObjectCacheUpdateDupes << "," << mObjectCacheUpdateChanges << "," << mObjectCacheUpdateAdds @@ -281,6 +266,7 @@ void LLViewerStatsRecorder::writeToLog( F32 interval ) << "," << mObjectUpdateFailures << "," << mTextureFetchCount << "," << mMeshLoadedCount + << "," << mObjectKills << "\n"; data_size = stats_data.str().size(); @@ -332,14 +318,4 @@ F32 LLViewerStatsRecorder::getTimeSinceStart() return (F32) (LLFrameTimer::getTotalSeconds() - mFileOpenTime); } -void LLViewerStatsRecorder::recordTextureFetch() -{ - mTextureFetchCount += 1; -} - -void LLViewerStatsRecorder::recordMeshLoaded() -{ - mMeshLoadedCount += 1; -} - diff --git a/indra/newview/llviewerstatsrecorder.h b/indra/newview/llviewerstatsrecorder.h index 37c08a51cf..b9fe02e54d 100644 --- a/indra/newview/llviewerstatsrecorder.h +++ b/indra/newview/llviewerstatsrecorder.h @@ -53,11 +53,11 @@ class LLViewerStatsRecorder : public LLSingleton bool isEnabled() const { return mEnableStatsRecording; } bool isLogging() const { return mEnableStatsLogging; } - void objectUpdateFailure(S32 msg_size) + void objectUpdateFailure() { if (mEnableStatsRecording) { - recordObjectUpdateFailure(msg_size); + mObjectUpdateFailures++; } } @@ -73,7 +73,7 @@ class LLViewerStatsRecorder : public LLSingleton { if (mEnableStatsRecording) { - recordCacheHitEvent(); + mObjectCacheHitCount++; } } @@ -97,7 +97,7 @@ class LLViewerStatsRecorder : public LLSingleton { if (mEnableStatsRecording) { - recordRequestCacheMissesEvent(count); + mObjectCacheMissRequests += count; } } @@ -105,7 +105,7 @@ class LLViewerStatsRecorder : public LLSingleton { if (mEnableStatsRecording) { - recordTextureFetch(); + mTextureFetchCount += 1; } } @@ -113,10 +113,18 @@ class LLViewerStatsRecorder : public LLSingleton { if (mEnableStatsRecording) { - recordMeshLoaded(); + mMeshLoadedCount += 1; } } + void recordObjectKills(S32 num_objects) + { + if (mEnableStatsRecording) + { + mObjectKills += num_objects; + } + } + void idle() { writeToLog(mInterval); @@ -125,14 +133,9 @@ class LLViewerStatsRecorder : public LLSingleton F32 getTimeSinceStart(); private: - void recordObjectUpdateFailure(S32 msg_size); void recordCacheMissEvent(U8 cache_miss_type); - void recordCacheHitEvent(); void recordObjectUpdateEvent(const EObjectUpdateType update_type); void recordCacheFullUpdate(LLViewerRegion::eCacheUpdateResult update_result); - void recordRequestCacheMissesEvent(S32 count); - void recordTextureFetch(); - void recordMeshLoaded(); void writeToLog(F32 interval); void closeStatsFile(); void makeStatsFileName(); @@ -158,15 +161,14 @@ private: S32 mObjectFullUpdates; S32 mObjectTerseUpdates; S32 mObjectCacheMissRequests; - S32 mObjectCacheMissResponses; S32 mObjectCacheUpdateDupes; S32 mObjectCacheUpdateChanges; S32 mObjectCacheUpdateAdds; S32 mObjectCacheUpdateReplacements; S32 mObjectUpdateFailures; - S32 mObjectUpdateFailuresSize; S32 mTextureFetchCount; S32 mMeshLoadedCount; + S32 mObjectKills; void clearStats(); }; -- cgit v1.2.3 From 81f1be67109885f98f649974022aa6d444dd633d Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 13 May 2023 04:10:28 +0100 Subject: sl-19676 - 360 Intereset list mode. Changed mode to be a string for future expansion instead of a bool toggle --- indra/newview/llagent.cpp | 36 ++++++++++++++++++++--------------- indra/newview/llagent.h | 7 ++++--- indra/newview/llfloater360capture.cpp | 9 ++++----- indra/newview/llfloater360capture.h | 2 +- indra/newview/llviewermenu.cpp | 12 +++++++++--- indra/newview/llviewerregion.cpp | 34 +++++++++++++++++---------------- indra/newview/llviewerregion.h | 11 ++++++----- 7 files changed, 63 insertions(+), 48 deletions(-) diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 89d4df7caa..307f73fab4 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -401,7 +401,7 @@ LLAgent::LLAgent() : mHttpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID), mTeleportState(TELEPORT_NONE), mRegionp(NULL), - mUse360Mode(false), + mInterestListMode(LLViewerRegion::IL_MODE_DEFAULT), mAgentOriginGlobal(), mPositionGlobal(), @@ -904,10 +904,9 @@ void LLAgent::capabilityReceivedCallback(const LLUUID ®ion_id, LLViewerRegion LLAppViewer::instance()->updateNameLookupUrl(regionp); } - if (gAgent.getInterestList360Mode()) + if (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360) { - const bool use_360_mode = true; - gAgent.changeInterestListMode(use_360_mode); + gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360); } } } @@ -2932,22 +2931,29 @@ void LLAgent::processMaturityPreferenceFromServer(const LLSD &result, U8 perferr // (hopefully) small period of time while the full contents resolves. // Pass in a flag to ask the simulator/interest list to "send everything" or // not (the default mode) -void LLAgent::changeInterestListMode(bool use_360_mode) +void LLAgent::changeInterestListMode(const std::string &new_mode) { - mUse360Mode = use_360_mode; - - // Change interest list mode for all regions. If they are already set for the current mode, - // the setting will have no effect. - for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); - iter != LLWorld::getInstance()->getRegionList().end(); - ++iter) + if (new_mode != mInterestListMode) { - LLViewerRegion *regionp = *iter; - if (regionp && regionp->isAlive() && regionp->capabilitiesReceived()) + mInterestListMode = new_mode; + + // Change interest list mode for all regions. If they are already set for the current mode, + // the setting will have no effect. + for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); + iter != LLWorld::getInstance()->getRegionList().end(); + ++iter) { - regionp->setInterestList360Mode(mUse360Mode); + LLViewerRegion *regionp = *iter; + if (regionp && regionp->isAlive() && regionp->capabilitiesReceived()) + { + regionp->setInterestListMode(mInterestListMode); + } } } + else + { + LL_DEBUGS("360Capture") << "Agent interest list mode is already set to " << mInterestListMode << LL_ENDL; + } } diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index ef8df13fc6..b8ac47827a 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -295,13 +295,14 @@ public: void removeRegionChangedCallback(boost::signals2::connection callback); - void changeInterestListMode(bool use_360_mode); - bool getInterestList360Mode() const { return mUse360Mode; } + void changeInterestListMode(const std::string & new_mode); + const std::string & getInterestListMode() const { return mInterestListMode; } private: LLViewerRegion *mRegionp; region_changed_signal_t mRegionChangedSignal; - bool mUse360Mode; + + std::string mInterestListMode; // How agent wants regions to send updates //-------------------------------------------------------------------- // History diff --git a/indra/newview/llfloater360capture.cpp b/indra/newview/llfloater360capture.cpp index a0889abe2d..2c638fa959 100644 --- a/indra/newview/llfloater360capture.cpp +++ b/indra/newview/llfloater360capture.cpp @@ -64,11 +64,10 @@ LLFloater360Capture::LLFloater360Capture(const LLSD& key) // such time as we ask it not to (the dtor). If we crash or // otherwise, exit before this is turned off, the Simulator // will take care of cleaning up for us. - mWasIn360Mode = gAgent.getInterestList360Mode(); + mStartILMode = gAgent.getInterestListMode(); // send everything to us for as long as this floater is open - const bool use_360_mode = true; - gAgent.changeInterestListMode(use_360_mode); + gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360); } LLFloater360Capture::~LLFloater360Capture() @@ -86,9 +85,9 @@ LLFloater360Capture::~LLFloater360Capture() // list updates. if (!LLApp::isExiting() && gSavedSettings.getBOOL("360CaptureUseInterestListCap") && - mWasIn360Mode != gAgent.getInterestList360Mode()) + mStartILMode != gAgent.getInterestListMode()) { - gAgent.changeInterestListMode(mWasIn360Mode); + gAgent.changeInterestListMode(mStartILMode); } } diff --git a/indra/newview/llfloater360capture.h b/indra/newview/llfloater360capture.h index 61316c65f3..3fb2c7f3c7 100644 --- a/indra/newview/llfloater360capture.h +++ b/indra/newview/llfloater360capture.h @@ -92,7 +92,7 @@ class LLFloater360Capture: LLPointer mRawImages[6]; - bool mWasIn360Mode; + std::string mStartILMode; }; #endif // LL_FLOATER_360CAPTURE_H diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 23abd0fe16..fe6676759d 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1302,8 +1302,14 @@ public: bool handleEvent(const LLSD &userdata) { // Toggle the mode - regions will get updated - bool new_mode = !gAgent.getInterestList360Mode(); - gAgent.changeInterestListMode(new_mode); + if (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360) + { + gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT); + } + else + { + gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360); + } return true; } }; @@ -1312,7 +1318,7 @@ class LLAdvancedCheckInterestList360Mode : public view_listener_t { bool handleEvent(const LLSD& userdata) { - return gAgent.getInterestList360Mode(); + return (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360); } }; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 7abd77505d..9c2dc3c761 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -104,6 +104,9 @@ S32 LLViewerRegion::sLastCameraUpdated = 0; S32 LLViewerRegion::sNewObjectCreationThrottle = -1; LLViewerRegion::vocache_entry_map_t LLViewerRegion::sRegionCacheCleanup; +const std::string LLViewerRegion::IL_MODE_DEFAULT = "default"; +const std::string LLViewerRegion::IL_MODE_360 = "360"; + typedef std::map CapabilityMap; static void log_capabilities(const CapabilityMap &capmap); @@ -647,7 +650,7 @@ LLViewerRegion::LLViewerRegion(const U64 &handle, mPaused(FALSE), mRegionCacheHitCount(0), mRegionCacheMissCount(0), - mUse360Mode(false) + mInterestListMode(IL_MODE_DEFAULT) { mWidth = region_width_meters; mImpl->mOriginGlobal = from_region_handle(handle); @@ -3286,7 +3289,7 @@ void LLViewerRegion::setCapabilitiesReceived(bool received) mCapabilitiesReceivedSignal.disconnect_all_slots(); // Set the region to the desired interest list mode - setInterestList360Mode(gAgent.getInterestList360Mode()); + setInterestListMode(gAgent.getInterestListMode()); } } @@ -3339,22 +3342,21 @@ bool LLViewerRegion::requestGetCapability(const std::string &capName, httpCallba } -void LLViewerRegion::setInterestList360Mode(bool use_360_mode) +void LLViewerRegion::setInterestListMode(const std::string &new_mode) { - if (use_360_mode != mUse360Mode) + if (new_mode != mInterestListMode) { - LLSD body; - mUse360Mode = use_360_mode; + mInterestListMode = new_mode; - if (mUse360Mode) - { - body["mode"] = LLSD::String("360"); - } - else - { - body["mode"] = LLSD::String("default"); - } + if (mInterestListMode != std::string(IL_MODE_DEFAULT) && mInterestListMode != std::string(IL_MODE_360)) + { + LL_WARNS("360Capture") << "Region " << getRegionID() << " setInterestListMode() invalid interest list mode: " + << mInterestListMode << ", setting to default" << LL_ENDL; + mInterestListMode = IL_MODE_DEFAULT; + } + LLSD body; + body["mode"] = mInterestListMode; if (requestPostCapability("InterestList", body, [](const LLSD &response) { LL_DEBUGS("360Capture") << "InterestList capability responded: \n" @@ -3375,13 +3377,13 @@ void LLViewerRegion::setInterestList360Mode(bool use_360_mode) else { LL_DEBUGS("360Capture") << "Region " << getRegionID() << "No change, skipping Interest List mode POST to " - << (use_360_mode ? "360" : "default") << " mode" << LL_ENDL; + << new_mode << " mode" << LL_ENDL; } } -LLSpatialPartition* LLViewerRegion::getSpatialPartition(U32 type) +LLSpatialPartition *LLViewerRegion::getSpatialPartition(U32 type) { if (type < mImpl->mObjectPartition.size() && type < PARTITION_VO_CACHE) { diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 3da0c376d3..6308058f63 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -487,12 +487,13 @@ public: }; typedef std::set region_priority_list_t; - void setInterestList360Mode(bool use_360_mode); - bool getInterestList360Mode() const { return mUse360Mode; } + void setInterestListMode(const std::string & new_mode); + const std::string & getInterestListMode() const { return mInterestListMode; } + static const std::string IL_MODE_DEFAULT; + static const std::string IL_MODE_360; - -private: + private: static S32 sNewObjectCreationThrottle; LLViewerRegionImpl * mImpl; LLFrameTimer mRegionTimer; @@ -591,7 +592,7 @@ private: LLFrameTimer mRenderInfoReportTimer; // how the server interest list works - bool mUse360Mode; + std::string mInterestListMode; }; inline BOOL LLViewerRegion::getRegionProtocol(U64 protocol) const -- cgit v1.2.3 From 74687f270545ededb77f29a7409f64303dcb2e2d Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 15 May 2023 23:05:39 +0300 Subject: SL-19643 Shutdown and startup should not warn about attachments. Initial attachments usually are not 'expected', shutdown is expected to detach everything --- indra/newview/llattachmentsmgr.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp index d43048a8b6..1feefc3ef8 100644 --- a/indra/newview/llattachmentsmgr.cpp +++ b/indra/newview/llattachmentsmgr.cpp @@ -31,6 +31,7 @@ #include "llagent.h" #include "llappearancemgr.h" #include "llinventorymodel.h" +#include "llstartup.h" #include "lltooldraganddrop.h" // pack_permissions_slam #include "llviewerinventory.h" #include "llviewerregion.h" @@ -372,7 +373,7 @@ void LLAttachmentsMgr::onAttachmentArrived(const LLUUID& inv_item_id) { LLTimer timer; bool expected = mAttachmentRequests.getTime(inv_item_id, timer); - if (!expected) + if (!expected && LLStartUp::getStartupState() > STATE_WEARABLES_WAIT) { LLInventoryItem *item = gInventory.getItem(inv_item_id); LL_WARNS() << "ATT Attachment was unexpected or arrived after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds: " @@ -411,11 +412,15 @@ void LLAttachmentsMgr::onDetachCompleted(const LLUUID& inv_item_id) LL_DEBUGS("Avatar") << "ATT all detach requests have completed" << LL_ENDL; } } - else + else if (!LLApp::isExiting()) { LL_WARNS() << "ATT unexpected detach for " << (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL; } + else + { + LL_DEBUGS("Avatar") << "ATT detach on shutdown for " << (item ? item->getName() : "UNKNOWN") << " " << inv_item_id << LL_ENDL; + } LL_DEBUGS("Avatar") << "ATT detached item flagging as questionable for COF link checking " << (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL; -- cgit v1.2.3 From 2dca661b6a7b40c1dcf94a08f5304df277542597 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 15 May 2023 23:24:00 +0100 Subject: SL-19676 - more IL control, added Reset Interest List Debug menu command --- indra/llmessage/llcorehttputil.cpp | 42 ++++++++++++++++++++++ indra/llmessage/llcorehttputil.h | 4 +++ indra/newview/llviewermenu.cpp | 31 ++++++++++++++-- indra/newview/llviewerregion.cpp | 29 +++++++++++++++ indra/newview/llviewerregion.h | 3 ++ indra/newview/skins/default/xui/en/menu_viewer.xml | 27 ++++++++------ 6 files changed, 123 insertions(+), 13 deletions(-) diff --git a/indra/llmessage/llcorehttputil.cpp b/indra/llmessage/llcorehttputil.cpp index c8c9280029..6b9ce54c92 100644 --- a/indra/llmessage/llcorehttputil.cpp +++ b/indra/llmessage/llcorehttputil.cpp @@ -1336,6 +1336,48 @@ void HttpCoroutineAdapter::trivialPostCoro(std::string url, LLCore::HttpRequest: } +/*static*/ +void HttpCoroutineAdapter::callbackHttpDel(const std::string &url, LLCore::HttpRequest::policy_t policyId, completionCallback_t success, + completionCallback_t failure) +{ + LLCoros::instance().launch("HttpCoroutineAdapter::genericDelCoro", + boost::bind(&HttpCoroutineAdapter::trivialDelCoro, url, policyId, success, failure)); +} + +/*static*/ +void HttpCoroutineAdapter::trivialDelCoro(std::string url, LLCore::HttpRequest::policy_t policyId, completionCallback_t success, + completionCallback_t failure) +{ + LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("genericDelCoro", policyId)); + LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); + LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions); + + httpOpts->setWantHeaders(true); + + LL_INFOS("HttpCoroutineAdapter", "genericDelCoro") << "Generic DEL for " << url << LL_ENDL; + + LLSD result = httpAdapter->deleteAndSuspend(httpRequest, url, httpOpts); + + LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; + LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); + + if (!status) + { + if (failure) + { + failure(httpResults); + } + } + else + { + if (success) + { + success(result); + } + } +} + + } // end namespace LLCoreHttpUtil diff --git a/indra/llmessage/llcorehttputil.h b/indra/llmessage/llcorehttputil.h index 6f0b865f83..8df1425f2a 100644 --- a/indra/llmessage/llcorehttputil.h +++ b/indra/llmessage/llcorehttputil.h @@ -608,6 +608,9 @@ public: callbackHttpPost(url, LLCore::HttpRequest::DEFAULT_POLICY_ID, postData, success, failure); } + static void callbackHttpDel(const std::string &url, LLCore::HttpRequest::policy_t policyId, completionCallback_t success = NULL, + completionCallback_t failure = NULL); + /// Generic Get and post routines for HTTP via coroutines. /// These static methods do all required setup for the GET or POST operation. /// When the operation completes successfully they will put the success message in the log at INFO level, @@ -669,6 +672,7 @@ private: static void trivialGetCoro(std::string url, LLCore::HttpRequest::policy_t policyId, completionCallback_t success, completionCallback_t failure); static void trivialPostCoro(std::string url, LLCore::HttpRequest::policy_t policyId, LLSD postData, completionCallback_t success, completionCallback_t failure); + static void trivialDelCoro(std::string url, LLCore::HttpRequest::policy_t policyId, completionCallback_t success, completionCallback_t failure); void checkDefaultHeaders(LLCore::HttpHeaders::ptr_t &headers); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index fe6676759d..c762e796aa 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -122,6 +122,7 @@ #include "llviewerstatsrecorder.h" #include "llvoavatarself.h" #include "llvoicevivox.h" +#include "llworld.h" #include "llworldmap.h" #include "pipeline.h" #include "llviewerjoystick.h" @@ -333,6 +334,7 @@ void handle_debug_avatar_textures(void*); void handle_grab_baked_texture(void*); BOOL enable_grab_baked_texture(void*); void handle_dump_region_object_cache(void*); +void handle_reset_interest_lists(void *); BOOL enable_save_into_task_inventory(void*); @@ -1346,6 +1348,14 @@ class LLAdvancedCheckStatsRecorder : public view_listener_t } }; +class LLAdvancedResetInterestLists : public view_listener_t +{ + bool handleEvent(const LLSD &userdata) + { // Reset all region interest lists + handle_reset_interest_lists(NULL); + return true; + } +}; class LLAdvancedBuyCurrencyTest : public view_listener_t @@ -3892,6 +3902,22 @@ void handle_dump_region_object_cache(void*) } } +void handle_reset_interest_lists(void *) +{ + // Check all regions and reset their interest list + for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); + iter != LLWorld::getInstance()->getRegionList().end(); + ++iter) + { + LLViewerRegion *regionp = *iter; + if (regionp && regionp->isAlive() && regionp->capabilitiesReceived()) + { + regionp->resetInterestList(); + } + } +} + + void handle_dump_focus() { LLUICtrl *ctrl = dynamic_cast(gFocusMgr.getKeyboardFocus()); @@ -9452,10 +9478,11 @@ void initialize_menus() // Advanced > World view_listener_t::addMenu(new LLAdvancedDumpScriptedCamera(), "Advanced.DumpScriptedCamera"); view_listener_t::addMenu(new LLAdvancedDumpRegionObjectCache(), "Advanced.DumpRegionObjectCache"); - view_listener_t::addMenu(new LLAdvancedToggleInterestList360Mode(), "Advanced.ToggleInterestList360Mode"); - view_listener_t::addMenu(new LLAdvancedCheckInterestList360Mode(), "Advanced.CheckInterestList360Mode"); view_listener_t::addMenu(new LLAdvancedToggleStatsRecorder(), "Advanced.ToggleStatsRecorder"); view_listener_t::addMenu(new LLAdvancedCheckStatsRecorder(), "Advanced.CheckStatsRecorder"); + view_listener_t::addMenu(new LLAdvancedToggleInterestList360Mode(), "Advanced.ToggleInterestList360Mode"); + view_listener_t::addMenu(new LLAdvancedCheckInterestList360Mode(), "Advanced.CheckInterestList360Mode"); + view_listener_t::addMenu(new LLAdvancedResetInterestLists(), "Advanced.ResetInterestLists"); // Advanced > UI commit.add("Advanced.WebBrowserTest", boost::bind(&handle_web_browser_test, _2)); // sigh! this one opens the MEDIA browser diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 9c2dc3c761..5254d766a8 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -3341,6 +3341,21 @@ bool LLViewerRegion::requestGetCapability(const std::string &capName, httpCallba return true; } +bool LLViewerRegion::requestDelCapability(const std::string &capName, httpCallback_t cbSuccess, httpCallback_t cbFailure) +{ + std::string url; + + url = getCapability(capName); + + if (url.empty()) + { + LL_WARNS("Region") << "Could not retrieve region " << getRegionID() << " DEL capability \"" << capName << "\"" << LL_ENDL; + return false; + } + + LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpDel(url, gAgent.getAgentPolicy(), cbSuccess, cbFailure); + return true; +} void LLViewerRegion::setInterestListMode(const std::string &new_mode) { @@ -3382,6 +3397,20 @@ void LLViewerRegion::setInterestListMode(const std::string &new_mode) } +void LLViewerRegion::resetInterestList() +{ + if (requestDelCapability("InterestList", [](const LLSD &response) { + LL_DEBUGS("360Capture") << "InterestList capability DEL responded: \n" << ll_pretty_print_sd(response) << LL_ENDL; + })) + { + LL_DEBUGS("360Capture") << "Region " << getRegionID() << " Successfully reset InterestList capability" << LL_ENDL; + } + else + { + LL_WARNS("360Capture") << "Region " << getRegionID() << " Unable to DEL InterestList capability request" << LL_ENDL; + } +} + LLSpatialPartition *LLViewerRegion::getSpatialPartition(U32 type) { diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 6308058f63..6956e9eb08 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -287,6 +287,7 @@ public: httpCallback_t cbSuccess = NULL, httpCallback_t cbFailure = NULL); bool requestGetCapability(const std::string &capName, httpCallback_t cbSuccess = NULL, httpCallback_t cbFailure = NULL); + bool requestDelCapability(const std::string &capName, httpCallback_t cbSuccess = NULL, httpCallback_t cbFailure = NULL); /// implements LLCapabilityProvider /*virtual*/ const LLHost& getHost() const; @@ -490,6 +491,8 @@ public: void setInterestListMode(const std::string & new_mode); const std::string & getInterestListMode() const { return mInterestListMode; } + void resetInterestList(); + static const std::string IL_MODE_DEFAULT; static const std::string IL_MODE_360; diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 07471ed5bb..51ac3d17ab 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3485,16 +3485,6 @@ function="World.EnvPreset" - - - - - @@ -3503,7 +3493,22 @@ function="World.EnvPreset" - + + + + + + + + Date: Tue, 16 May 2023 02:00:51 +0300 Subject: SL-19602 Alt-Zoom overcompensates for z pelvis fixup Alt zoom was pointing near ground instead of agent's actual position --- indra/newview/llagentcamera.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 77131efd75..2cf86cb001 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -401,10 +401,15 @@ LLVector3 LLAgentCamera::calcFocusOffset(LLViewerObject *object, LLVector3 origi // if is avatar - don't do any funk heuristics to position the focal point // see DEV-30589 - if (object->isAvatar() || (object->isAnimatedObject() && object->getControlAvatar())) + if ((object->isAvatar() && !object->isRoot()) || (object->isAnimatedObject() && object->getControlAvatar())) { return original_focus_point - obj_pos; } + if (object->isAvatar()) + { + LLVOAvatar* av = object->asAvatar(); + return original_focus_point - av->getCharacterPosition(); + } LLQuaternion inv_obj_rot = ~obj_rot; // get inverse of rotation LLVector3 object_extents = object->getScale(); -- cgit v1.2.3 From 07dc391ab76a8860d04bfb001cdc686cd576663d Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 17 May 2023 00:00:44 +0300 Subject: SL-19720 Fix missing buttons for replacing body parts --- indra/newview/llwearableitemslist.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 89b74ae962..8681f7c14e 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -104,8 +104,6 @@ BOOL LLPanelWearableOutfitItem::postBuild() { LLPanelWearableListItem::postBuild(); - LLViewerInventoryItem* inv_item = getItem(); - mShowWidgets &= (inv_item->getType() != LLAssetType::AT_BODYPART); if(mShowWidgets) { addWidgetToRightSide("add_wearable"); @@ -208,7 +206,12 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name, if(mShowWidgets) { setShowWidget("add_wearable", !is_worn); - setShowWidget("remove_wearable", is_worn); + + // Body parts can't be removed, only replaced + LLViewerInventoryItem* inv_item = getItem(); + bool show_remove = is_worn && inv_item && (inv_item->getType() != LLAssetType::AT_BODYPART); + setShowWidget("remove_wearable", show_remove); + if(mHovered) { setWidgetsVisible(true); -- cgit v1.2.3 From c40ee46eb19c67d139e535ae262acc59c05ee315 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 17 May 2023 21:20:41 +0300 Subject: SL-19719 Fix packaging related warnings --- .../installers/windows/installer_template.nsi | 17 +---------------- indra/newview/installers/windows/lang_zh.nsi | Bin 10144 -> 10154 bytes 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 60e26274cb..ed37f541c8 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -507,7 +507,7 @@ Call un.UserSettingsFiles SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Make sure the user can install +;; Make sure the user can install/uninstall ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CheckIfAdministrator DetailPrint $(CheckAdministratorInstDP) @@ -521,21 +521,6 @@ lbl_is_admin: FunctionEnd -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Make sure the user can uninstall -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function un.CheckIfAdministrator - DetailPrint $(CheckAdministratorUnInstDP) - UserInfo::GetAccountType - Pop $R0 - StrCmp $R0 "Admin" lbl_is_admin - MessageBox MB_OK $(CheckAdministratorUnInstMB) - Quit -lbl_is_admin: - Return - -FunctionEnd - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function CheckWillUninstallV2 ;; diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi index 7922d9df52..0985663041 100755 Binary files a/indra/newview/installers/windows/lang_zh.nsi and b/indra/newview/installers/windows/lang_zh.nsi differ -- cgit v1.2.3 From f366853f22ec6914471d7b265adf53736f080527 Mon Sep 17 00:00:00 2001 From: Maxim Nikolenko Date: Mon, 22 May 2023 14:42:31 +0300 Subject: SL-19735 Remove FB Connect Test; remove unused variable --- indra/newview/llviewerobjectlist.cpp | 7 ------- indra/newview/skins/default/xui/en/menu_viewer.xml | 7 ------- 2 files changed, 14 deletions(-) diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 5f0e331baa..61f0e05825 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -472,7 +472,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, for (i = 0; i < num_objects; i++) { BOOL justCreated = FALSE; - S32 msg_size = 0; bool update_cache = false; //update object cache if it is a full-update or terse update if (compressed) @@ -529,7 +528,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, else if (update_type != OUT_FULL) // !compressed, !OUT_FULL ==> OUT_FULL_CACHED only? { mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_ID, local_id, i); - msg_size += sizeof(U32); getUUIDFromLocal(fullid, local_id, @@ -550,8 +548,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, update_cache = true; mesgsys->getUUIDFast(_PREHASH_ObjectData, _PREHASH_FullID, fullid, i); mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_ID, local_id, i); - msg_size += sizeof(LLUUID); - msg_size += sizeof(U32); LL_DEBUGS("ObjectUpdate") << "Full Update, obj " << local_id << ", global ID " << fullid << " from " << mesgsys->getSender() << LL_ENDL; } objectp = findObject(fullid); @@ -626,7 +622,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, } mesgsys->getU8Fast(_PREHASH_ObjectData, _PREHASH_PCode, pcode, i); - msg_size += sizeof(U8); } #ifdef IGNORE_DEAD @@ -728,14 +723,12 @@ void LLViewerObjectList::processCachedObjectUpdate(LLMessageSystem *mesgsys, for (S32 i = 0; i < num_objects; i++) { - S32 msg_size = 0; U32 id; U32 crc; U32 flags; mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_ID, id, i); mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_CRC, crc, i); mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_UpdateFlags, flags, i); - msg_size += sizeof(U32) * 2; LL_DEBUGS("ObjectUpdate") << "got probe for id " << id << " crc " << crc << LL_ENDL; dumpStack("ObjectUpdateStack"); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 51ac3d17ab..810d3fddd5 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3522,13 +3522,6 @@ function="World.EnvPreset" function="Advanced.WebContentTest" parameter="http://duckduckgo.com"/> - - - -- cgit v1.2.3 From 55460b49585ceea5d6388204c7f3bd74ed4f4827 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 12 May 2023 17:29:41 +0100 Subject: SL-19711 - viewer can't parse environments. Fixed max parsing bug (cherry picked from commit eb0516b9940f200b32349d611f38f1ccee48005d) --- indra/llcommon/llsdserialize.cpp | 20 +++++++++++++------- indra/newview/llsettingsvo.cpp | 4 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index e7482b601d..56cc141f0d 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -125,14 +125,20 @@ bool LLSDSerialize::deserialize(LLSD& sd, std::istream& str, llssize max_bytes) char hdr_buf[MAX_HDR_LEN + 1] = ""; /* Flawfinder: ignore */ bool fail_if_not_legacy = false; - /* - * Get the first line before anything. Don't read more than max_bytes: - * this get() overload reads no more than (count-1) bytes into the - * specified buffer. In the usual case when max_bytes exceeds - * sizeof(hdr_buf), get() will read no more than sizeof(hdr_buf)-2. - */ - str.get(hdr_buf, llmin(max_bytes+1, sizeof(hdr_buf)-1), '\n'); + /* + * Get the first line before anything. Don't read more than max_bytes: + * this get() overload reads no more than (count-1) bytes into the + * specified buffer. In the usual case when max_bytes exceeds + * sizeof(hdr_buf), get() will read no more than sizeof(hdr_buf)-2. + */ + llssize max_hdr_read = MAX_HDR_LEN; + if (max_bytes != LLSDSerialize::SIZE_UNLIMITED) + { + max_hdr_read = llmin(max_bytes + 1, max_hdr_read); + } + str.get(hdr_buf, max_hdr_read, '\n'); auto inbuf = str.gcount(); + // https://en.cppreference.com/w/cpp/io/basic_istream/get // When the get() above sees the specified delimiter '\n', it stops there // without pulling it from the stream. If it turns out that the stream diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index b1eed81476..f5212a3026 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -312,7 +312,7 @@ void LLSettingsVOBase::onAssetDownloadComplete(const LLUUID &asset_id, S32 statu std::stringstream llsdstream(buffer); LLSD llsdsettings; - if (LLSDSerialize::deserialize(llsdsettings, llsdstream, -1)) + if (LLSDSerialize::deserialize(llsdsettings, llsdstream, LLSDSerialize::SIZE_UNLIMITED)) { settings = createFromLLSD(llsdsettings); } @@ -379,7 +379,7 @@ LLSettingsBase::ptr_t LLSettingsVOBase::importFile(const std::string &filename) return LLSettingsBase::ptr_t(); } - if (!LLSDSerialize::deserialize(settings, file, -1)) + if (!LLSDSerialize::deserialize(settings, file, LLSDSerialize::SIZE_UNLIMITED)) { LL_WARNS("SETTINGS") << "Unable to deserialize settings from '" << filename << "'" << LL_ENDL; return LLSettingsBase::ptr_t(); -- cgit v1.2.3 From 74b8ca575ff7f0cfcfd443e03885542bc5b10c46 Mon Sep 17 00:00:00 2001 From: Maxim Nikolenko Date: Thu, 25 May 2023 13:02:52 +0300 Subject: SL-19770 allow changing current preset from My Camera Presets list --- indra/newview/llfloatercamerapresets.cpp | 18 +++++++++++++++++- indra/newview/llfloatercamerapresets.h | 3 +++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloatercamerapresets.cpp b/indra/newview/llfloatercamerapresets.cpp index 300c945a85..a1cbffd094 100644 --- a/indra/newview/llfloatercamerapresets.cpp +++ b/indra/newview/llfloatercamerapresets.cpp @@ -24,6 +24,7 @@ */ #include "llviewerprecompiledheaders.h" +#include "llfloatercamera.h" #include "llfloatercamerapresets.h" #include "llfloaterreg.h" #include "llnotificationsutil.h" @@ -40,7 +41,8 @@ LLFloaterCameraPresets::~LLFloaterCameraPresets() BOOL LLFloaterCameraPresets::postBuild() { mPresetList = getChild("preset_list"); - + mPresetList->setCommitCallback(boost::bind(&LLFloaterCameraPresets::onSelectionChange, this)); + mPresetList->setCommitOnSelectionChange(true); LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCameraPresets::populateList, this)); return TRUE; @@ -58,6 +60,7 @@ void LLFloaterCameraPresets::populateList() std::list preset_names; presetsMgr->loadPresetNamesFromDir(PRESETS_CAMERA, preset_names, DEFAULT_BOTTOM); + std::string active_preset = gSavedSettings.getString("PresetCameraActive"); for (std::list::const_iterator it = preset_names.begin(); it != preset_names.end(); ++it) { @@ -66,6 +69,19 @@ void LLFloaterCameraPresets::populateList() LLCameraPresetFlatItem* item = new LLCameraPresetFlatItem(name, is_default); item->postBuild(); mPresetList->addItem(item); + if(name == active_preset) + { + mPresetList->selectItem(item); + } + } +} + +void LLFloaterCameraPresets::onSelectionChange() +{ + LLCameraPresetFlatItem* selected_preset = dynamic_cast(mPresetList->getSelectedItem()); + if(selected_preset) + { + LLFloaterCamera::switchToPreset(selected_preset->getPresetName()); } } diff --git a/indra/newview/llfloatercamerapresets.h b/indra/newview/llfloatercamerapresets.h index 66430fa399..4430a4209e 100644 --- a/indra/newview/llfloatercamerapresets.h +++ b/indra/newview/llfloatercamerapresets.h @@ -38,6 +38,7 @@ class LLFloaterCameraPresets : public LLFloater virtual void onOpen(const LLSD& key); void populateList(); + void onSelectionChange(); private: LLFloaterCameraPresets(const LLSD& key); @@ -58,6 +59,8 @@ public: virtual void onMouseEnter(S32 x, S32 y, MASK mask); virtual void onMouseLeave(S32 x, S32 y, MASK mask); + std::string getPresetName() { return mPresetName; } + private: void onDeleteBtnClick(); void onResetBtnClick(); -- cgit v1.2.3 From 3b13c0ca15e2bc413731b0be07db6446bb32df1b Mon Sep 17 00:00:00 2001 From: Andrey Lihatskiy Date: Fri, 26 May 2023 19:06:07 +0300 Subject: DRTVWR-582 xcode-14.3 merge follow up --- indra/llcommon/llsdserialize.cpp | 2 +- indra/llcommon/llsdserialize.h | 2 +- indra/newview/llmeshrepository.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index a904ce700e..3db456ddb3 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -2443,7 +2443,7 @@ U8* unzip_llsdNavMesh( bool& valid, size_t& outsize, std::istream& is, S32 size return result; } -char* strip_deprecated_header(char* in, llssize& cur_size, U32* header_size) +char* strip_deprecated_header(char* in, llssize& cur_size, llssize* header_size) { const char* deprecated_header = ""; constexpr size_t deprecated_header_size = 17; diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h index 5ddf0ff552..676b7bfd6a 100644 --- a/indra/llcommon/llsdserialize.h +++ b/indra/llcommon/llsdserialize.h @@ -873,5 +873,5 @@ LL_COMMON_API std::string zip_llsd(LLSD& data); LL_COMMON_API U8* unzip_llsdNavMesh( bool& valid, size_t& outsize,std::istream& is, S32 size); // returns a pointer to the array or past the array if the deprecated header exists -LL_COMMON_API char* strip_deprecated_header(char* in, llssize& cur_size, U32* header_size = nullptr); +LL_COMMON_API char* strip_deprecated_header(char* in, llssize& cur_size, llssize* header_size = nullptr); #endif // LL_LLSDSERIALIZE_H diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index ff888a5af2..d6eba6b4bf 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1863,7 +1863,7 @@ EMeshProcessingResult LLMeshRepoThread::headerReceived(const LLVolumeParams& mes const LLUUID mesh_id = mesh_params.getSculptID(); LLSD header; - U32 header_size = 0; + llssize header_size = 0; if (data_size > 0) { llssize dsize = data_size; -- cgit v1.2.3 From 3790c9ed879b015bcc91f3a9c393fbda643aa62f Mon Sep 17 00:00:00 2001 From: Andrey Lihatskiy Date: Sun, 28 May 2023 06:16:04 +0300 Subject: INTL-490 Japanese Translation Update provided by Logue Takacs --- doc/contributions.txt | 2 + .../skins/default/html/ja/help-offline/index.html | 42 + .../skins/default/html/ja/loading-error/index.html | 124 +- .../skins/default/html/ja/loading/loading.html | 32 +- .../xui/ja/control_table_contents_camera.xml | 72 + .../ja/control_table_contents_columns_basic.xml | 7 + .../xui/ja/control_table_contents_editing.xml | 24 + .../xui/ja/control_table_contents_media.xml | 27 + .../xui/ja/control_table_contents_movement.xml | 62 + .../skins/default/xui/ja/floater_360capture.xml | 18 + indra/newview/skins/default/xui/ja/floater_aaa.xml | 51 + .../newview/skins/default/xui/ja/floater_about.xml | 38 +- .../skins/default/xui/ja/floater_about_land.xml | 723 +- .../skins/default/xui/ja/floater_activeim.xml | 2 +- .../default/xui/ja/floater_add_payment_method.xml | 12 + .../default/xui/ja/floater_adjust_environment.xml | 85 +- .../xui/ja/floater_animation_anim_preview.xml | 14 +- .../xui/ja/floater_animation_bvh_preview.xml | 282 +- .../default/xui/ja/floater_associate_listing.xml | 12 +- .../skins/default/xui/ja/floater_auction.xml | 16 +- .../skins/default/xui/ja/floater_autoreplace.xml | 54 +- .../skins/default/xui/ja/floater_avatar.xml | 2 +- .../skins/default/xui/ja/floater_avatar_picker.xml | 98 +- .../xui/ja/floater_avatar_render_settings.xml | 20 +- .../default/xui/ja/floater_avatar_textures.xml | 118 +- .../skins/default/xui/ja/floater_ban_duration.xml | 28 +- .../skins/default/xui/ja/floater_beacons.xml | 39 +- .../skins/default/xui/ja/floater_big_preview.xml | 2 +- .../skins/default/xui/ja/floater_build_options.xml | 50 +- .../skins/default/xui/ja/floater_bulk_perms.xml | 92 +- .../newview/skins/default/xui/ja/floater_bumps.xml | 30 +- .../skins/default/xui/ja/floater_buy_contents.xml | 32 +- .../skins/default/xui/ja/floater_buy_currency.xml | 111 +- .../default/xui/ja/floater_buy_currency_html.xml | 2 +- .../skins/default/xui/ja/floater_buy_land.xml | 323 +- .../skins/default/xui/ja/floater_buy_object.xml | 38 +- .../skins/default/xui/ja/floater_camera.xml | 78 +- .../default/xui/ja/floater_camera_presets.xml | 6 +- .../skins/default/xui/ja/floater_choose_group.xml | 10 +- .../skins/default/xui/ja/floater_classified.xml | 4 + .../skins/default/xui/ja/floater_color_picker.xml | 62 +- .../default/xui/ja/floater_conversation_log.xml | 12 +- .../xui/ja/floater_conversation_preview.xml | 10 +- .../default/xui/ja/floater_create_landmark.xml | 14 + .../skins/default/xui/ja/floater_critical.xml | 22 +- .../default/xui/ja/floater_delete_pref_preset.xml | 25 +- .../skins/default/xui/ja/floater_destinations.xml | 2 +- .../skins/default/xui/ja/floater_display_name.xml | 24 +- .../default/xui/ja/floater_edit_ext_day_cycle.xml | 214 +- .../default/xui/ja/floater_edit_hover_height.xml | 4 +- .../newview/skins/default/xui/ja/floater_event.xml | 16 +- .../default/xui/ja/floater_experience_search.xml | 2 +- .../default/xui/ja/floater_experienceprofile.xml | 146 +- .../skins/default/xui/ja/floater_experiences.xml | 4 +- .../skins/default/xui/ja/floater_fast_timers.xml | 34 +- .../skins/default/xui/ja/floater_fbc_web.xml | 2 + .../default/xui/ja/floater_fixedenvironment.xml | 50 +- .../skins/default/xui/ja/floater_font_test.xml | 43 +- .../skins/default/xui/ja/floater_forget_user.xml | 11 +- .../skins/default/xui/ja/floater_gesture.xml | 44 +- .../skins/default/xui/ja/floater_god_tools.xml | 162 +- .../skins/default/xui/ja/floater_goto_line.xml | 8 +- .../skins/default/xui/ja/floater_help_browser.xml | 12 +- .../skins/default/xui/ja/floater_how_to.xml | 4 +- indra/newview/skins/default/xui/ja/floater_hud.xml | 2 +- .../skins/default/xui/ja/floater_im_container.xml | 52 +- .../skins/default/xui/ja/floater_im_session.xml | 106 +- .../skins/default/xui/ja/floater_image_preview.xml | 51 +- .../default/xui/ja/floater_import_collada.xml | 30 +- .../skins/default/xui/ja/floater_incoming_call.xml | 44 +- .../skins/default/xui/ja/floater_inspect.xml | 25 +- .../xui/ja/floater_inventory_item_properties.xml | 68 +- .../xui/ja/floater_inventory_view_finder.xml | 66 +- .../default/xui/ja/floater_item_properties.xml | 2 +- .../skins/default/xui/ja/floater_joystick.xml | 200 +- .../skins/default/xui/ja/floater_lagmeter.xml | 202 +- .../skins/default/xui/ja/floater_land_holdings.xml | 60 +- .../skins/default/xui/ja/floater_linkreplace.xml | 18 +- .../default/xui/ja/floater_live_lsleditor.xml | 46 +- .../default/xui/ja/floater_load_pref_preset.xml | 22 +- .../skins/default/xui/ja/floater_lsl_guide.xml | 10 +- indra/newview/skins/default/xui/ja/floater_map.xml | 46 +- .../xui/ja/floater_marketplace_listings.xml | 22 +- .../xui/ja/floater_marketplace_validation.xml | 6 +- .../skins/default/xui/ja/floater_media_browser.xml | 52 +- .../default/xui/ja/floater_media_settings.xml | 8 +- .../skins/default/xui/ja/floater_mem_leaking.xml | 26 +- indra/newview/skins/default/xui/ja/floater_mfa.xml | 7 + .../skins/default/xui/ja/floater_model_preview.xml | 502 +- .../skins/default/xui/ja/floater_moveview.xml | 110 +- .../skins/default/xui/ja/floater_mute_object.xml | 20 +- .../skins/default/xui/ja/floater_my_appearance.xml | 4 +- .../default/xui/ja/floater_my_environments.xml | 53 +- .../skins/default/xui/ja/floater_my_inventory.xml | 2 +- .../skins/default/xui/ja/floater_my_scripts.xml | 2 +- .../skins/default/xui/ja/floater_notification.xml | 8 +- .../xui/ja/floater_notifications_console.xml | 6 +- .../xui/ja/floater_notifications_tabbed.xml | 64 +- .../default/xui/ja/floater_object_weights.xml | 52 +- .../skins/default/xui/ja/floater_openobject.xml | 18 +- .../xui/ja/floater_outfit_photo_preview.xml | 10 + .../default/xui/ja/floater_outfit_save_as.xml | 17 +- .../skins/default/xui/ja/floater_outgoing_call.xml | 52 +- .../xui/ja/floater_pathfinding_characters.xml | 90 +- .../default/xui/ja/floater_pathfinding_console.xml | 199 +- .../xui/ja/floater_pathfinding_linksets.xml | 270 +- indra/newview/skins/default/xui/ja/floater_pay.xml | 48 +- .../skins/default/xui/ja/floater_pay_object.xml | 40 +- .../skins/default/xui/ja/floater_people.xml | 13 +- .../skins/default/xui/ja/floater_perms_default.xml | 64 +- .../skins/default/xui/ja/floater_pick_track.xml | 38 +- .../skins/default/xui/ja/floater_places.xml | 4 +- .../skins/default/xui/ja/floater_post_process.xml | 85 +- .../skins/default/xui/ja/floater_preferences.xml | 47 +- .../ja/floater_preferences_graphics_advanced.xml | 230 +- .../default/xui/ja/floater_preferences_proxy.xml | 64 +- .../xui/ja/floater_preferences_view_advanced.xml | 16 +- .../default/xui/ja/floater_preview_animation.xml | 14 +- .../default/xui/ja/floater_preview_gesture.xml | 110 +- .../default/xui/ja/floater_preview_notecard.xml | 28 +- .../skins/default/xui/ja/floater_preview_sound.xml | 14 +- .../default/xui/ja/floater_preview_texture.xml | 42 +- .../skins/default/xui/ja/floater_preview_trash.xml | 15 +- .../default/xui/ja/floater_price_for_listing.xml | 21 +- .../skins/default/xui/ja/floater_profile.xml | 26 +- .../default/xui/ja/floater_profile_permissions.xml | 10 + .../default/xui/ja/floater_profile_texture.xml | 17 + .../default/xui/ja/floater_publish_classified.xml | 22 +- .../xui/ja/floater_region_debug_console.xml | 2 +- .../skins/default/xui/ja/floater_region_info.xml | 2 +- .../default/xui/ja/floater_region_restarting.xml | 30 +- .../skins/default/xui/ja/floater_report_abuse.xml | 166 +- .../default/xui/ja/floater_save_camera_preset.xml | 21 +- .../default/xui/ja/floater_save_pref_preset.xml | 22 +- .../default/xui/ja/floater_scene_load_stats.xml | 124 +- .../skins/default/xui/ja/floater_script_debug.xml | 10 +- .../default/xui/ja/floater_script_debug_panel.xml | 2 +- .../default/xui/ja/floater_script_ed_prefs.xml | 64 +- .../skins/default/xui/ja/floater_script_limits.xml | 2 +- .../default/xui/ja/floater_script_preview.xml | 12 +- .../skins/default/xui/ja/floater_script_queue.xml | 32 +- .../skins/default/xui/ja/floater_script_search.xml | 18 +- .../skins/default/xui/ja/floater_search.xml | 22 +- .../skins/default/xui/ja/floater_select_key.xml | 18 +- .../skins/default/xui/ja/floater_sell_land.xml | 96 +- .../default/xui/ja/floater_settings_debug.xml | 32 +- .../default/xui/ja/floater_settings_picker.xml | 44 +- .../xui/ja/floater_simple_outfit_snapshot.xml | 7 + .../skins/default/xui/ja/floater_snapshot.xml | 127 +- .../skins/default/xui/ja/floater_sound_devices.xml | 8 +- .../skins/default/xui/ja/floater_sound_preview.xml | 30 +- .../skins/default/xui/ja/floater_spellcheck.xml | 24 +- .../default/xui/ja/floater_spellcheck_import.xml | 20 +- .../newview/skins/default/xui/ja/floater_stats.xml | 215 +- .../skins/default/xui/ja/floater_sys_well.xml | 10 +- .../skins/default/xui/ja/floater_telehub.xml | 35 +- .../skins/default/xui/ja/floater_test_button.xml | 16 + .../skins/default/xui/ja/floater_test_checkbox.xml | 10 + .../skins/default/xui/ja/floater_test_combobox.xml | 30 + .../default/xui/ja/floater_test_inspectors.xml | 21 + .../default/xui/ja/floater_test_layout_stacks.xml | 2 +- .../default/xui/ja/floater_test_line_editor.xml | 14 + .../default/xui/ja/floater_test_radiogroup.xml | 16 + .../skins/default/xui/ja/floater_test_slider.xml | 12 + .../skins/default/xui/ja/floater_test_spinner.xml | 12 + .../default/xui/ja/floater_test_text_editor.xml | 6 + .../xui/ja/floater_test_text_vertical_aligment.xml | 2 +- .../skins/default/xui/ja/floater_texture_ctrl.xml | 86 +- .../xui/ja/floater_texture_fetch_debugger.xml | 112 +- .../newview/skins/default/xui/ja/floater_tools.xml | 728 +- .../skins/default/xui/ja/floater_top_objects.xml | 96 +- indra/newview/skins/default/xui/ja/floater_tos.xml | 29 +- .../skins/default/xui/ja/floater_toybox.xml | 14 +- .../xui/ja/floater_translation_settings.xml | 94 +- .../skins/default/xui/ja/floater_ui_preview.xml | 48 + .../skins/default/xui/ja/floater_url_entry.xml | 20 +- .../default/xui/ja/floater_voice_chat_volume.xml | 4 +- .../skins/default/xui/ja/floater_voice_effect.xml | 214 +- .../skins/default/xui/ja/floater_voice_volume.xml | 4 +- .../skins/default/xui/ja/floater_web_content.xml | 32 +- .../default/xui/ja/floater_whitelist_entry.xml | 12 +- .../skins/default/xui/ja/floater_window_size.xml | 40 +- .../skins/default/xui/ja/floater_world_map.xml | 179 +- indra/newview/skins/default/xui/ja/fonts.xml | 125 + .../skins/default/xui/ja/inspect_avatar.xml | 31 +- .../newview/skins/default/xui/ja/inspect_group.xml | 42 +- .../skins/default/xui/ja/inspect_object.xml | 69 +- .../skins/default/xui/ja/inspect_remote_object.xml | 32 +- .../skins/default/xui/ja/language_settings.xml | 83 +- .../default/xui/ja/menu_add_wearable_gear.xml | 8 +- .../skins/default/xui/ja/menu_attachment_other.xml | 48 +- .../skins/default/xui/ja/menu_attachment_self.xml | 38 +- .../skins/default/xui/ja/menu_avatar_icon.xml | 24 +- .../skins/default/xui/ja/menu_avatar_other.xml | 46 +- .../xui/ja/menu_avatar_rendering_settings.xml | 8 +- .../xui/ja/menu_avatar_rendering_settings_add.xml | 6 +- .../skins/default/xui/ja/menu_avatar_self.xml | 70 +- .../skins/default/xui/ja/menu_cof_attachment.xml | 8 +- .../skins/default/xui/ja/menu_cof_body_part.xml | 6 +- .../skins/default/xui/ja/menu_cof_clothing.xml | 8 +- .../newview/skins/default/xui/ja/menu_cof_gear.xml | 6 +- .../skins/default/xui/ja/menu_conversation.xml | 63 +- .../default/xui/ja/menu_conversation_log_gear.xml | 26 +- .../default/xui/ja/menu_conversation_log_view.xml | 10 +- .../skins/default/xui/ja/menu_copy_paste_color.xml | 5 + .../default/xui/ja/menu_copy_paste_features.xml | 5 + .../skins/default/xui/ja/menu_copy_paste_light.xml | 5 + .../default/xui/ja/menu_copy_paste_object.xml | 5 + .../skins/default/xui/ja/menu_copy_paste_pos.xml | 7 + .../skins/default/xui/ja/menu_copy_paste_rot.xml | 7 + .../skins/default/xui/ja/menu_copy_paste_size.xml | 7 + .../default/xui/ja/menu_copy_paste_texture.xml | 5 + indra/newview/skins/default/xui/ja/menu_edit.xml | 20 +- .../skins/default/xui/ja/menu_favorites.xml | 20 +- .../default/xui/ja/menu_gallery_outfit_tab.xml | 56 +- .../skins/default/xui/ja/menu_gesture_gear.xml | 17 +- .../skins/default/xui/ja/menu_group_plus.xml | 6 +- .../skins/default/xui/ja/menu_hide_navbar.xml | 7 +- .../skins/default/xui/ja/menu_im_conversation.xml | 27 +- .../default/xui/ja/menu_im_session_showmodes.xml | 10 +- .../skins/default/xui/ja/menu_imchiclet_adhoc.xml | 4 +- .../skins/default/xui/ja/menu_imchiclet_group.xml | 8 +- .../skins/default/xui/ja/menu_imchiclet_p2p.xml | 10 +- .../default/xui/ja/menu_inspect_object_gear.xml | 34 +- .../default/xui/ja/menu_inv_offer_chiclet.xml | 4 +- .../skins/default/xui/ja/menu_inventory.xml | 246 +- .../skins/default/xui/ja/menu_inventory_add.xml | 76 +- .../default/xui/ja/menu_inventory_gear_default.xml | 35 +- .../xui/ja/menu_inventory_search_visibility.xml | 7 + indra/newview/skins/default/xui/ja/menu_land.xml | 19 +- .../newview/skins/default/xui/ja/menu_landmark.xml | 10 +- indra/newview/skins/default/xui/ja/menu_login.xml | 74 +- .../skins/default/xui/ja/menu_marketplace_view.xml | 10 +- .../skins/default/xui/ja/menu_media_ctrl.xml | 11 +- .../newview/skins/default/xui/ja/menu_mini_map.xml | 18 +- .../xui/ja/menu_model_import_gear_default.xml | 12 +- .../skins/default/xui/ja/menu_mute_particle.xml | 4 +- indra/newview/skins/default/xui/ja/menu_navbar.xml | 18 +- .../skins/default/xui/ja/menu_nearby_chat.xml | 17 +- .../xui/ja/menu_notification_well_button.xml | 4 +- indra/newview/skins/default/xui/ja/menu_object.xml | 67 +- .../skins/default/xui/ja/menu_object_icon.xml | 13 +- .../skins/default/xui/ja/menu_outfit_gear.xml | 74 +- .../skins/default/xui/ja/menu_outfit_tab.xml | 14 +- .../skins/default/xui/ja/menu_participant_list.xml | 42 +- .../skins/default/xui/ja/menu_participant_view.xml | 25 +- .../default/xui/ja/menu_people_blocked_gear.xml | 15 +- .../default/xui/ja/menu_people_blocked_plus.xml | 6 +- .../default/xui/ja/menu_people_blocked_view.xml | 6 +- .../default/xui/ja/menu_people_friends_view.xml | 14 +- .../skins/default/xui/ja/menu_people_groups.xml | 12 +- .../default/xui/ja/menu_people_groups_view.xml | 4 +- .../skins/default/xui/ja/menu_people_nearby.xml | 32 +- .../xui/ja/menu_people_nearby_multiselect.xml | 16 +- .../default/xui/ja/menu_people_nearby_view.xml | 16 +- .../default/xui/ja/menu_people_recent_view.xml | 8 +- indra/newview/skins/default/xui/ja/menu_picks.xml | 14 +- .../skins/default/xui/ja/menu_picks_plus.xml | 6 +- indra/newview/skins/default/xui/ja/menu_place.xml | 8 +- .../skins/default/xui/ja/menu_place_add_button.xml | 6 +- .../default/xui/ja/menu_places_gear_folder.xml | 29 +- .../default/xui/ja/menu_places_gear_landmark.xml | 39 +- .../default/xui/ja/menu_places_gear_sorting.xml | 7 + .../skins/default/xui/ja/menu_profile_other.xml | 23 + .../skins/default/xui/ja/menu_profile_overflow.xml | 20 +- .../skins/default/xui/ja/menu_profile_self.xml | 12 + .../skins/default/xui/ja/menu_save_outfit.xml | 6 +- .../skins/default/xui/ja/menu_save_settings.xml | 14 +- .../skins/default/xui/ja/menu_script_chiclet.xml | 4 +- .../skins/default/xui/ja/menu_settings_add.xml | 8 +- .../skins/default/xui/ja/menu_settings_gear.xml | 16 +- indra/newview/skins/default/xui/ja/menu_slurl.xml | 8 +- .../default/xui/ja/menu_teleport_history_gear.xml | 9 +- .../default/xui/ja/menu_teleport_history_item.xml | 8 +- .../default/xui/ja/menu_teleport_history_tab.xml | 6 +- .../skins/default/xui/ja/menu_text_editor.xml | 26 +- .../newview/skins/default/xui/ja/menu_toolbars.xml | 10 +- .../skins/default/xui/ja/menu_topinfobar.xml | 14 +- .../skins/default/xui/ja/menu_url_agent.xml | 15 +- .../skins/default/xui/ja/menu_url_email.xml | 6 +- .../skins/default/xui/ja/menu_url_experience.xml | 4 +- .../skins/default/xui/ja/menu_url_group.xml | 9 +- .../newview/skins/default/xui/ja/menu_url_http.xml | 10 +- .../skins/default/xui/ja/menu_url_inventory.xml | 11 +- .../newview/skins/default/xui/ja/menu_url_map.xml | 10 +- .../skins/default/xui/ja/menu_url_objectim.xml | 18 +- .../skins/default/xui/ja/menu_url_parcel.xml | 10 +- .../skins/default/xui/ja/menu_url_slapp.xml | 7 +- .../skins/default/xui/ja/menu_url_slurl.xml | 12 +- .../skins/default/xui/ja/menu_url_teleport.xml | 10 +- indra/newview/skins/default/xui/ja/menu_viewer.xml | 1162 +-- .../default/xui/ja/menu_wearable_list_item.xml | 26 +- .../skins/default/xui/ja/menu_wearing_gear.xml | 12 +- .../skins/default/xui/ja/menu_wearing_tab.xml | 14 +- indra/newview/skins/default/xui/ja/mime_types.xml | 379 +- .../skins/default/xui/ja/mime_types_linux.xml | 352 +- .../skins/default/xui/ja/mime_types_mac.xml | 355 +- .../newview/skins/default/xui/ja/notifications.xml | 8177 ++++++++++++-------- .../skins/default/xui/ja/outfit_accordion_tab.xml | 2 +- .../default/xui/ja/panel_active_object_row.xml | 12 +- .../default/xui/ja/panel_avatar_list_item.xml | 58 +- .../skins/default/xui/ja/panel_avatar_tag.xml | 16 +- .../default/xui/ja/panel_block_list_sidetray.xml | 22 +- .../default/xui/ja/panel_body_parts_list_item.xml | 18 +- .../xui/ja/panel_bodyparts_list_button_bar.xml | 6 +- .../skins/default/xui/ja/panel_bottomtray_lite.xml | 17 +- .../default/xui/ja/panel_camera_preset_item.xml | 8 + .../skins/default/xui/ja/panel_chat_header.xml | 6 +- .../skins/default/xui/ja/panel_chiclet_bar.xml | 26 +- .../skins/default/xui/ja/panel_classified_info.xml | 116 +- .../xui/ja/panel_clothing_list_button_bar.xml | 6 +- .../default/xui/ja/panel_clothing_list_item.xml | 22 +- .../skins/default/xui/ja/panel_cof_wearables.xml | 13 +- .../xui/ja/panel_conversation_list_item.xml | 17 +- .../xui/ja/panel_conversation_log_list_item.xml | 12 +- .../xui/ja/panel_deletable_wearable_list_item.xml | 10 +- .../xui/ja/panel_dummy_clothing_list_item.xml | 16 +- .../skins/default/xui/ja/panel_edit_alpha.xml | 25 +- .../skins/default/xui/ja/panel_edit_eyes.xml | 18 +- .../skins/default/xui/ja/panel_edit_gloves.xml | 20 +- .../skins/default/xui/ja/panel_edit_hair.xml | 24 +- .../skins/default/xui/ja/panel_edit_jacket.xml | 25 +- .../skins/default/xui/ja/panel_edit_pants.xml | 22 +- .../skins/default/xui/ja/panel_edit_physics.xml | 38 +- .../skins/default/xui/ja/panel_edit_shape.xml | 60 +- .../skins/default/xui/ja/panel_edit_shirt.xml | 22 +- .../skins/default/xui/ja/panel_edit_shoes.xml | 22 +- .../skins/default/xui/ja/panel_edit_skin.xml | 28 +- .../skins/default/xui/ja/panel_edit_skirt.xml | 20 +- .../skins/default/xui/ja/panel_edit_socks.xml | 20 +- .../skins/default/xui/ja/panel_edit_tattoo.xml | 18 +- .../skins/default/xui/ja/panel_edit_underpants.xml | 20 +- .../skins/default/xui/ja/panel_edit_undershirt.xml | 20 +- .../skins/default/xui/ja/panel_edit_universal.xml | 34 +- .../skins/default/xui/ja/panel_edit_wearable.xml | 180 +- .../skins/default/xui/ja/panel_experience_info.xml | 101 +- .../xui/ja/panel_experience_list_editor.xml | 38 +- .../default/xui/ja/panel_experience_list_item.xml | 8 +- .../skins/default/xui/ja/panel_experience_log.xml | 51 +- .../default/xui/ja/panel_experience_search.xml | 73 +- .../skins/default/xui/ja/panel_experiences.xml | 18 +- .../skins/default/xui/ja/panel_group_bulk_ban.xml | 58 +- .../xui/ja/panel_group_creation_sidetray.xml | 81 +- .../skins/default/xui/ja/panel_group_general.xml | 90 +- .../default/xui/ja/panel_group_info_sidetray.xml | 72 +- .../skins/default/xui/ja/panel_group_invite.xml | 43 +- .../default/xui/ja/panel_group_land_money.xml | 129 +- .../skins/default/xui/ja/panel_group_list_item.xml | 13 +- .../default/xui/ja/panel_group_list_item_short.xml | 14 +- .../skins/default/xui/ja/panel_group_notices.xml | 94 +- .../skins/default/xui/ja/panel_group_notify.xml | 24 +- .../skins/default/xui/ja/panel_group_roles.xml | 206 +- .../skins/default/xui/ja/panel_hide_beacon.xml | 4 + .../skins/default/xui/ja/panel_instant_message.xml | 19 +- .../skins/default/xui/ja/panel_inventory_item.xml | 7 +- .../skins/default/xui/ja/panel_landmark_info.xml | 88 +- indra/newview/skins/default/xui/ja/panel_login.xml | 50 +- .../skins/default/xui/ja/panel_login_first.xml | 89 +- .../skins/default/xui/ja/panel_main_inventory.xml | 66 +- .../default/xui/ja/panel_marketplace_listings.xml | 21 +- .../ja/panel_marketplace_listings_inventory.xml | 2 +- .../xui/ja/panel_marketplace_listings_listed.xml | 2 +- .../ja/panel_marketplace_listings_unassociated.xml | 2 +- .../xui/ja/panel_marketplace_listings_unlisted.xml | 2 +- .../xui/ja/panel_media_settings_general.xml | 56 +- .../xui/ja/panel_media_settings_permissions.xml | 42 +- .../xui/ja/panel_media_settings_security.xml | 16 +- .../skins/default/xui/ja/panel_navigation_bar.xml | 38 +- .../skins/default/xui/ja/panel_nearby_chat.xml | 12 +- .../skins/default/xui/ja/panel_nearby_chat_bar.xml | 6 +- .../skins/default/xui/ja/panel_nearby_media.xml | 124 +- .../skins/default/xui/ja/panel_notification.xml | 15 + .../xui/ja/panel_notification_list_item.xml | 127 +- .../default/xui/ja/panel_notifications_channel.xml | 34 +- .../skins/default/xui/ja/panel_notify_textbox.xml | 20 +- .../default/xui/ja/panel_online_status_toast.xml | 2 +- .../skins/default/xui/ja/panel_outfit_edit.xml | 146 +- .../skins/default/xui/ja/panel_outfit_gallery.xml | 55 +- .../default/xui/ja/panel_outfit_gallery_item.xml | 12 +- .../xui/ja/panel_outfit_snapshot_inventory.xml | 10 + .../default/xui/ja/panel_outfits_inventory.xml | 46 +- .../ja/panel_outfits_inventory_gear_default.xml | 13 +- .../skins/default/xui/ja/panel_outfits_list.xml | 19 +- .../skins/default/xui/ja/panel_outfits_wearing.xml | 26 +- .../newview/skins/default/xui/ja/panel_people.xml | 132 +- .../skins/default/xui/ja/panel_place_profile.xml | 214 +- .../newview/skins/default/xui/ja/panel_places.xml | 115 +- .../default/xui/ja/panel_postcard_message.xml | 28 +- .../default/xui/ja/panel_postcard_settings.xml | 22 +- .../default/xui/ja/panel_preferences_advanced.xml | 54 +- .../default/xui/ja/panel_preferences_alerts.xml | 20 +- .../default/xui/ja/panel_preferences_chat.xml | 196 +- .../default/xui/ja/panel_preferences_colors.xml | 60 +- .../default/xui/ja/panel_preferences_controls.xml | 11 + .../default/xui/ja/panel_preferences_general.xml | 124 +- .../default/xui/ja/panel_preferences_graphics1.xml | 73 +- .../default/xui/ja/panel_preferences_grids.xml | 17 + .../default/xui/ja/panel_preferences_move.xml | 66 +- .../default/xui/ja/panel_preferences_privacy.xml | 46 +- .../default/xui/ja/panel_preferences_setup.xml | 62 +- .../default/xui/ja/panel_preferences_sound.xml | 70 +- .../default/xui/ja/panel_preferences_uploads.xml | 29 +- .../xui/ja/panel_presets_camera_pulldown.xml | 7 + .../default/xui/ja/panel_presets_pulldown.xml | 8 +- .../default/xui/ja/panel_prim_media_controls.xml | 132 +- .../default/xui/ja/panel_profile_classified.xml | 184 +- .../default/xui/ja/panel_profile_classifieds.xml | 12 +- .../default/xui/ja/panel_profile_firstlife.xml | 2 +- .../skins/default/xui/ja/panel_profile_notes.xml | 12 +- .../skins/default/xui/ja/panel_profile_pick.xml | 18 +- .../skins/default/xui/ja/panel_profile_picks.xml | 16 +- .../default/xui/ja/panel_profile_secondlife.xml | 163 +- .../skins/default/xui/ja/panel_profile_web.xml | 18 +- .../skins/default/xui/ja/panel_progress.xml | 16 +- .../skins/default/xui/ja/panel_region_access.xml | 108 +- .../skins/default/xui/ja/panel_region_covenant.xml | 106 +- .../skins/default/xui/ja/panel_region_debug.xml | 54 +- .../default/xui/ja/panel_region_environment.xml | 147 +- .../skins/default/xui/ja/panel_region_estate.xml | 78 +- .../default/xui/ja/panel_region_experiences.xml | 41 +- .../skins/default/xui/ja/panel_region_general.xml | 73 +- .../skins/default/xui/ja/panel_region_terrain.xml | 88 +- .../skins/default/xui/ja/panel_script_ed.xml | 84 +- .../default/xui/ja/panel_script_experience.xml | 20 +- .../xui/ja/panel_script_limits_my_avatar.xml | 26 +- .../xui/ja/panel_script_limits_region_memory.xml | 36 +- .../default/xui/ja/panel_script_question_toast.xml | 4 +- .../skins/default/xui/ja/panel_scrolling_param.xml | 18 +- .../default/xui/ja/panel_scrolling_param_base.xml | 4 +- .../default/xui/ja/panel_settings_sky_atmos.xml | 40 +- .../default/xui/ja/panel_settings_sky_clouds.xml | 41 +- .../default/xui/ja/panel_settings_sky_density.xml | 50 +- .../default/xui/ja/panel_settings_sky_sunmoon.xml | 63 +- .../skins/default/xui/ja/panel_settings_water.xml | 66 +- .../default/xui/ja/panel_side_tray_tab_caption.xml | 10 +- .../default/xui/ja/panel_sidetray_home_tab.xml | 60 +- .../default/xui/ja/panel_snapshot_inventory.xml | 36 +- .../skins/default/xui/ja/panel_snapshot_local.xml | 56 +- .../default/xui/ja/panel_snapshot_options.xml | 14 +- .../default/xui/ja/panel_snapshot_postcard.xml | 30 +- .../default/xui/ja/panel_snapshot_profile.xml | 34 +- .../skins/default/xui/ja/panel_sound_devices.xml | 32 +- .../default/xui/ja/panel_stand_stop_flying.xml | 9 +- .../skins/default/xui/ja/panel_status_bar.xml | 51 +- .../skins/default/xui/ja/panel_sys_well_item.xml | 6 +- .../default/xui/ja/panel_teleport_history.xml | 34 +- .../default/xui/ja/panel_teleport_history_item.xml | 8 +- .../skins/default/xui/ja/panel_tools_texture.xml | 196 +- .../skins/default/xui/ja/panel_voice_effect.xml | 20 +- .../skins/default/xui/ja/panel_volume_pulldown.xml | 24 +- .../skins/default/xui/ja/panel_world_map.xml | 82 +- .../newview/skins/default/xui/ja/role_actions.xml | 154 +- .../skins/default/xui/ja/sidepanel_appearance.xml | 30 +- .../skins/default/xui/ja/sidepanel_inventory.xml | 72 +- .../skins/default/xui/ja/sidepanel_item_info.xml | 134 +- .../skins/default/xui/ja/sidepanel_task_info.xml | 206 +- indra/newview/skins/default/xui/ja/strings.xml | 6093 ++++++++++----- .../skins/default/xui/ja/teleport_strings.xml | 78 +- .../default/xui/ja/widgets/bodyparts_list_item.xml | 9 + .../default/xui/ja/widgets/clothing_list_item.xml | 11 + .../ja/widgets/deletable_wearable_list_item.xml | 6 + .../skins/default/xui/ja/widgets/density_ctrl.xml | 23 +- .../xui/ja/widgets/dummy_clothing_list_item.xml | 7 + .../default/xui/ja/widgets/flat_list_view.xml | 4 + .../xui/ja/widgets/inbox_folder_view_folder.xml | 4 + .../xui/ja/widgets/inbox_folder_view_item.xml | 4 + .../default/xui/ja/widgets/menu_item_separator.xml | 2 + .../default/xui/ja/widgets/menu_item_tear_off.xml | 3 + .../skins/default/xui/ja/widgets/name_editor.xml | 2 + .../default/xui/ja/widgets/panel_camera_item.xml | 8 + .../skins/default/xui/ja/widgets/person_view.xml | 12 + .../default/xui/ja/widgets/sun_moon_trackball.xml | 19 + .../xui/ja/widgets/wearable_outfit_list_item.xml | 12 + .../skins/default/xui/ja/widgets/xy_vector.xml | 11 + indra/newview/skins/default/xui/ja/xui_version.xml | 6 +- 475 files changed, 20032 insertions(+), 17175 deletions(-) create mode 100644 indra/newview/skins/default/html/ja/help-offline/index.html create mode 100644 indra/newview/skins/default/xui/ja/control_table_contents_camera.xml create mode 100644 indra/newview/skins/default/xui/ja/control_table_contents_columns_basic.xml create mode 100644 indra/newview/skins/default/xui/ja/control_table_contents_editing.xml create mode 100644 indra/newview/skins/default/xui/ja/control_table_contents_media.xml create mode 100644 indra/newview/skins/default/xui/ja/control_table_contents_movement.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_360capture.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_aaa.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_add_payment_method.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_classified.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_create_landmark.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_fbc_web.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_mfa.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_outfit_photo_preview.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_profile_permissions.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_profile_texture.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_simple_outfit_snapshot.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_button.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_checkbox.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_combobox.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_inspectors.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_line_editor.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_radiogroup.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_slider.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_spinner.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_test_text_editor.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_ui_preview.xml create mode 100644 indra/newview/skins/default/xui/ja/fonts.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_profile_other.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_profile_self.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_camera_preset_item.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_hide_beacon.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_notification.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_outfit_snapshot_inventory.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_preferences_controls.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_preferences_grids.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_presets_camera_pulldown.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/bodyparts_list_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/clothing_list_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/deletable_wearable_list_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/dummy_clothing_list_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/flat_list_view.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/inbox_folder_view_folder.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/inbox_folder_view_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/menu_item_separator.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/menu_item_tear_off.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/name_editor.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/panel_camera_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/person_view.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/sun_moon_trackball.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/wearable_outfit_list_item.xml create mode 100644 indra/newview/skins/default/xui/ja/widgets/xy_vector.xml diff --git a/doc/contributions.txt b/doc/contributions.txt index e764e89e35..4f22ff0d84 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -931,6 +931,8 @@ Lexi Frua Lillie Cordeaux Lilly Zenovka Lizzy Macarthur +Logue Takacs + INTL-490 Luban Yiyuan Luc Starsider Luminous Luminos diff --git a/indra/newview/skins/default/html/ja/help-offline/index.html b/indra/newview/skins/default/html/ja/help-offline/index.html new file mode 100644 index 0000000000..aeaafe8216 --- /dev/null +++ b/indra/newview/skins/default/html/ja/help-offline/index.html @@ -0,0 +1,42 @@ + + + + + オフラインヘルプ + + + +
+

Second Lifeオフラインヘルプ

+

+ オンラインではなく、リモートでヘルプを取得しないように構成されています。 +
+ これは、さらに作業が完了するまで利用できるすべてのヘルプです。うん。 +

+
+ + diff --git a/indra/newview/skins/default/html/ja/loading-error/index.html b/indra/newview/skins/default/html/ja/loading-error/index.html index d969c03098..27d4425016 100644 --- a/indra/newview/skins/default/html/ja/loading-error/index.html +++ b/indra/newview/skins/default/html/ja/loading-error/index.html @@ -1,25 +1,99 @@ - - - -接続できません - - -

-

Second Lifeによるログインサーバーへの接続が確立できません。 -

-

インターネット接続を確認してください。 お使いのコンピュータやネットワークがファイヤウォールまたはプロキシにより保護されている場合は、Second Lifeによるネットワークへのアクセスが許可されていることを確認してください。 -

-
- - + + + + + 接続できません + + + +
+ unabletoconnect +
+

Second Lifeによるログインサーバーへの接続が確立できません。

+

+ インターネット接続を確認してください。 + お使いのコンピュータやネットワークがファイヤウォールまたはプロキシにより保護されている場合は、 + Second + Lifeによるネットワークへのアクセスが許可されていることを確認してください。 +

+
+ +
+
+ + diff --git a/indra/newview/skins/default/html/ja/loading/loading.html b/indra/newview/skins/default/html/ja/loading/loading.html index 35cf74a35f..ea576ed082 100644 --- a/indra/newview/skins/default/html/ja/loading/loading.html +++ b/indra/newview/skins/default/html/ja/loading/loading.html @@ -1,10 +1,22 @@ - - - - - - -
-
   ロード中... -
- + + + + + 読み込んでいます… + + + + loading +
+

   読み込んでいます…

+ + diff --git a/indra/newview/skins/default/xui/ja/control_table_contents_camera.xml b/indra/newview/skins/default/xui/ja/control_table_contents_camera.xml new file mode 100644 index 0000000000..ce4c89a49f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/control_table_contents_camera.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/control_table_contents_columns_basic.xml b/indra/newview/skins/default/xui/ja/control_table_contents_columns_basic.xml new file mode 100644 index 0000000000..e556a41e57 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/control_table_contents_columns_basic.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/control_table_contents_editing.xml b/indra/newview/skins/default/xui/ja/control_table_contents_editing.xml new file mode 100644 index 0000000000..9a2286b873 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/control_table_contents_editing.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/control_table_contents_media.xml b/indra/newview/skins/default/xui/ja/control_table_contents_media.xml new file mode 100644 index 0000000000..0d69c10a0d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/control_table_contents_media.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/control_table_contents_movement.xml b/indra/newview/skins/default/xui/ja/control_table_contents_movement.xml new file mode 100644 index 0000000000..f129a7edad --- /dev/null +++ b/indra/newview/skins/default/xui/ja/control_table_contents_movement.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/floater_360capture.xml b/indra/newview/skins/default/xui/ja/floater_360capture.xml new file mode 100644 index 0000000000..f89291fb2d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_360capture.xml @@ -0,0 +1,18 @@ + + + + 品質 + + + + + + + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml index b9e10c071c..da3d71e31b 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml index fa1137c7c5..aae708e257 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -1,21 +1,21 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml index 01699d1593..8c697317a5 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml index 3e706cd403..8a691467a8 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -1,26 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml index 59c80bdb0e..0b60751bb3 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml index e4f78cad31..eb696ec534 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml index b0a619bcb0..80ed3b19c8 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml index aa07b9476e..3e4ab1f856 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml index eb5faa2545..8af5189f87 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml index d984342896..47d4f76e48 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml index 07bcefd9b3..f6ce0e6c6c 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml index 0de6a5f22f..ff6884f24d 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation.xml @@ -1,33 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml index c9d4f947a4..7e43b8b61f 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml index bd4812603f..c239eb9543 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml new file mode 100644 index 0000000000..819b05f854 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml new file mode 100644 index 0000000000..ac211997bf --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml new file mode 100644 index 0000000000..80d7eeff31 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml new file mode 100644 index 0000000000..ed1491298f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml new file mode 100644 index 0000000000..92e0ec74ba --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml new file mode 100644 index 0000000000..9504f39ef1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml new file mode 100644 index 0000000000..1ee1d6a914 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml new file mode 100644 index 0000000000..a596fbe103 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_edit.xml b/indra/newview/skins/default/xui/ja/menu_edit.xml index c2ef0179b2..0152675de7 100644 --- a/indra/newview/skins/default/xui/ja/menu_edit.xml +++ b/indra/newview/skins/default/xui/ja/menu_edit.xml @@ -1,12 +1,12 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_favorites.xml b/indra/newview/skins/default/xui/ja/menu_favorites.xml index 4708b1446c..94361555fe 100644 --- a/indra/newview/skins/default/xui/ja/menu_favorites.xml +++ b/indra/newview/skins/default/xui/ja/menu_favorites.xml @@ -1,10 +1,14 @@ - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml index 88c3aee042..2527e373f4 100644 --- a/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml @@ -1,23 +1,35 @@ - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml index 3eacfb3507..333db46380 100644 --- a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml @@ -1,10 +1,11 @@ - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_group_plus.xml b/indra/newview/skins/default/xui/ja/menu_group_plus.xml index 3787f7d645..52cc5e69e1 100644 --- a/indra/newview/skins/default/xui/ja/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_group_plus.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml index 2e633ae1b2..3a9fb3570a 100644 --- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml @@ -1,6 +1,5 @@ - - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml index 55cd6610f7..8899b69f1a 100644 --- a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml @@ -1,15 +1,16 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml index 222a741718..5ef2a4152a 100644 --- a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml +++ b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml index 8cd6fa4a27..26b581b793 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml index 5bcb96f083..7ae8765df4 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml index 5453f998fa..61a9bae73c 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml index 5a0519ba19..ec5abea6b2 100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml @@ -1,19 +1,19 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml index 9a4a8138f5..d9642e3c0c 100644 --- a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 7f68c18e0b..f25c32c084 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -1,117 +1,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index eecf166a70..3f43469c6f 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index ad60b0d01f..7a8adcb9fb 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -1,18 +1,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml b/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml new file mode 100644 index 0000000000..f76be9631a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml index 3754bd7fa4..a65504b14c 100644 --- a/indra/newview/skins/default/xui/ja/menu_land.xml +++ b/indra/newview/skins/default/xui/ja/menu_land.xml @@ -1,10 +1,13 @@ - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml index c134422955..06345c5074 100644 --- a/indra/newview/skins/default/xui/ja/menu_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_landmark.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 61b473858b..5ba2092648 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml index bf38075556..6c6913db5d 100644 --- a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml index faae4ef717..6f4f4938f4 100644 --- a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml @@ -1,7 +1,8 @@ - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml index 2e733ee24b..77a2e60cda 100644 --- a/indra/newview/skins/default/xui/ja/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml index 43f86e84bf..f35e74afc5 100644 --- a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml index 8dab025309..38b736ae9b 100644 --- a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml +++ b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml index 9ae2e58198..f3e274313e 100644 --- a/indra/newview/skins/default/xui/ja/menu_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_navbar.xml @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml index c2e4a27686..42a6c66168 100644 --- a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml @@ -1,9 +1,12 @@ - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml index 913bae8958..3852efcdd4 100644 --- a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml index 8da1d5d000..2a1dd7f648 100644 --- a/indra/newview/skins/default/xui/ja/menu_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -1,35 +1,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml index 7b55a64eef..163c8d1779 100644 --- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml @@ -1,8 +1,9 @@ - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml index 4946d58fd8..962d25bb07 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml @@ -1,36 +1,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml index 9491c22f31..66ebb79bb9 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 64d8ded722..2f40a033da 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -1,21 +1,25 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_participant_view.xml b/indra/newview/skins/default/xui/ja/menu_participant_view.xml index 5816351d9d..ef61874763 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_view.xml @@ -1,13 +1,16 @@ - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml index f74399f2ba..8d80ddebad 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml index 3e74b2ddff..1d89e15f64 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml index 4b86a353f4..db586365b2 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml index f290bec652..fee506c511 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml index 2c0c85ba28..91044bd283 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml index 4a9e402fa4..07144be420 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index 87f1d26ca4..641eba496a 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml index fe85e278cf..34935305d1 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml index 2217288987..7b56f1daf8 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml index feaeba4398..da27372963 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_picks.xml b/indra/newview/skins/default/xui/ja/menu_picks.xml index 011d3d2526..4a5a42ad05 100644 --- a/indra/newview/skins/default/xui/ja/menu_picks.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks.xml @@ -1,8 +1,10 @@ - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml index 84bf90fea0..62eb8327bc 100644 --- a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_place.xml b/indra/newview/skins/default/xui/ja/menu_place.xml index a9f05e126d..f45f9211ed 100644 --- a/indra/newview/skins/default/xui/ja/menu_place.xml +++ b/indra/newview/skins/default/xui/ja/menu_place.xml @@ -1,7 +1,5 @@ - - - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml index d19bc44451..d6a13b92ba 100644 --- a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml index c455204722..c9fa92b6a2 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml @@ -1,16 +1,15 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml index 579f2c2cbd..16508dde4a 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml @@ -1,19 +1,22 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml new file mode 100644 index 0000000000..197b61af30 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_profile_other.xml b/indra/newview/skins/default/xui/ja/menu_profile_other.xml new file mode 100644 index 0000000000..760186506f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_profile_other.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml index 9d3a5dda1c..1dd29a9c2a 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml @@ -1,12 +1,12 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_profile_self.xml b/indra/newview/skins/default/xui/ja/menu_profile_self.xml new file mode 100644 index 0000000000..ec10d92629 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_profile_self.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml index 6513d9264a..6d8f2381d9 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_save_settings.xml b/indra/newview/skins/default/xui/ja/menu_save_settings.xml index 44fb1fb30b..f24700d449 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_settings.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_settings.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml index a89dd0bcbe..c4bc424927 100644 --- a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_settings_add.xml index 814ad9c1a6..9e64476446 100644 --- a/indra/newview/skins/default/xui/ja/menu_settings_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_settings_add.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_settings_gear.xml b/indra/newview/skins/default/xui/ja/menu_settings_gear.xml index 064eae95bf..a44786b414 100644 --- a/indra/newview/skins/default/xui/ja/menu_settings_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_settings_gear.xml @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml index 61ba3085d9..9e58ec31b7 100644 --- a/indra/newview/skins/default/xui/ja/menu_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml index 901eab9166..fd4dffeefa 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml @@ -1,6 +1,7 @@ - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml index 1cc230e5b6..dc34bc6463 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml index 4dd44d2ec8..391be973f8 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_text_editor.xml b/indra/newview/skins/default/xui/ja/menu_text_editor.xml index eda973c888..48fd8ad243 100644 --- a/indra/newview/skins/default/xui/ja/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/ja/menu_text_editor.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml index d5363a5131..9bb4eaf496 100644 --- a/indra/newview/skins/default/xui/ja/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml index 1a67a2a8f7..ea1e12ab2b 100644 --- a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml @@ -1,7 +1,11 @@ - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml index 639602ce3c..d6488af27b 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_email.xml b/indra/newview/skins/default/xui/ja/menu_url_email.xml index 6c41d759fe..1ba8d6a64e 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_email.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_email.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_experience.xml b/indra/newview/skins/default/xui/ja/menu_url_experience.xml index 582784c2f0..83d7029527 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_experience.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_experience.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml index 1dd3d79438..9214d67dea 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_group.xml @@ -1,6 +1,7 @@ - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml index c3da8a8686..0bec7cd2be 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_http.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml index 147ab44a1b..7a13030b64 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml @@ -1,6 +1,7 @@ - + - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_map.xml b/indra/newview/skins/default/xui/ja/menu_url_map.xml index 8d41e1a571..75813f9017 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_map.xml @@ -1,6 +1,8 @@ - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index 96f8b3f7b1..ef76e5484f 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml @@ -1,10 +1,12 @@ - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml index 8d264059d3..0c1eab8dad 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml @@ -1,6 +1,8 @@ - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml index a516c5a075..78f3997bf8 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml @@ -1,5 +1,6 @@ - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml index 2c857ec915..e0d4427008 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml @@ -1,7 +1,9 @@ - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml index c3507a9a33..e6941fb8bd 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml @@ -1,6 +1,8 @@ - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index d5ac67b9e6..2428ab51cd 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -1,495 +1,669 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml index 02029230ba..f6473c1e82 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml index 48aac2ed05..75fa3f69b3 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml index 8c331bc008..7845ff9aad 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index 3b29a622a4..23bab3b0b2 100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -1,240 +1,143 @@ - - - - ここにWebコンテンツがあります。 - - - Webコンテンツを表示 - - - - - - ここにはムービーがあります - - - ムービー再生 - - - - - - ここには画像があります - - - ここの画像を表示 - - - - - - ここではオーディオが聞けます - - - ここのオーディオを再生する - - - - - - ここにメディアなし - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + (不明) + なし + + + この場所には、Webコンテンツが含まれています。 + Web コンテンツを表示する + + + + この場所には、ムービーがあります。 + ムービーを再生する + + + + この場所には、画像があります + この場所の画像を表示する + + + + この場所には、オーディオがあります。 + この場所のオーディオを再生する + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml index cb1e48148f..61574b74f9 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -1,225 +1,131 @@ - - - - このロケーションには Web コンテンツが含まれています - - - Web コンテンツを表示する - - - - - - ここにはムービーがあります - - - ムービーを再生する - - - - - - このロケーションには画像があります - - - このロケーションの画像を表示する - - - - - - このロケーションにはオーディオがあります - - - このロケーションのオーディオを再生する - - - - - - ここにメディアなし - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + (不明) + なし + + + この場所には、Webコンテンツが含まれています。 + Web コンテンツを表示する + + + + この場所には、ムービーがあります。 + ムービーを再生する + + + + この場所には、画像があります + この場所の画像を表示する + + + + この場所には、オーディオがあります。 + この場所のオーディオを再生する + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml index cb1e48148f..0bfc9aeb99 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -1,225 +1,134 @@ - - - - このロケーションには Web コンテンツが含まれています - - - Web コンテンツを表示する - - - - - - ここにはムービーがあります - - - ムービーを再生する - - - - - - このロケーションには画像があります - - - このロケーションの画像を表示する - - - - - - このロケーションにはオーディオがあります - - - このロケーションのオーディオを再生する - - - - - - ここにメディアなし - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + (不明) + なし + + + この場所には、Webコンテンツが含まれています。 + Web コンテンツを表示する + + + + この場所には、ムービーがあります。 + ムービーを再生する + + + + この場所には、画像があります + この場所の画像を表示する + + + + この場所には、オーディオがあります。 + この場所のオーディオを再生する + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 72b4d21eb2..7521c2da01 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -1,3184 +1,5317 @@ - + - 今後は表示しない - 以後、これを表示しない + 次回からこのメッセージを表示しない + + 次回からこのメッセージを表示しない (現セッションで) - 常にこのオプションを選択 - 閉じる - - - - - - - - - あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。 - -エラー詳細: 「 [_NAME] 」という通知は notifications.xml にありませんでした。 - - - - フロータエラー:下記のコントロールが見つかりませんでした: + + 常にこのオプションを選択 + + 閉じる + + + + + + + + + + + + + + + + 現在使用中の[APP_NAME]のバージョンでは、受け取った通知メッセージを表示することができません。 +最新のビューアーがインストールされている事をご確認ください。 + +エラー詳細:「 [_NAME] 」という通知メッセージは、notifications.xmlに定義されていませんでした。 + fail + + + + フローターエラー:以下のコントロールが見つかりませんでした: + [CONTROLS] - - - - 現在利用可能なチュートリアルはありません。 - - - [MESSAGE] - - [MESSAGE] - - - - [MESSAGE] - - - - [APP_NAME] をアップデート中にエラーが発生しました。 ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。 - - - - [SECOND_LIFE_GRID] に接続できませんでした。 -「[DIAGNOSTIC]」 -インターネット接続が正常かご確認ください。 - - - - メッセージテンプレート [PATH] がありませんでした。 - - - - 現在の衣類、身体部位の変更を保存しますか? - - - - これらのアイテムの 1 つまたは複数をマーチャントアウトボックスにコピーする許可がありません。移動するか、置き去りにすることはできます。 - - - - マーチャントアウトボックスの最上位に転送した各アイテムにつき、それぞれ 1 つの新しいフォルダが作成されました。 - - - - 成功 - -マーケットプレイスに正常に送信されたすべてのフォルダ - - - - 一部のフォルダは転送されませんでした - -一部のフォルダがマーケットプレイスに送信されたときにエラーが発生しました。これらのフォルダはまだマーチャントアウトボックス内にあります。 - -詳細については、[[MARKETPLACE_IMPORTS_URL] エラーログ]をご覧ください。 - - - - '[ERROR_CODE]' エラーで転送できませんでした - -システムまたはネットワークのエラーのため、フォルダはマーケットプレイスに送信されませんでした。後でもう一度お試しください。 - - - - '[ERROR_CODE]' エラーでマーケットプレイスを初期化できませんでした - -システムまたはネットワークのエラーのため、マーケットプレイスの初期化に失敗しました。後でもう一度お試しください。 - - - - 在庫フォルダへのコピーまたは移動がエラーにより失敗しました: + fail + + -'[ERROR_CODE]' - - - - マーケットプレイスのリストへのコピーまたは移動がエラーにより失敗しました: + 現在利用可能なチュートリアルはありません。 + fail + + -'[ERROR_CODE]' - - - - マーケットプレイスによる取引が次のエラーにより失敗しました: - -[ERROR_REASON][ERROR_DESCRIPTION] - - - - この製品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。リストを編集するか、リストフォルダにエラーがないか確認してください。 - - - - マーケットプレイスへのリスト表示が次のエラーで失敗しました : - -'[ERROR_CODE]' - - - - このバージョンフォルダの有効化が次のエラーにより失敗しました : + [MESSAGE] + + [MESSAGE] + + + [MESSAGE] + + + + [APP_NAME]のアップデート中にエラーが発生しました。[http://get.secondlife.com 最新バージョンのビューアーをダウンロード]してください。 + + + + [SECOND_LIFE_GRID]に接続できませんでした。 +[DIAGNOSTIC] + +インターネット接続が正常かご確認ください。 + fail + + + + ビューアがサーバーから不正な形式の応答を受け取りました。インターネット接続が正常に機能していることを確認してから、後でもう一度お試しください。 + +これが誤りだと思われる場合は、サポートにお問い合わせください。 + fail + + + + メッセージテンプレート[PATH]がありませんでした。 + + fail + + + 現在の服装/身体部位の変更を保存しますか? + + + + これらのアイテムの1つ以上を販売用の送信トレイにコピーする権限がありません。移動したり残したままにすることはできます。 + + + + 販売ボックスの最上位に転送した各アイテムにつき、それぞれ1つの新しいフォルダが作成されました。 + + + + + 成功しました。 + +すべてのフォルダが、マーケットプレイスに正常に送信されました。 + + + + 一部のフォルダは送信できていません。 + +一部のフォルダが、マーケットプレイスに送信されるときにエラーが発生しました。これらのフォルダは、販売者の送信トレイにまだ残っています。 + +詳細につきましては、[[MARKETPLACE_IMPORTS_URL] エラーログ]をご確認ください。 + + + 以下のエラーで転送できませんでした:[ERROR_CODE] + +システムまたはネットワークのエラーのため、フォルダはマーケットプレイスに送信されませんでした。お手数ですが、後でもう一度やり直してください。 + + + + 以下のエラーでマーケットプレイスを初期化できませんでした:[ERROR_CODE] + +システムまたはネットワークのエラーのため、マーケットプレイスの初期化に失敗しました。お手数ですが、後でもう一度やり直してください。 + + + + 在庫フォルダへのコピーまたは移動がエラーにより失敗しました:[ERROR_CODE] + + + マーケットプレイスのリストへのコピーまたは移動が以下のエラーにより失敗しました:[ERROR_CODE] + + + マーケットプレイスによる取引が以下のエラーにより失敗しました:[ERROR_REASON] +[ERROR_DESCRIPTION] + + + この商品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。 +リストを編集するか、リストフォルダにエラーがないか確認してください。 + + + マーケットプレイスへのリスト表示が次のエラーで失敗しました: '[ERROR_CODE]' - - - - リストを作成するために、リストするコンテンツの階層を固定しました。 - - - - この操作により、このリストの有効な内容が変更されます。続けますか? - - - - マーケットプレイスのリストウィンドウにドラッグしたアイテムは元の場所からコピーされるのではなく、移動します。続けますか? - - - - リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けますか? - - - - これらのアイテムの 1 つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、置き去りにすることはできます。 - - - - この操作により、このリストが削除されます。続けますか? - - - - この操作により、現在のリストのバージョンフォルダが無効になります。続けますか? - - - - このリストをアップデートできませんでした。 -[[URL] ここをクリック] してマーケットプレイスで編集します。 - - - マーケットプレイスのリストフォルダにある衣服やボディパーツを着用できません。 - リスト ID が無効です。 - - このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 - - - - 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 - - - - 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 - - - - バージョンフォルダが空のため、リストを削除しました。もう一度リストを表示するには、バージョンフォルダにアイテムを追加する必要があります。 - - - アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 - 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 -[REASON] - 一度に複数のアイテムの中身を表示できません。 -アイテムを 1 つだけ選択して、もう一度お試しください。 - - 衣服、身体部位に対する変更をすべて保存しますか? - - - - フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 - - - - 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 - - - - 複数の Second Life ビューワを実行することはサポートされていません。テクスチャキャッシュのコリジョンや破損、およびビジュアルとパフォーマンスの低下につながる恐れがあります。 - - - - 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 -[NAME] に修正権限を与えますか? - - - - 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。 -選択した住人に修正権限を与えますか? - - - - [NAME] の修正権限を解約しますか? - - - - 選択した住人から変更権限を取り下げますか? - - - - グループ名は [MIN_LEN] ~ [MAX_LEN] 文字である必要があります。 - - - - グループを作成できません。 -[MESSAGE] - - - - [NEEDS_APPLY_MESSAGE] + + + このバージョンフォルダの有効化が次のエラーにより失敗しました: +'[ERROR_CODE]' + + + リストを作成するために、リストするコンテンツの階層を固定しました。 + confirm + + + この操作により、このリストの有効な内容が変更されます。続けてもよろしいですか? + confirm + + + マーケットプレイスのリストウィンドウにドラッグしたアイテムは、元の場所からコピーされるのではなく移動となります。続けてもよろしいですか? + confirm + + + リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けてもよろしいですか? + confirm + + + これらのアイテムの1つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、残したままにすることはできます。 + confirm + + + この操作により、このリストが削除されます。続けてもよろしいですか? + confirm + + + この操作により、現在のリストのバージョンフォルダが無効になります。続けてもよろしいですか? + confirm + + + このリストをアップデートできませんでした。 +[[URL] ここをクリック]してマーケットプレイスで編集します。 + + + マーケットプレイスのリストフォルダにある衣服装やボディパーツを着用できません。 + fail + + リストIDが無効です。 + fail + + このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 + confirm + + + 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 + confirm + + + 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 + confirm + + + バージョンフォルダが空のため、リストを削除しました。もう一度リストを表示するには、バージョンフォルダにアイテムを追加する必要があります。 + confirm + + + アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 + fail + + 以下の理由で、オークションのスナップショットのアップロード時に問題が起こりました:[REASON] + fail + + 一度に複数のアイテムの中身を表示できません。 +アイテムを1つだけ選択して、もう一度お試しください。 + fail + + 服装、身体部位に対する変更をすべて保存しますか? + confirm + + + フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 + + + 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 + + + Second Lifeビューアーの多重起動はサポートされていません。 +テクスチャキャッシュの競合による破損や、およびビジュアルとパフォーマンスの低下につながる恐れがあります。 + + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 +[NAME]に修正権限を与えますか? + + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更することができます。 +この権限を与える際には十分に注意してください。選択した住人に修正権限を与えますか? + confirm + + + [NAME]の修正権限を解除しますか? + confirm + + + 選択した住人から変更権限を取り下げますか? + confirm + + + グループ名は[MIN_LEN]~[MAX_LEN]文字である必要があります。 + group + fail + + + グループを作成できません。 +[MESSAGE] + group + fail + + + [NEEDS_APPLY_MESSAGE] [WANT_APPLY_MESSAGE] - - - - グループ通知の送信には、件名の記入が必要です。 - - - - あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。 -任命されたメンバーが自ら退任しない限り、 -役柄から削除できません。 + group + fail + + + グループ通知の送信には、件名の記入が必要です。 + group + fail + + + あなたは、[ROLE_NAME]の役割にメンバーを与えようとしています。任命されたメンバーが自ら退任しない限り、 役柄から削除できません。 操作を続行しますか? - - - - あなたは [ROLE_NAME] に [ACTION_NAME] の能力を -与えようとしています。 - - *警告* -この能力を持つ役割のメンバーは、 -自分と他のメンバーに現在より強力な権限を割り当て、 -自分をオーナーとほぼ同様の立場に任命することもできるようになります。 -この行為の意味をよく理解してから実行してください。 + + + あなたは[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 +*警告* +この能力を持つ役割のメンバーは、 自分と他のメンバーに現在より強力な権限を割り当て、 自分をオーナーとほぼ同様の立場に任命することもできるようになります。 +この行為の意味をよく理解してから実行してください。 この能力を [ROLE_NAME] に割り当てますか? - - - - あなたは [ROLE_NAME] に [ACTION_NAME] の能力を -与えようとしています。 - - *警告* -この能力をもつ役割のメンバーは、 -自分と他のメンバーにすべての能力を割り当て、 -自分をオーナーとほぼ同様の立場に任命できます。 + + + あなたは、[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 -この能力を [ROLE_NAME] に割り当てますか? - - - - 役割 '[ROLE_NAME]' に能力 '[ACTION_NAME]' を追加しようとしています。 +*警告* +この能力をもつ役割のメンバーは、自分と他のメンバーにすべての能力を割り当て、自分をオーナーとほぼ同様の立場に任命できます。 +この能力を[ROLE_NAME] に割り当てますか? + + + 役割「[ROLE_NAME]」に能力「[ACTION_NAME]」を追加しようとしています。 *警告* -この能力を持つ役割のメンバーにも能力 '[ACTION_NAME_2]' と '[ACTION_NAME_3]' が許可されます - - - - 役割 '[ROLE_NAME]' から能力 '[ACTION_NAME]' を削除しようとしています。 +この能力を持つ役割のメンバーにも能力「[ACTION_NAME_2]」と「[ACTION_NAME_3]」が許可されます。 + + + 役割「[ROLE_NAME]」から能力「[ACTION_NAME]」を削除しようとしています。 *警告* -この能力を削除しても能力 '[ACTION_NAME_2]' と '[ACTION_NAME_3]' は削除されません。 - +この能力を削除しても能力「[ACTION_NAME_2]」と「[ACTION_NAME_3]」は削除されません。 これらの能力をこの役割に許可しない場合は、すぐに削除してください! - - - - [AVATAR_NAME] をグループから追放しようとしています。 - - - - [COUNT] 名のメンバーをグループから追放しようとしています。 - - - - [AVATAR_NAME] をグループから追放しようとしています。 - - - - [COUNT] 名のメンバーをグループから追放しようとしています。 - - - 一部の住人がグループから追放されたため、招待状が送られませんでした。 - - アタッチメントを下に置こうとしています。 -続けますか? - - - - このグループに参加するには、L$ [COST] かかります。 -続行しますか? - - - - <nolink>[NAME]</nolink> というグループに入ろうとしています。 -続けますか? - - - このグループに加入するには、L$ [COST] 必要です。 -L$ が不足しているのでこのグループに参加することができません。 - - このグループ作成にかかる費用:L$[COST] + + + [AVATAR_NAME]をグループから追放しようとしています。 + group + confirm + + + [COUNT]名のメンバーをグループから追放しようとしています。 + group + confirm + + + [AVATAR_NAME]をグループから追放しようとしています。 + group + confirm + + + [COUNT]名のメンバーをグループから追放しようとしています。 + group + confirm + + + 一部の住人がグループから追放されたため、招待状が送られませんでした。 + 装着物を下に置こうとしています。 +このまま続けてもよろしいですか? + + + このグループに参加するには、L$ [COST]かかります。 +このまま続けてもよろしいですか? + confirm + funds + group + + + 「<nolink>[NAME]</nolink>」というグループに入ろうとしています。 +このまま続けてもよろしいですか? + group + confirm + + + このグループに加入するには、L$ [COST]必要です。 +L$が不足しているので、このグループに参加することができません。 + group + fail + funds + + このグループ作成にかかる費用:L$[COST] 一人ではグループにならないので、永久に削除されてしまいます。 -48 時間以内にメンバーを勧誘し、入会してもらってください。 - - - - あなたはグループに参加することはできません。 - - - - グループ参加リクエスト中にエラーが発生しました。 - - - - グループに参加できません: [reason] - - - - 申し訳ありませんが、トライアルユーザーはグループに参加できません。 - - - - 「<nolink>[group_name]</nolink>」に参加できません: -既に [group_count] グループのメンバーになっています。参加できるのは最大 [max_groups] グループまでです。 - - - - 「<nolink>[group_name]</nolink>」に参加できません: +48時間以内にメンバーを勧誘し、入会してもらってください。 + group + funds + + + あなたはグループに参加することはできません。 + group_id + success + + + グループ参加リクエスト中にエラーが発生しました。 + group_id + success + + + 以下のグループに参加できませんでした:[reason] + group_id + success + reason + + + 申し訳ありませんが、トライアルユーザーはグループに参加できません。 + group_id + success + + + 「<nolink>[group_name]</nolink>」に参加できません: +既に[group_count]個のグループのメンバーになっています。参加できるのは最大[max_groups]グループまでです。 + success + group_id + group_name + group_count + max_groups + + + 「<nolink>[group_name]</nolink>」に参加できません: このグループは現在、参加が制限されています。 - - - - このユーザーグループに追加されました - - - - 会員料金として必要な L$ [membership_fee] を送金することができません。 - - - - L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。 -入場許可を購入しますか? - - - 不特定の人に売却する場合には、 -売却価格はL$ 0 以上に設定する必要があります。 -売却価格をL$ 0 に設定する場合は、 -売却する個人を選択してください。 - - 選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。 -売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。 - - - - 注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。 - -選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。 -販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。 - - - - グループ「<nolink>[NAME]</nolink>」と共有するこのにある区画のすべてのオブジェクトを前のオーナーのインベントリに返却しますか? - -*注意*この操作をすると、グループに譲渡された譲渡禁止のオブジェクトを削除することになります。 - -オブジェクト: [N] - - - - この区画で、 -住人 [NAME] が所有する全てのオブジェクトを -本人のインベントリに本当に返却してもよいですか? - -オブジェクト: [N] - - - - この土地区画内にある、あなたが所有するすべてのオブジェクトを、 -あなたのインベントリに戻そうとしています。続けますか? - -オブジェクト: [N] - - - - この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、 -それぞれの所有者のインベントリに戻そうとしています。 -操作を続行しますか? -グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 - -*警告* これにより、 -グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! -オブジェクト: [N] - - - - この土地区画内にある、 -[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。 -操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 - -*警告* これにより、 -グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! -オブジェクト: [N] - - - - リストされた全てのオブジェクトを所有者の持ち物に戻しますか?これによりすべてのスクリプト化されたオブジェクトがリージョンに戻ります! - - - - このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか? - - - - グループ <nolink>[NAME]</nolink> と共有されていない、この区画にあるオブジェクトを前のオーナーに返却しますか? - -オブジェクト: [N] - - - スクリプトを無効にできません。 + group_id + success + + + このユーザーグループに入会しました。 + group_id + success + + + 会員料金として必要なL$ [membership_fee]を送金することができません。 + group_id + success + + + この区画([PARCEL_NAME])は、L$ [COST]で[TIME]時間入ることができます。入場許可証を購入しますか? + fail + funds + confirm + + + 不特定の人に売却する場合には、売却価格はL$ 0以上に設定する必要があります。 +売却価格をL$ 0に設定する場合は、売却する個人を選択してください。 + fail + + 選択した[LAND_SIZE]㎡の土地は、売り出し中に設定されています。 +売却価格L$ [SALE_PRICE]で、[NAME]に売却を認可します。 + confirm + + + 注意:「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず、[SECOND_LIFE]コミュニティ全体で利用可能となります。 +選択した[LAND_SIZE]㎡の土地は、販売対象に設定されました。 +販売価格L$ [SALE_PRICE]で、[NAME]が販売対象者となります。 + confirm + + + グループ「<nolink>[NAME]</nolink>」と共有するこのにある区画のすべてのオブジェクトを前のオーナーのインベントリに返却しますか? +*警告* +この操作をすると、グループに譲渡された譲渡禁止のオブジェクトを削除することになります。 +オブジェクト:[N] + confirm + group + + + この区画で、住人[NAME]が所有する全てのオブジェクトを本人のインベントリに本当に返却してもよいですか? +オブジェクト:[N] + confirm + + + この土地区画内にある、あなたが所有するすべてのオブジェクトを、あなたのインベントリに戻そうとしています。このまま続けてもよろしいですか? +オブジェクト:[N] + confirm + + + この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、それぞれの所有者のインベントリに戻そうとしています。このまま操作を続行してもよろしいですか? +グループに譲渡された「再販・譲渡可」のオブジェクトは、以前の所有者に返却されます。 + +*警告* + +これにより、グループに譲渡された「再販・譲渡不可」のオブジェクトは削除されます! +オブジェクト:[N] + confirm + + + この土地区画内にある、[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。このまま操作を続行してもよろしいですか? +グループに譲渡された「再販・譲渡可」のオブジェクトは、以前の所有者に返却されます。 + +*警告* + +これにより、グループに譲渡された「再販・譲渡不可」のオブジェクトは削除されます! +オブジェクト:[N] + confirm + + + リストされた全てのオブジェクトを所有者の持ち物に戻しますか? +これによりすべてのスクリプト化されたオブジェクトがリージョンに戻ります! + confirm + + + このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。このまま操作を続行してもよろしいですか? + confirm + + + グループ <nolink>[NAME]</nolink>と共有されていない、この区画にあるオブジェクトを前のオーナーに返却しますか? +オブジェクト:[N] + confirm + + + スクリプトを無効にできません。 このリージョン(地域)全体が「ダメージ有効」に設定されています。 -武器を使用するにはスクリプトの実行を許可する必要があります。 - - 現在複数の面が選択されています。 +武器を使用するには、スクリプトの実行を許可する必要があります。 + fail + + 現在複数の面が選択されています。 このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。 -メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 - - - 着地点を設定するには、この区画の内側に -立ってください。 - 受信者の有効なメールアドレスを入力してください。 - あなたのメールアドレスを入力してください。 - - デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? - - - スナップショットデータの処理エラー - スナップショットのエンコード化でエラーが出ました! - このアイテムをアップロードするには L$[COST] が必要です。 - インベントリに写真を保存するには L$[COST] が必要です。L$ を購入するか、代わりに写真をっコンピュータに保存できます。 - インベントリにテクスチャを保存するには L$[COST] が必要です。L$ を購入するか、代わりに写真をコンピュータに保存できます。 - 次の理由で、スナップショットの送信時に問題が起こりました: [REASON] - 次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON] - [SECOND_LIFE] へのログインを続けるには、Second Life の利用規約、プライバシーポリシー、およびサービス規約に同意する必要があります。 - アウトフィットを装着できません。 -アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。 - ごみ箱にある衣類や身体部位の着用はできません。 - オブジェクトを付けられませんでした。 -最大数の [MAX_ATTACHMENTS] 個を越えています。 どれか取り外してからお試しください。 - まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 - ログインするためにパスワードを入力してください - - 注意:記入漏れの箇所があります。 +メディアを1つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 + confirm + + + 着地点を設定するには、この区画の内側に立ってください。 + fail + + 受信者の有効なメールアドレスを入力してください。 + fail + + あなたのメールアドレスを入力してください。 + fail + + デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? + confirm + + + スナップショットデータの処理エラー + fail + + スナップショットのエンコードエラー + fail + + このアイテムをアップロードするには、L$ [COST]が必要です。 + fail + + インベントリに写真を保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 + fail + + インベントリにテクスチャを保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 + fail + + 以下の理由でスナップショットの送信時に問題が起こりました:[REASON] + fail + + 以下の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました:[REASON] + fail + + [SECOND_LIFE]へのログインを続けるには、Second Lifeの利用規約、プライバシーポリシー、およびサービス規約に同意する必要があります。 + fail + + アウトフィットを装着できません。 +アウトフィットフォルダに服装、身体部位、装着物がありません。 + fail + + ごみ箱にある服装や身体部位は、着用できません。 + fail + + オブジェクトを装着できませんでした。 +最大装着数[MAX_ATTACHMENTS]個を越えています。どれか取り外してからお試しください。 + fail + + まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 + fail + + ログインするためにパスワードを入力してください。 + fail + + おっと、記入漏れがあります。 アバターのユーザー名を入力してください。 -[SECOND_LIFE] に入るにはアカウントが必要です。今すぐアカウントを作成しますか? - [create_account_url] - - - ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。 - '[GRID]' は有効なグリッド ID ではありません。 - ログイン位置で有効なグリッドが指定されませんでした。 - - クラシファイド広告 [NAME] を削除しますか? +[SECOND_LIFE]に入るにはアカウントが必要です。今すぐアカウントを作成しますか? + confirm + [create_account_url] + + + ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。 + fail + + 「[GRID]」は、有効なグリッドIDではありません。 + fail + + ログイン位置で有効なグリッドが指定されませんでした。 + fail + + クラシファイド広告『[NAME]』を削除してもよろしいですか? 支払い済みの料金は返金されません。 - - - - この面にあるメディアを削除する選択をしました。 -続けますか? - - - - クラシファイド広告 [NAME] への変更を保存しますか? - - - - クラシファイド広告を出すには、資金が足りません。 - - - - <nolink>[PICK]</nolink> を削除しますか? - - - - 選択したアウトフィットを削除しますか? - - - - [SECOND_LIFE] イベント Web ページに移動しますか? - http://secondlife.com/events/?lang=ja-JP - - - 表示する提案を選択してください。 - 表示する履歴アイテムを選択してください。 - [APP_NAME] を再起動後にキャッシュがクリアされます。 - [APP_NAME] を再起動後にキャッシュが移動されます。 -ご注意: キャッシュがクリアされます。 - ポートの設定は [APP_NAME] を再起動後に反映されます。 - デバッグ設定の変更は [APP_NAME] を再起動後に反映されます。 - 新しいスキンは [APP_NAME] を再起動後に表示されます。 - 言語の変更は [APP_NAME] を再起動後に反映されます。 - - [SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか? - http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] - - - - 変更を保存しますか? - - - - ノートカードを削除しますか? - - - - 以前のスクリーンショットをレポートに使用しますか? - - - ジェスチャーの保存に失敗しました。 + confirm + + + この顔に紐づけられたメディアの削除を選択しました。 +続行してもよろしいですか? + confirm + + + クラシファイド広告[NAME]への変更を保存しますか? + confirm + + + クラシファイド広告を出すには、資金が足りません。 + fail + + + + クラシファイド広告<nolink>[CLASSIFIED]</nolink>を削除してもよろしいですか? + confirm + + + ピック<nolink>[PICK]</nolink>を削除してもよろしいですか? + confirm + + + 未公開のクラシファイド広告があります。 +ウィンドウを閉じると変更が失われます。 + confirm + + + 保存されていない変更があります。 + confirm + save + + + 「<nolink>[PICK]</nolink>」を削除してもよろしいですか? + + + このアウトフィットを削除してもよろしいですか? + confirm + + + [SECOND_LIFE]イベントWebページに移動しますか? + https://secondlife.com/my/community/events/?lang=ja-JP + confirm + + + 表示する提案を選択してください。 + fail + + 表示する履歴アイテムを選択してください。 + fail + + + + + キャッシュは、[APP_NAME]再起動後にクリアされます。 + キャッシュは、[APP_NAME]再起動後が移動されます。 +注意:キャッシュがクリアされます。 + ポートの設定は、[APP_NAME]再起動後に反映されます。 + デバッグ設定の変更は、[APP_NAME]再起動後に反映されます。 + 新しいスキンは、[APP_NAME]再起動後に表示されます。 + 言語の変更は、[APP_NAME]再起動後に反映されます。 + [SECOND_LIFE]のWebページに移動し、入札あるいはオークションの詳細を確認しますか? + confirm + http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] + + + 変更を保存しますか? + confirm + + + このノートカードを削除してもよろしいですか? + + confirm + + + 以前のスクリーンショットをレポートに使用しますか? + + + ジェスチャーの保存に失敗しました。 ステップが多すぎます。 -ステップをいくつか削除してから再保存してください - ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。 - ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 -オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。 - ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 -オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - 次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。 - - あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。 +ステップをいくつか削除してから再保存してください + fail + + ジェスチャーの保存に失敗しました。 +少し待ってからもう一度試してください。 + fail + + ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 +オブジェクトが範囲内に存在しないか、削除された可能性があります。 + fail + + 以下の理由で、ジェスチャーの保存時に問題が起こりました:[REASON] +お手数ですが、後でもう一度試してください。 + fail + + ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 +オブジェクトが範囲内に存在しないか、削除された可能性があります。 + fail + + 以下の理由で、ノートカードの保存時に問題が起こりました:[REASON] +お手数ですが、後でもう一度試してください。 + fail + + あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。 サーバーの最新保存バージョンをロードしますか? (**警告**:この操作後元に戻すことはできません) - - - スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。 -オブジェクトは範囲外か、または削除されているかもしれません。 - - ログイン位置が指定されていません。 + confirm + + + スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。 +オブジェクトは範囲外か、または削除されているかもしれません。 + fail + + ログイン位置が指定されていません。 ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。 - - - スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。 -オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - ファイルをダウンロードできません。 - - [SECOND_LIFE] でサポートされていないファイルのダウンロードを要求しました。 - - - ファイル [[FILE]] を書き込めません。 - - お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。 - -[_URL] に移動して確認をしますか? - http://secondlife.com/support/sysreqs.php?lang=ja - - - ビューワ実行ファイルを直接実行しないでください。代わりに、既存のショートカットの内のどれかをアップデートし、SL_Launcher を実行してください。 - - グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 - - ドライバの更新を確認するために [URL] にアクセスしますか? - [URL] - - - - お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。 -[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。 -(ミー > 環境設定 > グラフィック) -
- - -
- グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。 -ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。 + fail + + + スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。 +オブジェクトが範囲内に存在しないか、または削除された可能性があります。 + fail + + ファイルをダウンロードできません。 + fail + + ダウンロードをリクエストしたファイルは、[SECOND_LIFE]でサポートされていません。 + + confirm + + + ファイル[[FILE]]に書き込むことができませんでした。 + fail + + お使いのコンピュータは、[APP_NAME]の最小システム要件を満たしていません。 +このためパフォーマンスが低下する場合があります。恐れ入りますが[SUPPORT_SITE]は、サポートされていないシステム構成に対する技術的サポートを提供できません。 + +詳細について、[_URL]を確認しますか? + http://secondlife.com/support/sysreqs.php?lang=ja + fail + + + グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 +ドライバの更新を確認するために[URL]にアクセスしますか? + [URL] + confirm + fail + + + お使いのシステムには、[APP_NAME]が認識できないグラフィックカードが搭載されています。[APP_NAME]でまだテストされていない最新ハードウェアのためだと考えられます。 +問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。 +(「私」>「初期設定」>「グラフィック」) + fail +
+ + +
+ グラフィックドライバを初期化中に[APP_NAME]がクラッシュしました。 +ドライバの一般的なエラーを防ぐために、画質が低に設定されます。このため、一部のグラフィック特性に制限が出ます。 お使いのグラフィックカードのドライバをアップデートするようおすすめします。 -画質は、環境設定 > グラフィック で設定できます。 - [REGION] では、地形の変更ができません。 - あなたには [PARCEL] 区画を地形編集する許可がありません。 - - あなたには次アイテムをコピーする権限がありません: -<nolink>[ITEMS]</nolink> -他の住人に譲ると、そのアイテムはあなたの持ち物から削除されます。本当にこれらのアイテムを譲りますか? - - - インベントリのアイテムを渡せません。 - 取引がキャンセルされました。 - 一度に 42 個以上のアイテムは渡せません。 - 選択したアイテムを渡す権限がありません。 - - あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。 +画質は、「初期設定」>「グラフィック」で設定できます。 + fail + + この設定を変更すると、「自動調整」の設定が無効になります。 +続けてもよろしいですか? + confirm + + + 高度な照明をオンにするには、品質をレベル4以上にする必要があります。 + confirm + + + 影を有効にするには、品質をレベルを4以上にする必要があります。 + confirm + + + [REGION]では、地形の変更ができません。 + fail + + [PARCEL]区画の地形を編集する権限がありません。 + fail + + 以下のアイテムをコピーする権限がありません: +<nolink>[ITEMS]</nolink> +他の人に譲ると、そのアイテムはあなたの持ち物から削除されます。本当にこれらのアイテムを譲ってもよろしいですか? + confirm + fail + + + インベントリのアイテムを渡すことができません。 + fail + + 取引がキャンセルされました。 + fail + + 一度に42個以上のアイテムを渡すことはできません。 + fail + + 選択したアイテムを渡す権限がありません。 + fail + + あなたは選択した[COUNT]個のアイテムをコピーする権限がありません。 これらのアイテムはあなたのインベントリから失われます。 -本当にアイテムを渡したいですか? - - - 選択したフォルダを渡す権限がありません - - このアバターをフリーズしますか? +本当にアイテムを渡してもよろしいですか? + confirm + fail + + + 選択したフォルダを渡す権限がありません。 + fail + + このアバターをフリーズしますか? アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。 - - - - [AVATAR_NAME]をフリーズしますか? + confirm + + + [AVATAR_NAME]をフリーズしますか? フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。 - - - - あなたの土地から [AVATAR_NAME] を追放しますか? - - - - このアバターをあなたの土地から追放しますか? - - - - [AVATAR_NAME] をあなたの土地から追放しますか? - - - <nolink>[GROUP_NAME]</nolink> から [AVATAR_NAME] を追放しました - 取得エラー:選択したオブジェクトの数が多すぎます。 - 取得エラー: -オブジェクトが複数のリージョン(地域)にまたがって存在しています。 -すべて同じリージョン内に移動させてから取得してください。 - - [EXTRA] - -[_URL] に移動してリンデンドル購入に関する情報を確認しますか? - http://secondlife.com/app/currency/?lang=ja-JP - - - [MUTE_LIMIT] エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 - [COUNT] 個のオブジェクトをリンクできません。 -リンクできるのは最大 [MAX] 個です。 - セットで揃っているオブジェクトのみリンクできます。 -複数のオブジェクトを選択してください。 - すべてのオブジェクトの修正許可がないためリンクできません。 - -どのオブジェクトもロックされておらず、あなたのものであることを確認してください。 - 地域(リージョン)の境界を越えてオブジェクトをリンクできません。 - 地域(リージョン)の境界を越えてオブジェクトをリンクできません。 - 所有者が異なるため、オブジェクトをリンクできません。 - -自分が所有しているオブジェクトだけを選択してください。 - 「 [FILE] 」の拡張子が無効です。 + confirm + + + あなたの土地から[AVATAR_NAME]を追放しますか? + confirm + + + このアバターをあなたの土地から追放しますか? + confirm + + + [AVATAR_NAME]をあなたの土地から追放しますか? + confirm + + + <nolink>[GROUP_NAME]</nolink>から[AVATAR_NAME]を追放しました。 + group + + 取得エラー:選択したオブジェクトの数が多すぎます。 + fail + + 取得エラー:オブジェクトが複数のリージョン(地域)にまたがって存在しています。 +すべて同じリージョン内に移動させてから取得してください。 + fail + + [EXTRA] + +[_URL]に移動してリンデンドル購入に関する情報を確認しますか? + https://secondlife.com/my/lindex/?lang=ja-JP + + + [MUTE_LIMIT]エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 + fail + + [COUNT]個のオブジェクトをリンクできませんでした。 +リンクできるオブジェクトは最大[MAX]個です。 + fail + + セットが揃っているオブジェクトのみリンクできます。複数のオブジェクトを選択してください。 + fail + + すべてのオブジェクトの修正許可がないためリンクできません。 + +どのオブジェクトもロックされておらず、あなたのものであることを確認してください。 + fail + + リージョン(地域)の境界を越えてオブジェクトをリンクできません。 + fail + + リージョン(地域)の境界を越えてオブジェクトをリンクできません。 + fail + + 所有者が異なるため、オブジェクトをリンクできません。 +自分が所有しているオブジェクトだけを選択してください。 + fail + + ファイル「[FILE]」は、無効な拡張子です。 このファイルの拡張子が正しいかどうかを確認してください。 - - [EXTENSION] は無効です。 -正しい拡張子:[VALIDS] - - - 読み込みのためにアップロードされたサウンドファイルを開けません: -[FILE] - RIFF WAVE ファイルとして認識されません: -[FILE] - PCM WAVE オーディオファイルとして認識されません: -[FILE] - ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります): -[FILE] - ファイルのサンプルレートがサポートされていません(44.1k である必要があります): -[FILE] - ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります): -[FILE] - WAV ヘッダーにデータチャンクが見つかりません: -[FILE] - WAV ファイルのチャンクサイズが間違っています: -[FILE] - オーディオファイルが長すぎます。(最大 10 秒): -[FILE] - 「 [FILE] 」に問題があります。 - -[ERROR] - 書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE] - 不明の Vorbis のエンコードに失敗: [FILE] - 次のファイルのエンコードができません: [FILE] - - ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります - - - 破損したリソースファイル: [FILE] - 不明のリンデンリソースファイルのバージョン: [FILE] - 出力ファイルを作成できません: [FILE] - 現在 [APP_NAME] では、BVH 形式のアニメーションファイルの一括アップロードはサポートされていません。 - 次の理由で、「 [FILE] 」をアップロードできません: [REASON] -あとでもう一度試してください。 - 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。 - - 現在地のランドマークを既に持っています。 - - - 土地の所有者が許可していないため、ランドマークを作成することはできません。 - 「リコンパイル」できません。 -スクリプトのオブジェクトを選択してください。 - 「リコンパイル」できません。 - -修正修正権限のあるスクリプトのオブジェクトを選択してください。 - 「再設定」ができません。 - -スクリプトのオブジェクトを選択してください。 - 「再設定」ができません。 - -修正権限のあるスクリプトのオブジェクトを選択してください。 - 修正権限のないオブジェクトのスクリプトは開くことはできません。 - スクリプトの「実行」ができません。 - -スクリプトのオブジェクトを選択してください。 - スクリプトを「実行しない」設定にできません。 - -スクリプトのオブジェクトを選択してください。 - 保存する frontmost フロータがありません。 - 指定した検索クエリは変更され、短すぎる語句は取り除かれています。 - -検索語句: [FINALQUERY] - 指定した検索語句が短すぎたため、検索は行われませんでした。 - テレポートに失敗しました。 -[REASON] - テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 - リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 - 申し訳ございません。テレポートは現在、ブロックされています。しばらくしてから再度お試しください。 -それでもテレポートできない場合は、ログアウトし、ログインし直して問題を解決してください。 - 申し訳ございません。ランドマークの目的地が見つかりませんでした。 - 申し訳ございません。システムによるテレポート接続が完了できませんでした。 -しばらくしてから再度お試しください。 - 残念ながら、目的地へアクセスが許可されていないため、テレポートできません。 - 添付物がまだ届いていません。テレポートをする前にあと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてください。 - このリージョンのアセットキューが現在混み合っているため、テレポートのリクエストをすぐに処理することが難しい状況です。 -数分後にやり直すか、混雑していない他のリージョンでお試しください。 - 申し訳ございません。システムはテレポートのリクエストを時間どおりに完了できませんでした。数分後にやり直してください。 - 申し訳ございません。システムはリージョン間の移動を時間どおりに完了できませんでした。 -数分後にやり直してください。 - テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。 - インベントリシステムは現在利用できません。 - 土地所有者設定ができません: -区画が選定されていません。 - 複数のリージョンが選択されたため、土地の所有権を取得できません。 -選択する面積を小さくして、もう一度お試しください。 - - この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。 + 「[EXTENSION]」は、無効な拡張子です。 +有効な拡張子:[VALIDS] + fail + + + 読み込みのためにアップロードされたサウンドファイルを開けません: +[FILE] + fail + + RIFF WAVEファイルとして認識されません: +[FILE] + fail + + PCM WAVEオーディオファイルとして認識されません: +[FILE] + fail + + このファイルのチャンネル数は無効です(モノラルか、ステレオである必要があります): +[FILE] + fail + + このファイルのサンプリングレートはサポートされていません(44.1kである必要があります): +[FILE] + fail + + このファイルのビットサイズはサポートされていません(8bitか、16bitである必要があります): +[FILE] + fail + + WAVヘッダーにデータチャンクが見つかりません: +[FILE] + fail + + WAVファイルのチャンクサイズが間違っています: +[FILE] + fail + + オーディオファイルが長すぎます。(最大10秒): +[FILE] + fail + + 「[FILE]」に問題があります。 + +[ERROR] + fail + + 書き込み用の一時圧縮サウンドファイルを開くことができません: +[FILE] + fail + + 不明なVorbisのエンコードに失敗しました: +[FILE] + fail + + 次のファイルのエンコードができません: +[FILE] + fail + + ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります + fail + + + 破損したリソースファイル: +[FILE] + fail + + 不明なLindenリソースファイルのバージョンです: +[FILE] + fail + + 出力ファイルを作成できません: +[FILE] + fail + + 現在[APP_NAME]では、BVH形式のアニメーションファイルの一括アップロードはサポートされていません。 + fail + + 以下の理由で「[FILE]」をアップロードできませんでした: +[REASON] + +お手数ですがもう一度やり直してください。 + fail + + 「[LANDMARK_NAME]」を「[FOLDER_NAME]」フォルダに追加しました。 + この場所のランドマークは、既に持っています。 + fail + + + + +フォルダ名を入力してください: + confirm +
+ + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml index df9ef40113..098128bb6d 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml @@ -1,11 +1,12 @@ - - - - - - -
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml index b9e10c071c..4f5d1c61de 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -1,27 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml index fa1137c7c5..aae708e257 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -1,21 +1,21 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml index 01699d1593..8c697317a5 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml index 3e706cd403..8a691467a8 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -1,26 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml index 59c80bdb0e..0b60751bb3 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml index e4f78cad31..eb696ec534 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml index b0a619bcb0..80ed3b19c8 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml index aa07b9476e..3e4ab1f856 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml index eb5faa2545..8af5189f87 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml index d984342896..47d4f76e48 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml index 07bcefd9b3..f6ce0e6c6c 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml index 0de6a5f22f..ff6884f24d 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation.xml @@ -1,33 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml index c9d4f947a4..7e43b8b61f 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml index bd4812603f..c239eb9543 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml new file mode 100644 index 0000000000..819b05f854 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml new file mode 100644 index 0000000000..ac211997bf --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml new file mode 100644 index 0000000000..80d7eeff31 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml new file mode 100644 index 0000000000..ed1491298f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml new file mode 100644 index 0000000000..92e0ec74ba --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml new file mode 100644 index 0000000000..9504f39ef1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml new file mode 100644 index 0000000000..1ee1d6a914 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml new file mode 100644 index 0000000000..a596fbe103 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_edit.xml b/indra/newview/skins/default/xui/ja/menu_edit.xml index c2ef0179b2..0152675de7 100644 --- a/indra/newview/skins/default/xui/ja/menu_edit.xml +++ b/indra/newview/skins/default/xui/ja/menu_edit.xml @@ -1,12 +1,12 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_favorites.xml b/indra/newview/skins/default/xui/ja/menu_favorites.xml index 4708b1446c..94361555fe 100644 --- a/indra/newview/skins/default/xui/ja/menu_favorites.xml +++ b/indra/newview/skins/default/xui/ja/menu_favorites.xml @@ -1,10 +1,14 @@ - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml index 88c3aee042..2527e373f4 100644 --- a/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml @@ -1,23 +1,35 @@ - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml index 3eacfb3507..333db46380 100644 --- a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml @@ -1,10 +1,11 @@ - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_group_plus.xml b/indra/newview/skins/default/xui/ja/menu_group_plus.xml index 3787f7d645..52cc5e69e1 100644 --- a/indra/newview/skins/default/xui/ja/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_group_plus.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml index 2e633ae1b2..3a9fb3570a 100644 --- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml @@ -1,6 +1,5 @@ - - - - + + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml index 55cd6610f7..8899b69f1a 100644 --- a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml @@ -1,15 +1,16 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml index 222a741718..5ef2a4152a 100644 --- a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml +++ b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml index 8cd6fa4a27..26b581b793 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml @@ -1,4 +1,4 @@ - - + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml index 5bcb96f083..7ae8765df4 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml @@ -1,6 +1,6 @@ - - - - + + + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml index 5453f998fa..61a9bae73c 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml @@ -1,7 +1,7 @@ - - - - - + + + + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml index 5a0519ba19..ec5abea6b2 100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml @@ -1,19 +1,19 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml index 9a4a8138f5..d9642e3c0c 100644 --- a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 7f68c18e0b..f25c32c084 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -1,117 +1,133 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index eecf166a70..3f43469c6f 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index ad60b0d01f..7a8adcb9fb 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -1,18 +1,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml b/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml new file mode 100644 index 0000000000..f76be9631a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml index 3754bd7fa4..a65504b14c 100644 --- a/indra/newview/skins/default/xui/ja/menu_land.xml +++ b/indra/newview/skins/default/xui/ja/menu_land.xml @@ -1,10 +1,13 @@ - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml index c134422955..06345c5074 100644 --- a/indra/newview/skins/default/xui/ja/menu_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_landmark.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 61b473858b..5ba2092648 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml index bf38075556..6c6913db5d 100644 --- a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml index faae4ef717..6f4f4938f4 100644 --- a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml @@ -1,7 +1,8 @@ - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml index 2e733ee24b..77a2e60cda 100644 --- a/indra/newview/skins/default/xui/ja/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml index 43f86e84bf..f35e74afc5 100644 --- a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml index 8dab025309..38b736ae9b 100644 --- a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml +++ b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml index 9ae2e58198..f3e274313e 100644 --- a/indra/newview/skins/default/xui/ja/menu_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_navbar.xml @@ -1,11 +1,11 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml index c2e4a27686..42a6c66168 100644 --- a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml @@ -1,9 +1,12 @@ - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml index 913bae8958..3852efcdd4 100644 --- a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml index 8da1d5d000..f7e64e015a 100644 --- a/indra/newview/skins/default/xui/ja/menu_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -1,35 +1,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml index 7b55a64eef..163c8d1779 100644 --- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml @@ -1,8 +1,9 @@ - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml index 4946d58fd8..962d25bb07 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml @@ -1,36 +1,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml index 9491c22f31..042a3222d1 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml @@ -1,9 +1,9 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 64d8ded722..f64a6dc55c 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -1,21 +1,25 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_participant_view.xml b/indra/newview/skins/default/xui/ja/menu_participant_view.xml index 5816351d9d..ef61874763 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_view.xml @@ -1,13 +1,16 @@ - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml index f74399f2ba..8d80ddebad 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml index 3e74b2ddff..1d89e15f64 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml index 4b86a353f4..db586365b2 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml index f290bec652..fee506c511 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml index 2c0c85ba28..91044bd283 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml index 4a9e402fa4..07144be420 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index 87f1d26ca4..f59ebfa154 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml index fe85e278cf..5c73eb5a4f 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml index 2217288987..7b56f1daf8 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml index feaeba4398..da27372963 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_picks.xml b/indra/newview/skins/default/xui/ja/menu_picks.xml index 011d3d2526..4a5a42ad05 100644 --- a/indra/newview/skins/default/xui/ja/menu_picks.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks.xml @@ -1,8 +1,10 @@ - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml index 84bf90fea0..62eb8327bc 100644 --- a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_place.xml b/indra/newview/skins/default/xui/ja/menu_place.xml index a9f05e126d..f45f9211ed 100644 --- a/indra/newview/skins/default/xui/ja/menu_place.xml +++ b/indra/newview/skins/default/xui/ja/menu_place.xml @@ -1,7 +1,5 @@ - - - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml index d19bc44451..d6a13b92ba 100644 --- a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml index c455204722..c9fa92b6a2 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml @@ -1,16 +1,15 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml index 579f2c2cbd..16508dde4a 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml @@ -1,19 +1,22 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml new file mode 100644 index 0000000000..197b61af30 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_profile_other.xml b/indra/newview/skins/default/xui/ja/menu_profile_other.xml new file mode 100644 index 0000000000..0ff41f91a2 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_profile_other.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml index 9d3a5dda1c..67c481cdd6 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml @@ -1,12 +1,12 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_profile_self.xml b/indra/newview/skins/default/xui/ja/menu_profile_self.xml new file mode 100644 index 0000000000..ec10d92629 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_profile_self.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml index 6513d9264a..6d8f2381d9 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_save_settings.xml b/indra/newview/skins/default/xui/ja/menu_save_settings.xml index 44fb1fb30b..a8bb95a661 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_settings.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_settings.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml index a89dd0bcbe..c4bc424927 100644 --- a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_settings_add.xml index 814ad9c1a6..9e64476446 100644 --- a/indra/newview/skins/default/xui/ja/menu_settings_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_settings_add.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_settings_gear.xml b/indra/newview/skins/default/xui/ja/menu_settings_gear.xml index 064eae95bf..a44786b414 100644 --- a/indra/newview/skins/default/xui/ja/menu_settings_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_settings_gear.xml @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml index 61ba3085d9..3d5ea3f616 100644 --- a/indra/newview/skins/default/xui/ja/menu_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml index 901eab9166..fd4dffeefa 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml @@ -1,6 +1,7 @@ - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml index 1cc230e5b6..dc34bc6463 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml @@ -1,6 +1,6 @@ - - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml index 4dd44d2ec8..391be973f8 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_text_editor.xml b/indra/newview/skins/default/xui/ja/menu_text_editor.xml index eda973c888..48fd8ad243 100644 --- a/indra/newview/skins/default/xui/ja/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/ja/menu_text_editor.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml index d5363a5131..9bb4eaf496 100644 --- a/indra/newview/skins/default/xui/ja/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml index 1a67a2a8f7..ea1e12ab2b 100644 --- a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml @@ -1,7 +1,11 @@ - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml index 639602ce3c..dc9a6af8fe 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_email.xml b/indra/newview/skins/default/xui/ja/menu_url_email.xml index 6c41d759fe..1ba8d6a64e 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_email.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_email.xml @@ -1,5 +1,5 @@ - - - + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_experience.xml b/indra/newview/skins/default/xui/ja/menu_url_experience.xml index 582784c2f0..83d7029527 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_experience.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_experience.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml index 1dd3d79438..9214d67dea 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_group.xml @@ -1,6 +1,7 @@ - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml index c3da8a8686..ba5048094d 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_http.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml @@ -1,7 +1,7 @@ - - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml index 147ab44a1b..7a13030b64 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml @@ -1,6 +1,7 @@ - + - - - - + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_map.xml b/indra/newview/skins/default/xui/ja/menu_url_map.xml index 8d41e1a571..75813f9017 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_map.xml @@ -1,6 +1,8 @@ - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index 96f8b3f7b1..ef76e5484f 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml @@ -1,10 +1,12 @@ - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml index 8d264059d3..0c1eab8dad 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml @@ -1,6 +1,8 @@ - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml index a516c5a075..78f3997bf8 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml @@ -1,5 +1,6 @@ - - - + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml index 2c857ec915..e0d4427008 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml @@ -1,7 +1,9 @@ - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml index c3507a9a33..e6941fb8bd 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml @@ -1,6 +1,8 @@ - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index d5ac67b9e6..35e4db743b 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -1,495 +1,669 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml index 02029230ba..7ea696d6ca 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml index 48aac2ed05..75fa3f69b3 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml @@ -1,8 +1,8 @@ - - - - - - + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml index 8c331bc008..7845ff9aad 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml @@ -1,9 +1,9 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index 3b29a622a4..23bab3b0b2 100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -1,240 +1,143 @@ - - - - ここにWebコンテンツがあります。 - - - Webコンテンツを表示 - - - - - - ここにはムービーがあります - - - ムービー再生 - - - - - - ここには画像があります - - - ここの画像を表示 - - - - - - ここではオーディオが聞けます - - - ここのオーディオを再生する - - - - - - ここにメディアなし - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + (不明) + なし + + + この場所には、Webコンテンツが含まれています。 + Web コンテンツを表示する + + + + この場所には、ムービーがあります。 + ムービーを再生する + + + + この場所には、画像があります + この場所の画像を表示する + + + + この場所には、オーディオがあります。 + この場所のオーディオを再生する + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml index cb1e48148f..61574b74f9 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -1,225 +1,131 @@ - - - - このロケーションには Web コンテンツが含まれています - - - Web コンテンツを表示する - - - - - - ここにはムービーがあります - - - ムービーを再生する - - - - - - このロケーションには画像があります - - - このロケーションの画像を表示する - - - - - - このロケーションにはオーディオがあります - - - このロケーションのオーディオを再生する - - - - - - ここにメディアなし - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + (不明) + なし + + + この場所には、Webコンテンツが含まれています。 + Web コンテンツを表示する + + + + この場所には、ムービーがあります。 + ムービーを再生する + + + + この場所には、画像があります + この場所の画像を表示する + + + + この場所には、オーディオがあります。 + この場所のオーディオを再生する + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml index cb1e48148f..0bfc9aeb99 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -1,225 +1,134 @@ - - - - このロケーションには Web コンテンツが含まれています - - - Web コンテンツを表示する - - - - - - ここにはムービーがあります - - - ムービーを再生する - - - - - - このロケーションには画像があります - - - このロケーションの画像を表示する - - - - - - このロケーションにはオーディオがあります - - - このロケーションのオーディオを再生する - - - - - - ここにメディアなし - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + (不明) + なし + + + この場所には、Webコンテンツが含まれています。 + Web コンテンツを表示する + + + + この場所には、ムービーがあります。 + ムービーを再生する + + + + この場所には、画像があります + この場所の画像を表示する + + + + この場所には、オーディオがあります。 + この場所のオーディオを再生する + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 72b4d21eb2..48983f3157 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -1,3184 +1,5315 @@ - + - 今後は表示しない - 以後、これを表示しない + 次回からこのメッセージを表示しない + + 次回からこのメッセージを表示しない (現セッションで) - 常にこのオプションを選択 - 閉じる - - - - - - - - - あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。 - -エラー詳細: 「 [_NAME] 」という通知は notifications.xml にありませんでした。 - - - - フロータエラー:下記のコントロールが見つかりませんでした: + + 常にこのオプションを選択 + + 閉じる + + + + + + + + + + + + + + + + 現在使用中の[APP_NAME]のバージョンでは、受け取った通知メッセージを表示することができません。 +最新のビューアーがインストールされている事をご確認ください。 + +エラー詳細:「 [_NAME] 」という通知メッセージは、notifications.xmlに定義されていませんでした。 + fail + + + + フローターエラー:以下のコントロールが見つかりませんでした: + [CONTROLS] - - - - 現在利用可能なチュートリアルはありません。 - - - [MESSAGE] - - [MESSAGE] - - - - [MESSAGE] - - - - [APP_NAME] をアップデート中にエラーが発生しました。 ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。 - - - - [SECOND_LIFE_GRID] に接続できませんでした。 -「[DIAGNOSTIC]」 -インターネット接続が正常かご確認ください。 - - - - メッセージテンプレート [PATH] がありませんでした。 - - - - 現在の衣類、身体部位の変更を保存しますか? - - - - これらのアイテムの 1 つまたは複数をマーチャントアウトボックスにコピーする許可がありません。移動するか、置き去りにすることはできます。 - - - - マーチャントアウトボックスの最上位に転送した各アイテムにつき、それぞれ 1 つの新しいフォルダが作成されました。 - - - - 成功 - -マーケットプレイスに正常に送信されたすべてのフォルダ - - - - 一部のフォルダは転送されませんでした - -一部のフォルダがマーケットプレイスに送信されたときにエラーが発生しました。これらのフォルダはまだマーチャントアウトボックス内にあります。 - -詳細については、[[MARKETPLACE_IMPORTS_URL] エラーログ]をご覧ください。 - - - - '[ERROR_CODE]' エラーで転送できませんでした - -システムまたはネットワークのエラーのため、フォルダはマーケットプレイスに送信されませんでした。後でもう一度お試しください。 - - - - '[ERROR_CODE]' エラーでマーケットプレイスを初期化できませんでした - -システムまたはネットワークのエラーのため、マーケットプレイスの初期化に失敗しました。後でもう一度お試しください。 - - - - 在庫フォルダへのコピーまたは移動がエラーにより失敗しました: + fail + + -'[ERROR_CODE]' - - - - マーケットプレイスのリストへのコピーまたは移動がエラーにより失敗しました: + 現在利用可能なチュートリアルはありません。 + fail + + -'[ERROR_CODE]' - - - - マーケットプレイスによる取引が次のエラーにより失敗しました: - -[ERROR_REASON][ERROR_DESCRIPTION] - - - - この製品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。リストを編集するか、リストフォルダにエラーがないか確認してください。 - - - - マーケットプレイスへのリスト表示が次のエラーで失敗しました : - -'[ERROR_CODE]' - - - - このバージョンフォルダの有効化が次のエラーにより失敗しました : + [MESSAGE] + + [MESSAGE] + + + [MESSAGE] + + + + [APP_NAME]のアップデート中にエラーが発生しました。[http://get.secondlife.com 最新バージョンのビューアーをダウンロード]してください。 + + + + [SECOND_LIFE_GRID]に接続できませんでした。 +[DIAGNOSTIC] + +インターネット接続が正常かご確認ください。 + fail + + + + ビューアがサーバーから不正な形式の応答を受け取りました。インターネット接続が正常に機能していることを確認してから、後でもう一度お試しください。 + +これが誤りだと思われる場合は、サポートにお問い合わせください。 + fail + + + + メッセージテンプレート[PATH]がありませんでした。 + + fail + + + 現在の服装/身体部位の変更を保存しますか? + + + + これらのアイテムの1つ以上を販売用の送信トレイにコピーする権限がありません。移動したり残したままにすることはできます。 + + + + 販売ボックスの最上位に転送した各アイテムにつき、それぞれ1つの新しいフォルダが作成されました。 + + + + + 成功しました。 + +すべてのフォルダが、マーケットプレイスに正常に送信されました。 + + + + 一部のフォルダは送信できていません。 + +一部のフォルダが、マーケットプレイスに送信されるときにエラーが発生しました。これらのフォルダは、販売者の送信トレイにまだ残っています。 + +詳細につきましては、[[MARKETPLACE_IMPORTS_URL] エラーログ]をご確認ください。 + + + 以下のエラーで転送できませんでした:[ERROR_CODE] + +システムまたはネットワークのエラーのため、フォルダはマーケットプレイスに送信されませんでした。お手数ですが、後でもう一度やり直してください。 + + + + 以下のエラーでマーケットプレイスを初期化できませんでした:[ERROR_CODE] + +システムまたはネットワークのエラーのため、マーケットプレイスの初期化に失敗しました。お手数ですが、後でもう一度やり直してください。 + + + + 在庫フォルダへのコピーまたは移動がエラーにより失敗しました:[ERROR_CODE] + + + マーケットプレイスのリストへのコピーまたは移動が以下のエラーにより失敗しました:[ERROR_CODE] + + + マーケットプレイスによる取引が以下のエラーにより失敗しました:[ERROR_REASON] +[ERROR_DESCRIPTION] + + + この商品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。 +リストを編集するか、リストフォルダにエラーがないか確認してください。 + + + マーケットプレイスへのリスト表示が次のエラーで失敗しました: '[ERROR_CODE]' - - - - リストを作成するために、リストするコンテンツの階層を固定しました。 - - - - この操作により、このリストの有効な内容が変更されます。続けますか? - - - - マーケットプレイスのリストウィンドウにドラッグしたアイテムは元の場所からコピーされるのではなく、移動します。続けますか? - - - - リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けますか? - - - - これらのアイテムの 1 つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、置き去りにすることはできます。 - - - - この操作により、このリストが削除されます。続けますか? - - - - この操作により、現在のリストのバージョンフォルダが無効になります。続けますか? - - - - このリストをアップデートできませんでした。 -[[URL] ここをクリック] してマーケットプレイスで編集します。 - - - マーケットプレイスのリストフォルダにある衣服やボディパーツを着用できません。 - リスト ID が無効です。 - - このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 - - - - 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 - - - - 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 - - - - バージョンフォルダが空のため、リストを削除しました。もう一度リストを表示するには、バージョンフォルダにアイテムを追加する必要があります。 - - - アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 - 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 -[REASON] - 一度に複数のアイテムの中身を表示できません。 -アイテムを 1 つだけ選択して、もう一度お試しください。 - - 衣服、身体部位に対する変更をすべて保存しますか? - - - - フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 - - - - 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 - - - - 複数の Second Life ビューワを実行することはサポートされていません。テクスチャキャッシュのコリジョンや破損、およびビジュアルとパフォーマンスの低下につながる恐れがあります。 - - - - 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 -[NAME] に修正権限を与えますか? - - - - 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。 -選択した住人に修正権限を与えますか? - - - - [NAME] の修正権限を解約しますか? - - - - 選択した住人から変更権限を取り下げますか? - - - - グループ名は [MIN_LEN] ~ [MAX_LEN] 文字である必要があります。 - - - - グループを作成できません。 -[MESSAGE] - - - - [NEEDS_APPLY_MESSAGE] + + + このバージョンフォルダの有効化が次のエラーにより失敗しました: +'[ERROR_CODE]' + + + リストを作成するために、リストするコンテンツの階層を固定しました。 + confirm + + + この操作により、このリストの有効な内容が変更されます。続けてもよろしいですか? + confirm + + + マーケットプレイスのリストウィンドウにドラッグしたアイテムは、元の場所からコピーされるのではなく移動となります。続けてもよろしいですか? + confirm + + + リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けてもよろしいですか? + confirm + + + これらのアイテムの1つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、残したままにすることはできます。 + confirm + + + この操作により、このリストが削除されます。続けてもよろしいですか? + confirm + + + この操作により、現在のリストのバージョンフォルダが無効になります。続けてもよろしいですか? + confirm + + + このリストをアップデートできませんでした。 +[[URL] ここをクリック]してマーケットプレイスで編集します。 + + + マーケットプレイスのリストフォルダにある衣服装やボディパーツを着用できません。 + fail + + リストIDが無効です。 + fail + + このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 + confirm + + + 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 + confirm + + + 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 + confirm + + + バージョンフォルダが空のため、リストを削除しました。もう一度リストを表示するには、バージョンフォルダにアイテムを追加する必要があります。 + confirm + + + アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 + fail + + 以下の理由で、オークションのスナップショットのアップロード時に問題が起こりました:[REASON] + fail + + 一度に複数のアイテムの中身を表示できません。 +アイテムを1つだけ選択して、もう一度お試しください。 + fail + + 服装、身体部位に対する変更をすべて保存しますか? + confirm + + + フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 + + + 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 + + + Second Lifeビューアーの多重起動はサポートされていません。 +テクスチャキャッシュの競合による破損や、およびビジュアルとパフォーマンスの低下につながる恐れがあります。 + + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 +[NAME]に修正権限を与えますか? + + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更することができます。 +この権限を与える際には十分に注意してください。選択した住人に修正権限を与えますか? + confirm + + + [NAME]の修正権限を解除しますか? + confirm + + + 選択した住人から変更権限を取り下げますか? + confirm + + + グループ名は[MIN_LEN]~[MAX_LEN]文字である必要があります。 + group + fail + + + グループを作成できません。 +[MESSAGE] + group + fail + + + [NEEDS_APPLY_MESSAGE] [WANT_APPLY_MESSAGE] - - - - グループ通知の送信には、件名の記入が必要です。 - - - - あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。 -任命されたメンバーが自ら退任しない限り、 -役柄から削除できません。 + group + fail + + + グループ通知の送信には、件名の記入が必要です。 + group + fail + + + あなたは、[ROLE_NAME]の役割にメンバーを与えようとしています。任命されたメンバーが自ら退任しない限り、 役柄から削除できません。 操作を続行しますか? - - - - あなたは [ROLE_NAME] に [ACTION_NAME] の能力を -与えようとしています。 - - *警告* -この能力を持つ役割のメンバーは、 -自分と他のメンバーに現在より強力な権限を割り当て、 -自分をオーナーとほぼ同様の立場に任命することもできるようになります。 -この行為の意味をよく理解してから実行してください。 + + + あなたは[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 +*警告* +この能力を持つ役割のメンバーは、 自分と他のメンバーに現在より強力な権限を割り当て、 自分をオーナーとほぼ同様の立場に任命することもできるようになります。 +この行為の意味をよく理解してから実行してください。 この能力を [ROLE_NAME] に割り当てますか? - - - - あなたは [ROLE_NAME] に [ACTION_NAME] の能力を -与えようとしています。 - - *警告* -この能力をもつ役割のメンバーは、 -自分と他のメンバーにすべての能力を割り当て、 -自分をオーナーとほぼ同様の立場に任命できます。 + + + あなたは、[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 -この能力を [ROLE_NAME] に割り当てますか? - - - - 役割 '[ROLE_NAME]' に能力 '[ACTION_NAME]' を追加しようとしています。 +*警告* +この能力をもつ役割のメンバーは、自分と他のメンバーにすべての能力を割り当て、自分をオーナーとほぼ同様の立場に任命できます。 +この能力を[ROLE_NAME] に割り当てますか? + + + 役割「[ROLE_NAME]」に能力「[ACTION_NAME]」を追加しようとしています。 *警告* -この能力を持つ役割のメンバーにも能力 '[ACTION_NAME_2]' と '[ACTION_NAME_3]' が許可されます - - - - 役割 '[ROLE_NAME]' から能力 '[ACTION_NAME]' を削除しようとしています。 +この能力を持つ役割のメンバーにも能力「[ACTION_NAME_2]」と「[ACTION_NAME_3]」が許可されます。 + + + 役割「[ROLE_NAME]」から能力「[ACTION_NAME]」を削除しようとしています。 *警告* -この能力を削除しても能力 '[ACTION_NAME_2]' と '[ACTION_NAME_3]' は削除されません。 - +この能力を削除しても能力「[ACTION_NAME_2]」と「[ACTION_NAME_3]」は削除されません。 これらの能力をこの役割に許可しない場合は、すぐに削除してください! - - - - [AVATAR_NAME] をグループから追放しようとしています。 - - - - [COUNT] 名のメンバーをグループから追放しようとしています。 - - - - [AVATAR_NAME] をグループから追放しようとしています。 - - - - [COUNT] 名のメンバーをグループから追放しようとしています。 - - - 一部の住人がグループから追放されたため、招待状が送られませんでした。 - - アタッチメントを下に置こうとしています。 -続けますか? - - - - このグループに参加するには、L$ [COST] かかります。 -続行しますか? - - - - <nolink>[NAME]</nolink> というグループに入ろうとしています。 -続けますか? - - - このグループに加入するには、L$ [COST] 必要です。 -L$ が不足しているのでこのグループに参加することができません。 - - このグループ作成にかかる費用:L$[COST] + + + [AVATAR_NAME]をグループから追放しようとしています。 + group + confirm + + + [COUNT]名のメンバーをグループから追放しようとしています。 + group + confirm + + + [AVATAR_NAME]をグループから追放しようとしています。 + group + confirm + + + [COUNT]名のメンバーをグループから追放しようとしています。 + group + confirm + + + 一部の住人がグループから追放されたため、招待状が送られませんでした。 + 装着物を下に置こうとしています。 +このまま続けてもよろしいですか? + + + このグループに参加するには、L$ [COST]かかります。 +このまま続けてもよろしいですか? + confirm + funds + group + + + 「<nolink>[NAME]</nolink>」というグループに入ろうとしています。 +このまま続けてもよろしいですか? + group + confirm + + + このグループに加入するには、L$ [COST]必要です。 +L$が不足しているので、このグループに参加することができません。 + group + fail + funds + + このグループ作成にかかる費用:L$[COST] 一人ではグループにならないので、永久に削除されてしまいます。 -48 時間以内にメンバーを勧誘し、入会してもらってください。 - - - - あなたはグループに参加することはできません。 - - - - グループ参加リクエスト中にエラーが発生しました。 - - - - グループに参加できません: [reason] - - - - 申し訳ありませんが、トライアルユーザーはグループに参加できません。 - - - - 「<nolink>[group_name]</nolink>」に参加できません: -既に [group_count] グループのメンバーになっています。参加できるのは最大 [max_groups] グループまでです。 - - - - 「<nolink>[group_name]</nolink>」に参加できません: +48時間以内にメンバーを勧誘し、入会してもらってください。 + group + funds + + + あなたはグループに参加することはできません。 + group_id + success + + + グループ参加リクエスト中にエラーが発生しました。 + group_id + success + + + 以下のグループに参加できませんでした:[reason] + group_id + success + reason + + + 申し訳ありませんが、トライアルユーザーはグループに参加できません。 + group_id + success + + + 「<nolink>[group_name]</nolink>」に参加できません: +既に[group_count]個のグループのメンバーになっています。参加できるのは最大[max_groups]グループまでです。 + success + group_id + group_name + group_count + max_groups + + + 「<nolink>[group_name]</nolink>」に参加できません: このグループは現在、参加が制限されています。 - - - - このユーザーグループに追加されました - - - - 会員料金として必要な L$ [membership_fee] を送金することができません。 - - - - L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。 -入場許可を購入しますか? - - - 不特定の人に売却する場合には、 -売却価格はL$ 0 以上に設定する必要があります。 -売却価格をL$ 0 に設定する場合は、 -売却する個人を選択してください。 - - 選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。 -売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。 - - - - 注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。 - -選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。 -販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。 - - - - グループ「<nolink>[NAME]</nolink>」と共有するこのにある区画のすべてのオブジェクトを前のオーナーのインベントリに返却しますか? - -*注意*この操作をすると、グループに譲渡された譲渡禁止のオブジェクトを削除することになります。 - -オブジェクト: [N] - - - - この区画で、 -住人 [NAME] が所有する全てのオブジェクトを -本人のインベントリに本当に返却してもよいですか? - -オブジェクト: [N] - - - - この土地区画内にある、あなたが所有するすべてのオブジェクトを、 -あなたのインベントリに戻そうとしています。続けますか? - -オブジェクト: [N] - - - - この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、 -それぞれの所有者のインベントリに戻そうとしています。 -操作を続行しますか? -グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 - -*警告* これにより、 -グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! -オブジェクト: [N] - - - - この土地区画内にある、 -[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。 -操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 - -*警告* これにより、 -グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! -オブジェクト: [N] - - - - リストされた全てのオブジェクトを所有者の持ち物に戻しますか?これによりすべてのスクリプト化されたオブジェクトがリージョンに戻ります! - - - - このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか? - - - - グループ <nolink>[NAME]</nolink> と共有されていない、この区画にあるオブジェクトを前のオーナーに返却しますか? - -オブジェクト: [N] - - - スクリプトを無効にできません。 + group_id + success + + + このユーザーグループに入会しました。 + group_id + success + + + 会員料金として必要なL$ [membership_fee]を送金することができません。 + group_id + success + + + この区画([PARCEL_NAME])は、L$ [COST]で[TIME]時間入ることができます。入場許可証を購入しますか? + fail + funds + confirm + + + 不特定の人に売却する場合には、売却価格はL$ 0以上に設定する必要があります。 +売却価格をL$ 0に設定する場合は、売却する個人を選択してください。 + fail + + 選択した[LAND_SIZE]㎡の土地は、売り出し中に設定されています。 +売却価格L$ [SALE_PRICE]で、[NAME]に売却を認可します。 + confirm + + + 注意:「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず、[SECOND_LIFE]コミュニティ全体で利用可能となります。 +選択した[LAND_SIZE]㎡の土地は、販売対象に設定されました。 +販売価格L$ [SALE_PRICE]で、[NAME]が販売対象者となります。 + confirm + + + グループ「<nolink>[NAME]</nolink>」と共有するこのにある区画のすべてのオブジェクトを前のオーナーのインベントリに返却しますか? +*警告* +この操作をすると、グループに譲渡された譲渡禁止のオブジェクトを削除することになります。 +オブジェクト:[N] + confirm + group + + + この区画で、住人[NAME]が所有する全てのオブジェクトを本人のインベントリに本当に返却してもよいですか? +オブジェクト:[N] + confirm + + + この土地区画内にある、あなたが所有するすべてのオブジェクトを、あなたのインベントリに戻そうとしています。このまま続けてもよろしいですか? +オブジェクト:[N] + confirm + + + この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、それぞれの所有者のインベントリに戻そうとしています。このまま操作を続行してもよろしいですか? +グループに譲渡された「再販・譲渡可」のオブジェクトは、以前の所有者に返却されます。 + +*警告* + +これにより、グループに譲渡された「再販・譲渡不可」のオブジェクトは削除されます! +オブジェクト:[N] + confirm + + + この土地区画内にある、[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。このまま操作を続行してもよろしいですか? +グループに譲渡された「再販・譲渡可」のオブジェクトは、以前の所有者に返却されます。 + +*警告* + +これにより、グループに譲渡された「再販・譲渡不可」のオブジェクトは削除されます! +オブジェクト:[N] + confirm + + + リストされた全てのオブジェクトを所有者の持ち物に戻しますか? +これによりすべてのスクリプト化されたオブジェクトがリージョンに戻ります! + confirm + + + このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。このまま操作を続行してもよろしいですか? + confirm + + + グループ <nolink>[NAME]</nolink>と共有されていない、この区画にあるオブジェクトを前のオーナーに返却しますか? +オブジェクト:[N] + confirm + + + スクリプトを無効にできません。 このリージョン(地域)全体が「ダメージ有効」に設定されています。 -武器を使用するにはスクリプトの実行を許可する必要があります。 - - 現在複数の面が選択されています。 +武器を使用するには、スクリプトの実行を許可する必要があります。 + fail + + 現在複数の面が選択されています。 このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。 -メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 - - - 着地点を設定するには、この区画の内側に -立ってください。 - 受信者の有効なメールアドレスを入力してください。 - あなたのメールアドレスを入力してください。 - - デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? - - - スナップショットデータの処理エラー - スナップショットのエンコード化でエラーが出ました! - このアイテムをアップロードするには L$[COST] が必要です。 - インベントリに写真を保存するには L$[COST] が必要です。L$ を購入するか、代わりに写真をっコンピュータに保存できます。 - インベントリにテクスチャを保存するには L$[COST] が必要です。L$ を購入するか、代わりに写真をコンピュータに保存できます。 - 次の理由で、スナップショットの送信時に問題が起こりました: [REASON] - 次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON] - [SECOND_LIFE] へのログインを続けるには、Second Life の利用規約、プライバシーポリシー、およびサービス規約に同意する必要があります。 - アウトフィットを装着できません。 -アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。 - ごみ箱にある衣類や身体部位の着用はできません。 - オブジェクトを付けられませんでした。 -最大数の [MAX_ATTACHMENTS] 個を越えています。 どれか取り外してからお試しください。 - まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 - ログインするためにパスワードを入力してください - - 注意:記入漏れの箇所があります。 +メディアを1つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 + confirm + + + 着地点を設定するには、この区画の内側に立ってください。 + fail + + 受信者の有効なメールアドレスを入力してください。 + fail + + あなたのメールアドレスを入力してください。 + fail + + デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? + confirm + + + スナップショットデータの処理エラー + fail + + スナップショットのエンコードエラー + fail + + このアイテムをアップロードするには、L$ [COST]が必要です。 + fail + + インベントリに写真を保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 + fail + + インベントリにテクスチャを保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 + fail + + 以下の理由でスナップショットの送信時に問題が起こりました:[REASON] + fail + + 以下の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました:[REASON] + fail + + [SECOND_LIFE]へのログインを続けるには、Second Lifeの利用規約、プライバシーポリシー、およびサービス規約に同意する必要があります。 + fail + + アウトフィットを装着できません。 +アウトフィットフォルダに服装、身体部位、装着物がありません。 + fail + + ごみ箱にある服装や身体部位は、着用できません。 + fail + + オブジェクトを装着できませんでした。 +最大装着数[MAX_ATTACHMENTS]個を越えています。どれか取り外してからお試しください。 + fail + + まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 + fail + + ログインするためにパスワードを入力してください。 + fail + + おっと、記入漏れがあります。 アバターのユーザー名を入力してください。 -[SECOND_LIFE] に入るにはアカウントが必要です。今すぐアカウントを作成しますか? - [create_account_url] - - - ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。 - '[GRID]' は有効なグリッド ID ではありません。 - ログイン位置で有効なグリッドが指定されませんでした。 - - クラシファイド広告 [NAME] を削除しますか? +[SECOND_LIFE]に入るにはアカウントが必要です。今すぐアカウントを作成しますか? + confirm + [create_account_url] + + + ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。 + fail + + 「[GRID]」は、有効なグリッドIDではありません。 + fail + + ログイン位置で有効なグリッドが指定されませんでした。 + fail + + クラシファイド広告『[NAME]』を削除してもよろしいですか? 支払い済みの料金は返金されません。 - - - - この面にあるメディアを削除する選択をしました。 -続けますか? - - - - クラシファイド広告 [NAME] への変更を保存しますか? - - - - クラシファイド広告を出すには、資金が足りません。 - - - - <nolink>[PICK]</nolink> を削除しますか? - - - - 選択したアウトフィットを削除しますか? - - - - [SECOND_LIFE] イベント Web ページに移動しますか? - http://secondlife.com/events/?lang=ja-JP - - - 表示する提案を選択してください。 - 表示する履歴アイテムを選択してください。 - [APP_NAME] を再起動後にキャッシュがクリアされます。 - [APP_NAME] を再起動後にキャッシュが移動されます。 -ご注意: キャッシュがクリアされます。 - ポートの設定は [APP_NAME] を再起動後に反映されます。 - デバッグ設定の変更は [APP_NAME] を再起動後に反映されます。 - 新しいスキンは [APP_NAME] を再起動後に表示されます。 - 言語の変更は [APP_NAME] を再起動後に反映されます。 - - [SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか? - http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] - - - - 変更を保存しますか? - - - - ノートカードを削除しますか? - - - - 以前のスクリーンショットをレポートに使用しますか? - - - ジェスチャーの保存に失敗しました。 + confirm + + + この顔に紐づけられたメディアの削除を選択しました。 +続行してもよろしいですか? + confirm + + + クラシファイド広告[NAME]への変更を保存しますか? + confirm + + + クラシファイド広告を出すには、資金が足りません。 + fail + + + + クラシファイド広告<nolink>[CLASSIFIED]</nolink>を削除してもよろしいですか? + confirm + + + ピック<nolink>[PICK]</nolink>を削除してもよろしいですか? + confirm + + + 未公開のクラシファイド広告があります。 +ウィンドウを閉じると変更が失われます。 + confirm + + + 保存されていない変更があります。 + confirm + save + + + 「<nolink>[PICK]</nolink>」を削除してもよろしいですか? + + + このアウトフィットを削除してもよろしいですか? + confirm + + + [SECOND_LIFE]イベントWebページに移動しますか? + https://secondlife.com/my/community/events/?lang=ja-JP + confirm + + + 表示する提案を選択してください。 + fail + + 表示する履歴アイテムを選択してください。 + fail + + + + + キャッシュは、[APP_NAME]再起動後にクリアされます。 + キャッシュは、[APP_NAME]再起動後が移動されます。 +注意:キャッシュがクリアされます。 + ポートの設定は、[APP_NAME]再起動後に反映されます。 + デバッグ設定の変更は、[APP_NAME]再起動後に反映されます。 + 新しいスキンは、[APP_NAME]再起動後に表示されます。 + 言語の変更は、[APP_NAME]再起動後に反映されます。 + [SECOND_LIFE]のWebページに移動し、入札あるいはオークションの詳細を確認しますか? + confirm + http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] + + + 変更を保存しますか? + confirm + + + このノートカードを削除してもよろしいですか? + + confirm + + + 以前のスクリーンショットをレポートに使用しますか? + + + ジェスチャーの保存に失敗しました。 ステップが多すぎます。 -ステップをいくつか削除してから再保存してください - ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。 - ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 -オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。 - ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 -オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - 次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。 - - あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。 +ステップをいくつか削除してから再保存してください + fail + + ジェスチャーの保存に失敗しました。 +少し待ってからもう一度試してください。 + fail + + ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 +オブジェクトが範囲内に存在しないか、削除された可能性があります。 + fail + + 以下の理由で、ジェスチャーの保存時に問題が起こりました:[REASON] +お手数ですが、後でもう一度試してください。 + fail + + ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 +オブジェクトが範囲内に存在しないか、削除された可能性があります。 + fail + + 以下の理由で、ノートカードの保存時に問題が起こりました:[REASON] +お手数ですが、後でもう一度試してください。 + fail + + あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。 サーバーの最新保存バージョンをロードしますか? (**警告**:この操作後元に戻すことはできません) - - - スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。 -オブジェクトは範囲外か、または削除されているかもしれません。 - - ログイン位置が指定されていません。 + confirm + + + スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。 +オブジェクトは範囲外か、または削除されているかもしれません。 + fail + + ログイン位置が指定されていません。 ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。 - - - スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。 -オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - ファイルをダウンロードできません。 - - [SECOND_LIFE] でサポートされていないファイルのダウンロードを要求しました。 - - - ファイル [[FILE]] を書き込めません。 - - お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。 - -[_URL] に移動して確認をしますか? - http://secondlife.com/support/sysreqs.php?lang=ja - - - ビューワ実行ファイルを直接実行しないでください。代わりに、既存のショートカットの内のどれかをアップデートし、SL_Launcher を実行してください。 - - グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 - - ドライバの更新を確認するために [URL] にアクセスしますか? - [URL] - - - - お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。 -[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。 -(ミー > 環境設定 > グラフィック) -
- - -
- グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。 -ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。 + fail + + + スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。 +オブジェクトが範囲内に存在しないか、または削除された可能性があります。 + fail + + ファイルをダウンロードできません。 + fail + + ダウンロードをリクエストしたファイルは、[SECOND_LIFE]でサポートされていません。 + + confirm + + + ファイル[[FILE]]に書き込むことができませんでした。 + fail + + お使いのコンピュータは、[APP_NAME]の最小システム要件を満たしていません。 +このためパフォーマンスが低下する場合があります。恐れ入りますが[SUPPORT_SITE]は、サポートされていないシステム構成に対する技術的サポートを提供できません。 + +詳細について、[_URL]を確認しますか? + http://secondlife.com/support/sysreqs.php?lang=ja + fail + + + グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 +ドライバの更新を確認するために[URL]にアクセスしますか? + [URL] + confirm + fail + + + お使いのシステムには、[APP_NAME]が認識できないグラフィックカードが搭載されています。[APP_NAME]でまだテストされていない最新ハードウェアのためだと考えられます。 +問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。 +(「私」>「初期設定」>「グラフィック」) + fail +
+ + +
+ グラフィックドライバを初期化中に[APP_NAME]がクラッシュしました。 +ドライバの一般的なエラーを防ぐために、画質が低に設定されます。このため、一部のグラフィック特性に制限が出ます。 お使いのグラフィックカードのドライバをアップデートするようおすすめします。 -画質は、環境設定 > グラフィック で設定できます。 - [REGION] では、地形の変更ができません。 - あなたには [PARCEL] 区画を地形編集する許可がありません。 - - あなたには次アイテムをコピーする権限がありません: -<nolink>[ITEMS]</nolink> -他の住人に譲ると、そのアイテムはあなたの持ち物から削除されます。本当にこれらのアイテムを譲りますか? - - - インベントリのアイテムを渡せません。 - 取引がキャンセルされました。 - 一度に 42 個以上のアイテムは渡せません。 - 選択したアイテムを渡す権限がありません。 - - あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。 +画質は、「初期設定」>「グラフィック」で設定できます。 + fail + + この設定を変更すると、「自動調整」の設定が無効になります。 +続けてもよろしいですか? + confirm + + + 高度な照明をオンにするには、品質をレベル4以上にする必要があります。 + confirm + + + 影を有効にするには、品質をレベルを4以上にする必要があります。 + confirm + + + [REGION]では、地形の変更ができません。 + fail + + [PARCEL]区画の地形を編集する権限がありません。 + fail + + 以下のアイテムをコピーする権限がありません: +<nolink>[ITEMS]</nolink> +他の人に譲ると、そのアイテムはあなたの持ち物から削除されます。本当にこれらのアイテムを譲ってもよろしいですか? + confirm + fail + + + インベントリのアイテムを渡すことができません。 + fail + + 取引がキャンセルされました。 + fail + + 一度に42個以上のアイテムを渡すことはできません。 + fail + + 選択したアイテムを渡す権限がありません。 + fail + + あなたは選択した[COUNT]個のアイテムをコピーする権限がありません。 これらのアイテムはあなたのインベントリから失われます。 -本当にアイテムを渡したいですか? - - - 選択したフォルダを渡す権限がありません - - このアバターをフリーズしますか? +本当にアイテムを渡してもよろしいですか? + confirm + fail + + + 選択したフォルダを渡す権限がありません。 + fail + + このアバターをフリーズしますか? アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。 - - - - [AVATAR_NAME]をフリーズしますか? -フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。 - - - - あなたの土地から [AVATAR_NAME] を追放しますか? - - - - このアバターをあなたの土地から追放しますか? - - - - [AVATAR_NAME] をあなたの土地から追放しますか? - - - <nolink>[GROUP_NAME]</nolink> から [AVATAR_NAME] を追放しました - 取得エラー:選択したオブジェクトの数が多すぎます。 - 取得エラー: -オブジェクトが複数のリージョン(地域)にまたがって存在しています。 -すべて同じリージョン内に移動させてから取得してください。 - - [EXTRA] - -[_URL] に移動してリンデンドル購入に関する情報を確認しますか? - http://secondlife.com/app/currency/?lang=ja-JP - - - [MUTE_LIMIT] エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 - [COUNT] 個のオブジェクトをリンクできません。 -リンクできるのは最大 [MAX] 個です。 - セットで揃っているオブジェクトのみリンクできます。 -複数のオブジェクトを選択してください。 - すべてのオブジェクトの修正許可がないためリンクできません。 - -どのオブジェクトもロックされておらず、あなたのものであることを確認してください。 - 地域(リージョン)の境界を越えてオブジェクトをリンクできません。 - 地域(リージョン)の境界を越えてオブジェクトをリンクできません。 - 所有者が異なるため、オブジェクトをリンクできません。 - -自分が所有しているオブジェクトだけを選択してください。 - 「 [FILE] 」の拡張子が無効です。 + confirm + + + [AVATAR_NAME]をフリーズしますか? +フリーズされた人は一時的に動けなくなり、チャットなど、ワールドに対する関わりを持つことができなくなります。 + confirm + + + あなたの土地から[AVATAR_NAME]を追放しますか? + confirm + + + このアバターをあなたの土地から追放しますか? + confirm + + + [AVATAR_NAME]をあなたの土地から追放しますか? + confirm + + + <nolink>[GROUP_NAME]</nolink>から[AVATAR_NAME]を追放しました。 + group + + 取得エラー:選択したオブジェクトの数が多すぎます。 + fail + + 取得エラー:オブジェクトが複数のリージョン(地域)にまたがって存在しています。 +すべて同じリージョン内に移動させてから取得してください。 + fail + + [EXTRA] + +[_URL]に移動してリンデンドル購入に関する情報を確認しますか? + https://secondlife.com/my/lindex/?lang=ja-JP + + + [MUTE_LIMIT]エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 + fail + + [COUNT]個のオブジェクトをリンクできませんでした。 +リンクできるオブジェクトは最大[MAX]個です。 + fail + + セットが揃っているオブジェクトのみリンクできます。複数のオブジェクトを選択してください。 + fail + + すべてのオブジェクトの修正許可がないためリンクできません。 + +どのオブジェクトもロックされておらず、あなたのものであることを確認してください。 + fail + + リージョン(地域)の境界を越えてオブジェクトをリンクできません。 + fail + + リージョン(地域)の境界を越えてオブジェクトをリンクできません。 + fail + + 所有者が異なるため、オブジェクトをリンクできません。 +自分が所有しているオブジェクトだけを選択してください。 + fail + + ファイル「[FILE]」は、無効な拡張子です。 このファイルの拡張子が正しいかどうかを確認してください。 - - [EXTENSION] は無効です。 -正しい拡張子:[VALIDS] - - - 読み込みのためにアップロードされたサウンドファイルを開けません: -[FILE] - RIFF WAVE ファイルとして認識されません: -[FILE] - PCM WAVE オーディオファイルとして認識されません: -[FILE] - ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります): -[FILE] - ファイルのサンプルレートがサポートされていません(44.1k である必要があります): -[FILE] - ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります): -[FILE] - WAV ヘッダーにデータチャンクが見つかりません: -[FILE] - WAV ファイルのチャンクサイズが間違っています: -[FILE] - オーディオファイルが長すぎます。(最大 10 秒): -[FILE] - 「 [FILE] 」に問題があります。 - -[ERROR] - 書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE] - 不明の Vorbis のエンコードに失敗: [FILE] - 次のファイルのエンコードができません: [FILE] - - ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります - - - 破損したリソースファイル: [FILE] - 不明のリンデンリソースファイルのバージョン: [FILE] - 出力ファイルを作成できません: [FILE] - 現在 [APP_NAME] では、BVH 形式のアニメーションファイルの一括アップロードはサポートされていません。 - 次の理由で、「 [FILE] 」をアップロードできません: [REASON] -あとでもう一度試してください。 - 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。 - - 現在地のランドマークを既に持っています。 - - - 土地の所有者が許可していないため、ランドマークを作成することはできません。 - 「リコンパイル」できません。 -スクリプトのオブジェクトを選択してください。 - 「リコンパイル」できません。 - -修正修正権限のあるスクリプトのオブジェクトを選択してください。 - 「再設定」ができません。 - -スクリプトのオブジェクトを選択してください。 - 「再設定」ができません。 - -修正権限のあるスクリプトのオブジェクトを選択してください。 - 修正権限のないオブジェクトのスクリプトは開くことはできません。 - スクリプトの「実行」ができません。 - -スクリプトのオブジェクトを選択してください。 - スクリプトを「実行しない」設定にできません。 - -スクリプトのオブジェクトを選択してください。 - 保存する frontmost フロータがありません。 - 指定した検索クエリは変更され、短すぎる語句は取り除かれています。 - -検索語句: [FINALQUERY] - 指定した検索語句が短すぎたため、検索は行われませんでした。 - テレポートに失敗しました。 -[REASON] - テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 - リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 - 申し訳ございません。テレポートは現在、ブロックされています。しばらくしてから再度お試しください。 -それでもテレポートできない場合は、ログアウトし、ログインし直して問題を解決してください。 - 申し訳ございません。ランドマークの目的地が見つかりませんでした。 - 申し訳ございません。システムによるテレポート接続が完了できませんでした。 -しばらくしてから再度お試しください。 - 残念ながら、目的地へアクセスが許可されていないため、テレポートできません。 - 添付物がまだ届いていません。テレポートをする前にあと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてください。 - このリージョンのアセットキューが現在混み合っているため、テレポートのリクエストをすぐに処理することが難しい状況です。 -数分後にやり直すか、混雑していない他のリージョンでお試しください。 - 申し訳ございません。システムはテレポートのリクエストを時間どおりに完了できませんでした。数分後にやり直してください。 - 申し訳ございません。システムはリージョン間の移動を時間どおりに完了できませんでした。 -数分後にやり直してください。 - テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。 - インベントリシステムは現在利用できません。 - 土地所有者設定ができません: -区画が選定されていません。 - 複数のリージョンが選択されたため、土地の所有権を取得できません。 -選択する面積を小さくして、もう一度お試しください。 - - この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。 + 「[EXTENSION]」は、無効な拡張子です。 +有効な拡張子:[VALIDS] + fail + + + 読み込みのためにアップロードされたサウンドファイルを開けません: +[FILE] + fail + + RIFF WAVEファイルとして認識されません: +[FILE] + fail + + PCM WAVEオーディオファイルとして認識されません: +[FILE] + fail + + このファイルのチャンネル数は無効です(モノラルか、ステレオである必要があります): +[FILE] + fail + + このファイルのサンプリングレートはサポートされていません(44.1kである必要があります): +[FILE] + fail + + このファイルのビットサイズはサポートされていません(8bitか、16bitである必要があります): +[FILE] + fail + + WAVヘッダーにデータチャンクが見つかりません: +[FILE] + fail + + WAVファイルのチャンクサイズが間違っています: +[FILE] + fail + + オーディオファイルが長すぎます。(最大10秒): +[FILE] + fail + + 「[FILE]」に問題があります。 + +[ERROR] + fail + + 書き込み用の一時圧縮サウンドファイルを開くことができません: +[FILE] + fail + + 不明なVorbisのエンコードに失敗しました: +[FILE] + fail + + 次のファイルのエンコードができません: +[FILE] + fail + + ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります + fail + + + 破損したリソースファイル: +[FILE] + fail + + 不明なLindenリソースファイルのバージョンです: +[FILE] + fail + + 出力ファイルを作成できません: +[FILE] + fail + + 現在[APP_NAME]では、BVH形式のアニメーションファイルの一括アップロードはサポートされていません。 + fail + + 以下の理由で「[FILE]」をアップロードできませんでした: +[REASON] + +お手数ですがもう一度やり直してください。 + fail + + 「[LANDMARK_NAME]」を「[FOLDER_NAME]」フォルダに追加しました。 + この場所のランドマークは、既に持っています。 + fail + + + + +フォルダ名を入力してください: + confirm +
+ + +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml index df9ef40113..098128bb6d 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml @@ -1,11 +1,12 @@ - - - - - - - + + + + 名前タグ: + + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml b/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml new file mode 100644 index 0000000000..21dabb133c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml @@ -0,0 +1,66 @@ + + + + + + 0 + [https://community.secondlife.com/t5/Featured-News/Why-are-all-these-people-made-of-colored-jelly/ba-p/3031255 これはなんですか?] + + + +
- + diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index 3f43469c6f..8311f0859f 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -34,7 +34,7 @@ - +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index f64a6dc55c..76b484a816 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -5,7 +5,7 @@ - + diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index cc5bed8331..5227c0d583 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -326,7 +326,7 @@ - + diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 66ac069be4..13f94172b6 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -3303,7 +3303,7 @@ Webページにリンクすると、他人がこの場所に簡単にアクセ fail - [TO_NAME]にテレポートを送りました。 + [TO_NAME]にテレポートのオファーを送りました。 [NAME_SLURL] は、テレポートであなたを呼んでいます。 [MESSAGE] @@ -3329,7 +3329,7 @@ Webページにリンクすると、他人がこの場所に簡単にアクセ [MESSAGE] -(デフォルト設定だとお互いのオンライン状態を見ることができます) +(デフォルトの設定では、お互いのオンライン状態を知ることができます。) friendship confirm @@ -3984,10 +3984,10 @@ UDP:3478, 3479, 5060, 5062, 6250, 12000-32000 - ⒈クリックで移動 -行地面の一箇所をクリックすると、その場所まで歩きます。 + 1,クリックで移動 +地面をクリックすると、その場所まで歩きます。 -⒉クリック・ドラッグで視界を回転 +2,クリック・ドラッグで視界を回転 任意の場所をクリックしてドラッグすると視界を回転させることができます。 custom_skin diff --git a/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml b/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml index 21dabb133c..f5f1bc1b03 100644 --- a/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml +++ b/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml @@ -38,10 +38,10 @@ - - 水の効果を簡素化するかオフにすると、フレームレートが大幅に向上します。 + 水面 + 水面の効果を簡素化するかオフにすると、フレームレートが大幅に向上します。 - 水の反射: + 水面の反射: @@ -56,11 +56,11 @@ 詳細度を最大にすると撮影に適した画像になりますが、フレームレートが下がります。 (0.0~4.0の値を入れてください) - 1 - 2 - 3 - 4 - 5 - 6 - 7 + 1 + 2 + 3 + 4 + 5 + 6 + 7 \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/panel_region_environment.xml b/indra/newview/skins/default/xui/ja/panel_region_environment.xml index a11ebb1fb3..092ea431b9 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_environment.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_environment.xml @@ -2,12 +2,12 @@ 既定の設定を使用 リージョン(地域)の設定を使用 - 空 [INDEX]([ALTITUDE]m) - 区画が選択されていません。環境設定が無効になっています。 - リージョン(地域)の境界では環境設定ができません。 - このリージョン(地域)で環境設定はできません。 - 不動産マネージャーが、このリージョン(地域)で区画の環境を変更することを許可していません。 - 環境をサポートするには、最低でも128㎡の区画が必要です。 + 空 [INDEX]([ALTITUDE]m) + 区画が選択されていません。環境の設定は無効になっています。 + リージョン(地域)の境界では環境の設定ができません。 + このリージョン(地域)で環境の設定ができません。 + このリージョン(地域)の不動産マネージャーは、区画ごとの環境の変更を許可していません。 + 環境を変更するには、最低でも128㎡の区画が必要です。 (空) (リージョンの環境) @@ -22,7 +22,7 @@ +
diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml index 6dd6b486a7..284449d59d 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -1,36 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml index aae708e257..d2e46447a0 100644 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -1,21 +1,21 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml index 8c697317a5..f032327dd9 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml index 237d66c54d..a7989b35c8 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -1,38 +1,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml index 0205564756..3c824840a5 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml index 65f7fae6bd..15021859bb 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml @@ -1,6 +1,5 @@ - - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml index 80ed3b19c8..f0100f6f08 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -1,37 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml index 3e4ab1f856..154db254da 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml index 8af5189f87..eb5faa2545 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml index 47d4f76e48..f94e5d393c 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml index f6ce0e6c6c..c60b27111e 100644 --- a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml index ff6884f24d..047f5d57cf 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation.xml @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml index 7e43b8b61f..78c46d13b4 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_gear.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml index c239eb9543..bcda112d2f 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation_log_view.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml index 819b05f854..b58b08ebb2 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_color.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml index ac211997bf..6105fd5296 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_features.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml index 80d7eeff31..0f069dfffa 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_light.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml index ed1491298f..b2d3672019 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_object.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml index 92e0ec74ba..3589d7bd4c 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_pos.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml index 9504f39ef1..7a77a74b67 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_rot.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml index 1ee1d6a914..3b813ba97f 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_size.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml b/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml index a596fbe103..0947a66b9a 100644 --- a/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml +++ b/indra/newview/skins/default/xui/ja/menu_copy_paste_texture.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_edit.xml b/indra/newview/skins/default/xui/ja/menu_edit.xml index 0152675de7..121b3d699b 100644 --- a/indra/newview/skins/default/xui/ja/menu_edit.xml +++ b/indra/newview/skins/default/xui/ja/menu_edit.xml @@ -1,12 +1,12 @@ - - - - - - - - - - \ No newline at end of file + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_favorites.xml b/indra/newview/skins/default/xui/ja/menu_favorites.xml index 94361555fe..58347b55fb 100644 --- a/indra/newview/skins/default/xui/ja/menu_favorites.xml +++ b/indra/newview/skins/default/xui/ja/menu_favorites.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml index 2527e373f4..5540c9a234 100644 --- a/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_gallery_outfit_tab.xml @@ -1,35 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml index 333db46380..e1f24cdb39 100644 --- a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml @@ -1,11 +1,11 @@ - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_group_plus.xml b/indra/newview/skins/default/xui/ja/menu_group_plus.xml index 52cc5e69e1..db403ac938 100644 --- a/indra/newview/skins/default/xui/ja/menu_group_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_group_plus.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml index 3a9fb3570a..d9d6e51867 100644 --- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + +
diff --git a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml index 8899b69f1a..b3d3917965 100644 --- a/indra/newview/skins/default/xui/ja/menu_im_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_im_conversation.xml @@ -1,16 +1,16 @@ - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml index 5ef2a4152a..73e4164407 100644 --- a/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml +++ b/indra/newview/skins/default/xui/ja/menu_im_session_showmodes.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml index 26b581b793..8cd6fa4a27 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml @@ -1,4 +1,4 @@ - - \ No newline at end of file + +
diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml index 7ae8765df4..e7f5cb310a 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml index 61a9bae73c..edcc0f751a 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml index ec5abea6b2..55b2e8b21b 100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml @@ -1,19 +1,19 @@ - + - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml index d9642e3c0c..9a4a8138f5 100644 --- a/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_inv_offer_chiclet.xml @@ -1,4 +1,4 @@ - - \ No newline at end of file + + diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 03e02ff200..c7cba4845d 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -1,133 +1,129 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index 8311f0859f..0de24d1c7a 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -1,40 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index 7a8adcb9fb..975e1b147a 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -1,21 +1,21 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml b/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml index f76be9631a..2395c9e7b3 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_search_visibility.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml index a65504b14c..bef249d203 100644 --- a/indra/newview/skins/default/xui/ja/menu_land.xml +++ b/indra/newview/skins/default/xui/ja/menu_land.xml @@ -1,13 +1,10 @@ - - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml index 06345c5074..c134422955 100644 --- a/indra/newview/skins/default/xui/ja/menu_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_landmark.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 5ba2092648..f59b0b7e5e 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml index 6c6913db5d..ad02ada4b9 100644 --- a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml index 6f4f4938f4..3c566a87a4 100644 --- a/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/menu_media_ctrl.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml index 77a2e60cda..eee3fb7690 100644 --- a/indra/newview/skins/default/xui/ja/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml @@ -1,11 +1,11 @@ - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml index f35e74afc5..9472255128 100644 --- a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml index 38b736ae9b..8befe0cf57 100644 --- a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml +++ b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml @@ -1,5 +1,4 @@ - - - \ No newline at end of file + + diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml index f3e274313e..9954c17ddc 100644 --- a/indra/newview/skins/default/xui/ja/menu_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_navbar.xml @@ -1,11 +1,11 @@ - - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml index 42a6c66168..1665efe46a 100644 --- a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml @@ -1,12 +1,12 @@ - - - - - - - - - - \ No newline at end of file + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml index 3852efcdd4..913bae8958 100644 --- a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml @@ -1,4 +1,4 @@ - - \ No newline at end of file + + diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml index f7e64e015a..14db32081b 100644 --- a/indra/newview/skins/default/xui/ja/menu_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -1,36 +1,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml index 163c8d1779..e7cd4b40b8 100644 --- a/indra/newview/skins/default/xui/ja/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_object_icon.xml @@ -1,9 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml index 962d25bb07..b869e67923 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml @@ -1,42 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml index 66ebb79bb9..cc04ac6dcf 100644 --- a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml @@ -1,9 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 76b484a816..ebce5f7e6b 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_participant_view.xml b/indra/newview/skins/default/xui/ja/menu_participant_view.xml index ef61874763..be9fffae04 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_view.xml @@ -1,16 +1,16 @@ - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml index 8d80ddebad..ac1757cc48 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml @@ -1,10 +1,10 @@ - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml index 1d89e15f64..a87c55038f 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_plus.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml index db586365b2..80d9d43005 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_view.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml index fee506c511..e761c506bf 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_friends_view.xml @@ -1,9 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml index 91044bd283..2c0c85ba28 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml index 07144be420..4a9e402fa4 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_groups_view.xml @@ -1,4 +1,4 @@ - - \ No newline at end of file + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index f59ebfa154..bbe842a37e 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml index 5c73eb5a4f..4e3dbd3279 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml @@ -1,10 +1,10 @@ - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml index 7b56f1daf8..68e5ec88bf 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view.xml @@ -1,10 +1,10 @@ - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml index da27372963..84b24726f4 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_recent_view.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_picks.xml b/indra/newview/skins/default/xui/ja/menu_picks.xml index 4a5a42ad05..ef4d9bc369 100644 --- a/indra/newview/skins/default/xui/ja/menu_picks.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks.xml @@ -1,10 +1,10 @@ - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml index 62eb8327bc..84bf90fea0 100644 --- a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_place.xml b/indra/newview/skins/default/xui/ja/menu_place.xml index f45f9211ed..fc1ec43c6c 100644 --- a/indra/newview/skins/default/xui/ja/menu_place.xml +++ b/indra/newview/skins/default/xui/ja/menu_place.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml index d6a13b92ba..575b61ffa5 100644 --- a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml index c9fa92b6a2..9b1bd4f18b 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml index 16508dde4a..594a2016b1 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml @@ -1,22 +1,22 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml index 197b61af30..70dd50c25d 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_sorting.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_profile_other.xml b/indra/newview/skins/default/xui/ja/menu_profile_other.xml index 0ff41f91a2..0247a60803 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_other.xml @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml index 67c481cdd6..24304689ce 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml @@ -1,12 +1,12 @@ - - - - - - - - - - \ No newline at end of file + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_profile_self.xml b/indra/newview/skins/default/xui/ja/menu_profile_self.xml index ec10d92629..7c9570378e 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_self.xml @@ -1,12 +1,12 @@ - - - - - - - - - - \ No newline at end of file + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml index 6d8f2381d9..0533c8677b 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_save_settings.xml b/indra/newview/skins/default/xui/ja/menu_save_settings.xml index a8bb95a661..0e8e25955f 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_settings.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_settings.xml @@ -1,9 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml index c4bc424927..a89dd0bcbe 100644 --- a/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml +++ b/indra/newview/skins/default/xui/ja/menu_script_chiclet.xml @@ -1,4 +1,4 @@ - - \ No newline at end of file + + diff --git a/indra/newview/skins/default/xui/ja/menu_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_settings_add.xml index 9e64476446..814ad9c1a6 100644 --- a/indra/newview/skins/default/xui/ja/menu_settings_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_settings_add.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_settings_gear.xml b/indra/newview/skins/default/xui/ja/menu_settings_gear.xml index a44786b414..a8ff0d3721 100644 --- a/indra/newview/skins/default/xui/ja/menu_settings_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_settings_gear.xml @@ -1,10 +1,10 @@ - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml index 3d5ea3f616..820cc3cd53 100644 --- a/indra/newview/skins/default/xui/ja/menu_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml index fd4dffeefa..e5e5b7b1ba 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml index dc34bc6463..c26b70e9e1 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml index 391be973f8..4dd44d2ec8 100644 --- a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_text_editor.xml b/indra/newview/skins/default/xui/ja/menu_text_editor.xml index 48fd8ad243..3a5892bafc 100644 --- a/indra/newview/skins/default/xui/ja/menu_text_editor.xml +++ b/indra/newview/skins/default/xui/ja/menu_text_editor.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml index 9bb4eaf496..a54f7bdef7 100644 --- a/indra/newview/skins/default/xui/ja/menu_toolbars.xml +++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml index ea1e12ab2b..326e6d232b 100644 --- a/indra/newview/skins/default/xui/ja/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/ja/menu_topinfobar.xml @@ -1,11 +1,9 @@ - - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml index dc9a6af8fe..9ce9a070f2 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml @@ -1,10 +1,10 @@ - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_email.xml b/indra/newview/skins/default/xui/ja/menu_url_email.xml index 1ba8d6a64e..6c41d759fe 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_email.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_email.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_experience.xml b/indra/newview/skins/default/xui/ja/menu_url_experience.xml index 83d7029527..09d4dce74d 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_experience.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_experience.xml @@ -1,4 +1,4 @@ - - \ No newline at end of file + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml index 9214d67dea..ebd7f25d6e 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_group.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml index ba5048094d..ae97e8bd8d 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_http.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml index 7a13030b64..1805fb03bb 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml @@ -1,7 +1,7 @@ - - - - - \ No newline at end of file + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_map.xml b/indra/newview/skins/default/xui/ja/menu_url_map.xml index 75813f9017..041b30d05b 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_map.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index ef76e5484f..06defa7aed 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml @@ -1,12 +1,12 @@ - - - - - - - - - - \ No newline at end of file + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml index 0c1eab8dad..93aa1372c5 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml index 78f3997bf8..c80351bdae 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml index e0d4427008..100dbd0f99 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml @@ -1,9 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml index e6941fb8bd..a2097ec1f9 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 5227c0d583..a1f3980df4 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -1,690 +1,573 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml index 7ea696d6ca..213a554bbd 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml index 75fa3f69b3..54c30757ea 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml @@ -1,8 +1,8 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml index 7845ff9aad..7d305e4e34 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml @@ -1,9 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index 23bab3b0b2..b25d4dd0cc 100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -1,143 +1,251 @@ - (不明) - なし - - - この場所には、Webコンテンツが含まれています。 - Web コンテンツを表示する - - - - この場所には、ムービーがあります。 - ムービーを再生する - - - - この場所には、画像があります - この場所の画像を表示する - - - - この場所には、オーディオがあります。 - この場所のオーディオを再生する - - - - この場所には、メディアがありません。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + (不明) + + + なし + + + + + この場所には、Webコンテンツが含まれています。 + + + Web コンテンツを表示する + + + + + + この場所には、ムービーがあります。 + + + ムービーを再生する + + + + + + この場所には、画像があります + + + この場所の画像を表示する + + + + + + この場所には、オーディオがあります。 + + + この場所のオーディオを再生する + + + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml index 61574b74f9..3bc18c65b0 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -1,131 +1,231 @@ - (不明) - なし - - - この場所には、Webコンテンツが含まれています。 - Web コンテンツを表示する - - - - この場所には、ムービーがあります。 - ムービーを再生する - - - - この場所には、画像があります - この場所の画像を表示する - - - - この場所には、オーディオがあります。 - この場所のオーディオを再生する - - - - この場所には、メディアがありません。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + (不明) + + + なし + + + + + この場所には、Webコンテンツが含まれています。 + + + Web コンテンツを表示する + + + + + + この場所には、ムービーがあります。 + + + ムービーを再生する + + + + + + この場所には、画像があります + + + この場所の画像を表示する + + + + + + この場所には、オーディオがあります。 + + + この場所のオーディオを再生する + + + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml index 0bfc9aeb99..a76394703b 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -1,134 +1,236 @@ - (不明) - なし - - - この場所には、Webコンテンツが含まれています。 - Web コンテンツを表示する - - - - この場所には、ムービーがあります。 - ムービーを再生する - - - - この場所には、画像があります - この場所の画像を表示する - - - - この場所には、オーディオがあります。 - この場所のオーディオを再生する - - - - この場所には、メディアがありません。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + (不明) + + + なし + + + + + この場所には、Webコンテンツが含まれています。 + + + Web コンテンツを表示する + + + + + + この場所には、ムービーがあります。 + + + ムービーを再生する + + + + + + この場所には、画像があります + + + この場所の画像を表示する + + + + + + この場所には、オーディオがあります。 + + + この場所のオーディオを再生する + + + + + + この場所には、メディアがありません。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 31c54b58e8..123e95df04 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -1,1639 +1,2188 @@ - 次回からこのメッセージを表示しない - - 次回からこのメッセージを表示しない -(現セッションで) - - 常にこのオプションを選択 - - 閉じる - - - - - - - - - - - - - - - - 現在使用中の[APP_NAME]のバージョンでは、受け取った通知メッセージを表示することができません。 + + 次回からこのメッセージを表示しない + + + 次回からこのメッセージを表示しない +(現セッションで) + + + 常にこのオプションを選択 + + + 閉じる + + + + + + + + + 現在使用中の[APP_NAME]のバージョンでは、受け取った通知メッセージを表示することができません。 最新のビューアーがインストールされている事をご確認ください。 エラー詳細:「 [_NAME] 」という通知メッセージは、notifications.xmlに定義されていませんでした。 - fail - - - - フローターエラー:以下のコントロールが見つかりませんでした: + + fail + + + + フローターエラー:以下のコントロールが見つかりませんでした: [CONTROLS] - fail - - - - 現在利用可能なチュートリアルはありません。 - fail - - - - [MESSAGE] - - [MESSAGE] - - - - [MESSAGE] - - - - [APP_NAME]のアップデート中にエラーが発生しました。[http://get.secondlife.com 最新バージョンのビューアーをダウンロード]してください。 - - - - [SECOND_LIFE_GRID]に接続できませんでした。 + + fail + + + + 現在利用可能なチュートリアルはありません。 + + fail + + + + + [MESSAGE] + + [MESSAGE] + + + [MESSAGE] + + + [APP_NAME]のアップデート中にエラーが発生しました。[http://get.secondlife.com 最新バージョンのビューアーをダウンロード]してください。 + + + [SECOND_LIFE_GRID]に接続できませんでした。 [DIAGNOSTIC] インターネット接続が正常かご確認ください。 - fail - - - - ビューアがサーバーから不正な形式の応答を受け取りました。インターネット接続が正常に機能していることを確認してから、後でもう一度お試しください。 + + fail + + + + ビューアがサーバーから不正な形式の応答を受け取りました。インターネット接続が正常に機能していることを確認してから、後でもう一度お試しください。 これが誤りだと思われる場合は、サポートにお問い合わせください。 - fail + + fail + + + + メッセージテンプレート[PATH]がありませんでした。 - - - メッセージテンプレート[PATH]がありませんでした。 - - fail - - - 現在の服装/身体部位の変更を保存しますか? - - - - これらのアイテムの1つ以上を販売用の送信トレイにコピーする権限がありません。移動したり残したままにすることはできます。 - - - - 販売ボックスの最上位に転送した各アイテムにつき、それぞれ1つの新しいフォルダが作成されました。 - - - - - 成功しました。 + + fail + + + 現在の服装/身体部位の変更を保存しますか? + + + これらのアイテムの1つ以上を販売用の送信トレイにコピーする権限がありません。移動したり残したままにすることはできます。 + + + 販売ボックスの最上位に転送した各アイテムにつき、それぞれ1つの新しいフォルダが作成されました。 + + + + 成功しました。 すべてのフォルダが、マーケットプレイスに正常に送信されました。 - - - - 一部のフォルダは送信できていません。 + + + 一部のフォルダは送信できていません。 一部のフォルダが、マーケットプレイスに送信されるときにエラーが発生しました。これらのフォルダは、販売者の送信トレイにまだ残っています。 詳細につきましては、[[MARKETPLACE_IMPORTS_URL] エラーログ]をご確認ください。 - - - 以下のエラーで転送できませんでした:[ERROR_CODE] + + + 以下のエラーで転送できませんでした:[ERROR_CODE] システムまたはネットワークのエラーのため、フォルダはマーケットプレイスに送信されませんでした。お手数ですが、後でもう一度やり直してください。 - - - - 以下のエラーでマーケットプレイスを初期化できませんでした:[ERROR_CODE] + + + 以下のエラーでマーケットプレイスを初期化できませんでした:[ERROR_CODE] システムまたはネットワークのエラーのため、マーケットプレイスの初期化に失敗しました。お手数ですが、後でもう一度やり直してください。 - - - - 在庫フォルダへのコピーまたは移動がエラーにより失敗しました:[ERROR_CODE] - - - マーケットプレイスのリストへのコピーまたは移動が以下のエラーにより失敗しました:[ERROR_CODE] - - - マーケットプレイスによる取引が以下のエラーにより失敗しました:[ERROR_REASON] + + + 在庫フォルダへのコピーまたは移動がエラーにより失敗しました:[ERROR_CODE] + + + マーケットプレイスのリストへのコピーまたは移動が以下のエラーにより失敗しました:[ERROR_CODE] + + + マーケットプレイスによる取引が以下のエラーにより失敗しました:[ERROR_REASON] [ERROR_DESCRIPTION] - - - この商品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。 + + + この商品をリストに表示できないか、バージョンフォルダを有効にできません。通常、これはリスト説明フォームに情報が不足しているために起こりますが、フォルダ構造のエラーが原因の場合もあります。 リストを編集するか、リストフォルダにエラーがないか確認してください。 - - - マーケットプレイスへのリスト表示が次のエラーで失敗しました: + + + マーケットプレイスへのリスト表示が次のエラーで失敗しました: '[ERROR_CODE]' - - - このバージョンフォルダの有効化が次のエラーにより失敗しました: + + + このバージョンフォルダの有効化が次のエラーにより失敗しました: '[ERROR_CODE]' - - - リストを作成するために、リストするコンテンツの階層を固定しました。 - confirm - - - この操作により、このリストの有効な内容が変更されます。続けてもよろしいですか? - confirm - - - マーケットプレイスのリストウィンドウにドラッグしたアイテムは、元の場所からコピーされるのではなく移動となります。続けてもよろしいですか? - confirm - - - リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けてもよろしいですか? - confirm - - - これらのアイテムの1つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、残したままにすることはできます。 - confirm - - - この操作により、このリストが削除されます。続けてもよろしいですか? - confirm - - - この操作により、現在のリストのバージョンフォルダが無効になります。続けてもよろしいですか? - confirm - - - このリストをアップデートできませんでした。 + + + リストを作成するために、リストするコンテンツの階層を固定しました。 + + confirm + + + + この操作により、このリストの有効な内容が変更されます。続けてもよろしいですか? + + confirm + + + + マーケットプレイスのリストウィンドウにドラッグしたアイテムは、元の場所からコピーされるのではなく移動となります。続けてもよろしいですか? + + confirm + + + + リストフォルダを移動または削除すると、マーケットプレイスのリストが削除されます。マーケットプレイスのリストを維持する場合は、変更するバージョンフォルダの中身を移動または削除してください。続けてもよろしいですか? + + confirm + + + + これらのアイテムの1つまたは複数をマーケットプレイスにコピーする権限がありません。移動するか、残したままにすることはできます。 + + confirm + + + + この操作により、このリストが削除されます。続けてもよろしいですか? + + confirm + + + + この操作により、現在のリストのバージョンフォルダが無効になります。続けてもよろしいですか? + + confirm + + + + このリストをアップデートできませんでした。 [[URL] ここをクリック]してマーケットプレイスで編集します。 - - - マーケットプレイスのリストフォルダにある衣服装やボディパーツを着用できません。 - fail - - リストIDが無効です。 - fail - - このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 - confirm - - - 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 - confirm - - - 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 - confirm - - - バージョンフォルダが空のため、リストを削除しました。もう一度リストを表示するには、バージョンフォルダにアイテムを追加する必要があります。 - confirm - - - アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 - fail - - 以下の理由で、オークションのスナップショットのアップロード時に問題が起こりました:[REASON] - fail - - 一度に複数のアイテムの中身を表示できません。 + + + マーケットプレイスのリストフォルダにある衣服装やボディパーツを着用できません。 + + fail + + + リストIDが無効です。 + + fail + + + このリストには複数のバージョンフォルダがあるか、バージョンフォルダがありません。後で、単独でバージョンフォルダを選択して有効にする必要があります。 + + confirm + + + + 各種の在庫品目を別々の在庫フォルダに分けたため、フォルダはリストに表示できるように配置されています。 + + confirm + + + + 在庫が空のため、リストを削除しました。もう一度リストを表示するには、在庫フォルダにユニットを追加する必要があります。 + + confirm + + + + バージョンフォルダが空のため、リストを削除しました。もう一度リストを表示するには、バージョンフォルダにアイテムを追加する必要があります。 + + confirm + + + + アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 + + fail + + + 以下の理由で、オークションのスナップショットのアップロード時に問題が起こりました:[REASON] + + fail + + + 一度に複数のアイテムの中身を表示できません。 アイテムを1つだけ選択して、もう一度お試しください。 - fail - - 服装、身体部位に対する変更をすべて保存しますか? - confirm - - - フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 - - - 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 - - - Second Lifeビューアーの多重起動はサポートされていません。 + + fail + + + 服装、身体部位に対する変更をすべて保存しますか? + + confirm + + + + フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 + + + 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 + + + Second Lifeビューアーの多重起動はサポートされていません。 テクスチャキャッシュの競合による破損や、およびビジュアルとパフォーマンスの低下につながる恐れがあります。 - - - 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 + + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 [NAME]に修正権限を与えますか? - - - 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更することができます。 + + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有する、インワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。選択した住人に修正権限を与えますか? - confirm - - - [NAME]の修正権限を解除しますか? - confirm - - - 選択した住人から変更権限を取り下げますか? - confirm - - - グループ名は[MIN_LEN]~[MAX_LEN]文字である必要があります。 - group - fail - - - グループを作成できません。 + + confirm + + + + [NAME]の修正権限を解除しますか? + + confirm + + + + 選択した住人から変更権限を取り下げますか? + + confirm + + + + グループ名は[MIN_LEN]~[MAX_LEN]文字である必要があります。 + + group + + + fail + + + + グループを作成できません。 [MESSAGE] - group - fail - - - [NEEDS_APPLY_MESSAGE] + + group + + + fail + + + + [NEEDS_APPLY_MESSAGE] [WANT_APPLY_MESSAGE] - group - fail - - - グループ通知の送信には、件名の記入が必要です。 - group - fail - - - あなたは、[ROLE_NAME]の役割にメンバーを与えようとしています。任命されたメンバーが自ら退任しない限り、 役柄から削除できません。 + + group + + + fail + + + + グループ通知の送信には、件名の記入が必要です。 + + group + + + fail + + + + あなたは、[ROLE_NAME]の役割にメンバーを与えようとしています。任命されたメンバーが自ら退任しない限り、 役柄から削除できません。 操作を続行しますか? - - - あなたは[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 + + + あなたは[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 *警告* この能力を持つ役割のメンバーは、 自分と他のメンバーに現在より強力な権限を割り当て、 自分をオーナーとほぼ同様の立場に任命することもできるようになります。 この行為の意味をよく理解してから実行してください。 この能力を [ROLE_NAME] に割り当てますか? - - - あなたは、[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 + + + あなたは、[ROLE_NAME]に[ACTION_NAME]の能力を与えようとしています。 *警告* この能力をもつ役割のメンバーは、自分と他のメンバーにすべての能力を割り当て、自分をオーナーとほぼ同様の立場に任命できます。 この能力を[ROLE_NAME] に割り当てますか? - - - 役割「[ROLE_NAME]」に能力「[ACTION_NAME]」を追加しようとしています。 + + + 役割「[ROLE_NAME]」に能力「[ACTION_NAME]」を追加しようとしています。 *警告* この能力を持つ役割のメンバーにも能力「[ACTION_NAME_2]」と「[ACTION_NAME_3]」が許可されます。 - - - 役割「[ROLE_NAME]」から能力「[ACTION_NAME]」を削除しようとしています。 + + + 役割「[ROLE_NAME]」から能力「[ACTION_NAME]」を削除しようとしています。 *警告* この能力を削除しても能力「[ACTION_NAME_2]」と「[ACTION_NAME_3]」は削除されません。 これらの能力をこの役割に許可しない場合は、すぐに削除してください! - - - [AVATAR_NAME]をグループから追放しようとしています。 - group - confirm - - - [COUNT]名のメンバーをグループから追放しようとしています。 - group - confirm - - - [AVATAR_NAME]をグループから追放しようとしています。 - group - confirm - - - [COUNT]名のメンバーをグループから追放しようとしています。 - group - confirm - - - 一部の住人がグループから追放されたため、招待状が送られませんでした。 - 装着物を下に置こうとしています。 + + + [AVATAR_NAME]をグループから追放しようとしています。 + + group + + + confirm + + + + [COUNT]名のメンバーをグループから追放しようとしています。 + + group + + + confirm + + + + [AVATAR_NAME]をグループから追放しようとしています。 + + group + + + confirm + + + + [COUNT]名のメンバーをグループから追放しようとしています。 + + group + + + confirm + + + + + 一部の住人がグループから追放されたため、招待状が送られませんでした。 + + 装着物を下に置こうとしています。 このまま続けてもよろしいですか? - - - このグループに参加するには、L$ [COST]かかります。 + + + このグループに参加するには、L$ [COST]かかります。 このまま続けてもよろしいですか? - confirm - funds - group - - - 「<nolink>[NAME]</nolink>」というグループに入ろうとしています。 + + confirm + + + funds + + + group + + + + 「<nolink>[NAME]</nolink>」というグループに入ろうとしています。 このまま続けてもよろしいですか? - group - confirm - - - このグループに加入するには、L$ [COST]必要です。 + + group + + + confirm + + + + このグループに加入するには、L$ [COST]必要です。 L$が不足しているので、このグループに参加することができません。 - group - fail - funds - - このグループ作成にかかる費用:L$ [COST] + + group + + + fail + + + funds + + + このグループ作成にかかる費用:L$ [COST] 一人ではグループにならないので、永久に削除されてしまいます。 48時間以内にメンバーを勧誘し、入会してもらってください。 - group - funds - - - あなたはグループに参加することはできません。 - group_id - success - - - グループ参加リクエスト中にエラーが発生しました。 - group_id - success - - - 以下のグループに参加できませんでした:[reason] - group_id - success - reason - - - 申し訳ありませんが、トライアルユーザーはグループに参加できません。 - group_id - success - - - 「<nolink>[group_name]</nolink>」に参加できません: + + group + + + funds + + + + あなたはグループに参加することはできません。 + + group_id + + + success + + + + グループ参加リクエスト中にエラーが発生しました。 + + group_id + + + success + + + + 以下のグループに参加できませんでした:[reason] + + group_id + + + success + + + reason + + + + 申し訳ありませんが、トライアルユーザーはグループに参加できません。 + + group_id + + + success + + + + 「<nolink>[group_name]</nolink>」に参加できません: 既に[group_count]個のグループのメンバーになっています。参加できるのは最大[max_groups]グループまでです。 - success - group_id - group_name - group_count - max_groups - - - 「<nolink>[group_name]</nolink>」に参加できません: + + success + + + group_id + + + group_name + + + group_count + + + max_groups + + + + 「<nolink>[group_name]</nolink>」に参加できません: このグループは現在、参加が制限されています。 - group_id - success - - - このユーザーグループに入会しました。 - group_id - success - - - 会員料金として必要なL$ [membership_fee]を送金することができません。 - group_id - success - - - この区画([PARCEL_NAME])は、L$ [COST]で[TIME]時間入ることができます。入場許可証を購入しますか? - fail - funds - confirm - - - 不特定の人に売却する場合には、売却価格はL$ 0以上に設定する必要があります。 + + group_id + + + success + + + + このユーザーグループに入会しました。 + + group_id + + + success + + + + 会員料金として必要なL$ [membership_fee]を送金することができません。 + + group_id + + + success + + + + この区画([PARCEL_NAME])は、L$ [COST]で[TIME]時間入ることができます。入場許可証を購入しますか? + + fail + + + funds + + + confirm + + + + 不特定の人に売却する場合には、売却価格はL$ 0以上に設定する必要があります。 売却価格をL$ 0に設定する場合は、売却する個人を選択してください。 - fail - - 選択した[LAND_SIZE]㎡の土地は、売り出し中に設定されています。 + + fail + + + 選択した[LAND_SIZE]㎡の土地は、売り出し中に設定されています。 売却価格L$ [SALE_PRICE]で、[NAME]に売却を認可します。 - confirm - - - 注意:「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず、[SECOND_LIFE]コミュニティ全体で利用可能となります。 + + confirm + + + + 注意:「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず、[SECOND_LIFE]コミュニティ全体で利用可能となります。 選択した[LAND_SIZE]㎡の土地は、販売対象に設定されました。 販売価格L$ [SALE_PRICE]で、[NAME]が販売対象者となります。 - confirm - - - グループ「<nolink>[NAME]</nolink>」と共有するこのにある区画のすべてのオブジェクトを前のオーナーのインベントリに返却しますか? + + confirm + + + + グループ「<nolink>[NAME]</nolink>」と共有するこのにある区画のすべてのオブジェクトを前のオーナーのインベントリに返却しますか? *警告* この操作をすると、グループに譲渡された譲渡禁止のオブジェクトを削除することになります。 オブジェクト:[N] - confirm - group - - - この区画で、住人[NAME]が所有する全てのオブジェクトを本人のインベントリに本当に返却してもよいですか? + + confirm + + + group + + + + この区画で、住人[NAME]が所有する全てのオブジェクトを本人のインベントリに本当に返却してもよいですか? オブジェクト:[N] - confirm - - - この土地区画内にある、あなたが所有するすべてのオブジェクトを、あなたのインベントリに戻そうとしています。このまま続けてもよろしいですか? + + confirm + + + + この土地区画内にある、あなたが所有するすべてのオブジェクトを、あなたのインベントリに戻そうとしています。このまま続けてもよろしいですか? オブジェクト:[N] - confirm - - - この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、それぞれの所有者のインベントリに戻そうとしています。このまま操作を続行してもよろしいですか? + + confirm + + + + この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、それぞれの所有者のインベントリに戻そうとしています。このまま操作を続行してもよろしいですか? グループに譲渡された「再販・譲渡可」のオブジェクトは、以前の所有者に返却されます。 *警告* これにより、グループに譲渡された「再販・譲渡不可」のオブジェクトは削除されます! オブジェクト:[N] - confirm - - - この土地区画内にある、[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。このまま操作を続行してもよろしいですか? + + confirm + + + + この土地区画内にある、[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。このまま操作を続行してもよろしいですか? グループに譲渡された「再販・譲渡可」のオブジェクトは、以前の所有者に返却されます。 *警告* これにより、グループに譲渡された「再販・譲渡不可」のオブジェクトは削除されます! オブジェクト:[N] - confirm - - - リストされた全てのオブジェクトを所有者のインベントリに戻しますか? + + confirm + + + + リストされた全てのオブジェクトを所有者のインベントリに戻しますか? これによりすべてのスクリプト化されたオブジェクトがリージョンに戻ります! - confirm - - - このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。このまま操作を続行してもよろしいですか? - confirm - - - グループ <nolink>[NAME]</nolink>と共有されていない、この区画にあるオブジェクトを前のオーナーに返却しますか? + + confirm + + + + このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。このまま操作を続行してもよろしいですか? + + confirm + + + + グループ <nolink>[NAME]</nolink>と共有されていない、この区画にあるオブジェクトを前のオーナーに返却しますか? オブジェクト:[N] - confirm - - - スクリプトを無効にできません。 + + confirm + + + + スクリプトを無効にできません。 このリージョン(地域)全体が「ダメージ有効」に設定されています。 武器を使用するには、スクリプトの実行を許可する必要があります。 - fail - - 現在複数の面が選択されています。 + + fail + + + 現在複数の面が選択されています。 このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。 メディアを1つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 - confirm - - - 着地点を設定するには、この区画の内側に立ってください。 - fail - - 受信者の有効なメールアドレスを入力してください。 - fail - - あなたのメールアドレスを入力してください。 - fail - - デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? - confirm - - - スナップショットデータの処理エラー - fail - - スナップショットのエンコードエラー - fail - - このアイテムをアップロードするには、L$ [COST]が必要です。 - fail - - インベントリに写真を保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 - fail - - インベントリにテクスチャを保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 - fail - - 以下の理由でスナップショットの送信時に問題が起こりました:[REASON] - fail - - 以下の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました:[REASON] - fail - - [SECOND_LIFE]へのログインを続けるには、Second Lifeの利用規約、プライバシーポリシー、およびサービス規約に同意する必要があります。 - fail - - アウトフィットを装着できません。 + + confirm + + + + 着地点を設定するには、この区画の内側に立ってください。 + + fail + + + 受信者の有効なメールアドレスを入力してください。 + + fail + + + あなたのメールアドレスを入力してください。 + + fail + + + デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? + + confirm + + + + スナップショットデータの処理エラー + + fail + + + スナップショットのエンコードエラー + + fail + + + このアイテムをアップロードするには、L$ [COST]が必要です。 + + fail + + + インベントリに写真を保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 + + fail + + + インベントリにテクスチャを保存するには、L$ [COST]が必要です。L$を購入するか、代わりに写真をコンピュータに保存できます。 + + fail + + + 以下の理由でスナップショットの送信時に問題が起こりました:[REASON] + + fail + + + 以下の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました:[REASON] + + fail + + + [SECOND_LIFE]へのログインを続けるには、Second Lifeの利用規約、プライバシーポリシー、およびサービス規約に同意する必要があります。 + + fail + + + アウトフィットを装着できません。 アウトフィットフォルダに服装、身体部位、装着物がありません。 - fail - - ごみ箱にある服装や身体部位は、着用できません。 - fail - - オブジェクトを装着できませんでした。 + + fail + + + ごみ箱にある服装や身体部位は、着用できません。 + + fail + + + オブジェクトを装着できませんでした。 最大装着数[MAX_ATTACHMENTS]個を越えています。どれか取り外してからお試しください。 - fail - - まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 - fail - - ログインするためにパスワードを入力してください。 - fail - - おっと、記入漏れがあります。 + + fail + + + まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 + + fail + + + ログインするためにパスワードを入力してください。 + + fail + + + おっと、記入漏れがあります。 アバターのユーザー名を入力してください。 [SECOND_LIFE]に入るにはアカウントが必要です。今すぐアカウントを作成しますか? - confirm - [create_account_url] - - - ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。 - fail - - 「[GRID]」は、有効なグリッドIDではありません。 - fail - - ログイン位置で有効なグリッドが指定されませんでした。 - fail - - クラシファイド広告『[NAME]』を削除してもよろしいですか? + + confirm + + + [create_account_url] + + + + ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。 + + fail + + + 「[GRID]」は、有効なグリッドIDではありません。 + + fail + + + ログイン位置で有効なグリッドが指定されませんでした。 + + fail + + + クラシファイド広告『[NAME]』を削除してもよろしいですか? 支払い済みの料金は返金されません。 - confirm - - - この顔に紐づけられたメディアの削除を選択しました。 + + confirm + + + + この顔に紐づけられたメディアの削除を選択しました。 続行してもよろしいですか? - confirm - - - クラシファイド広告[NAME]への変更を保存しますか? - confirm - - - クラシファイド広告を出すには、資金が足りません。 - fail - - - - クラシファイド広告<nolink>[CLASSIFIED]</nolink>を削除してもよろしいですか? - confirm - - - ピック<nolink>[PICK]</nolink>を削除してもよろしいですか? - confirm - - - 未公開のクラシファイド広告があります。 + + confirm + + + + クラシファイド広告[NAME]への変更を保存しますか? + + confirm + + + + クラシファイド広告を出すには、資金が足りません。 + + fail + + + + クラシファイド広告<nolink>[CLASSIFIED]</nolink>を削除してもよろしいですか? + + confirm + + + + ピック<nolink>[PICK]</nolink>を削除してもよろしいですか? + + confirm + + + + 未公開のクラシファイド広告があります。 ウィンドウを閉じると変更が失われます。 - confirm - - - 保存されていない変更があります。 - confirm - save - - - 「<nolink>[PICK]</nolink>」を削除してもよろしいですか? - - - このアウトフィットを削除してもよろしいですか? - confirm - - - [SECOND_LIFE]イベントWebページに移動しますか? - https://secondlife.com/my/community/events/?lang=ja-JP - confirm - - - 表示する提案を選択してください。 - fail - - 表示する履歴アイテムを選択してください。 - fail - - - - - キャッシュは、[APP_NAME]再起動後にクリアされます。 - キャッシュは、[APP_NAME]再起動後が移動されます。 -注意:キャッシュがクリアされます。 - ポートの設定は、[APP_NAME]再起動後に反映されます。 - デバッグ設定の変更は、[APP_NAME]再起動後に反映されます。 - 新しいスキンは、[APP_NAME]再起動後に表示されます。 - 言語の変更は、[APP_NAME]再起動後に反映されます。 - [SECOND_LIFE]のWebページに移動し、入札あるいはオークションの詳細を確認しますか? - confirm - http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]&lang=ja-JP - - - 変更を保存しますか? - confirm - - - このノートカードを削除してもよろしいですか? - - confirm - - - 以前のスクリーンショットをレポートに使用しますか? - - - ジェスチャーの保存に失敗しました。 + + confirm + + + + 保存されていない変更があります。 + + confirm + + + save + + + + 「<nolink>[PICK]</nolink>」を削除してもよろしいですか? + + + このアウトフィットを削除してもよろしいですか? + + confirm + + + + [SECOND_LIFE]イベントWebページに移動しますか? + + https://secondlife.com/my/community/events/?lang=ja-JP + + + confirm + + + + 表示する提案を選択してください。 + + fail + + + 表示する履歴アイテムを選択してください。 + + fail + + + + キャッシュは、[APP_NAME]再起動後にクリアされます。 + + + キャッシュは、[APP_NAME]再起動後が移動されます。 +注意:キャッシュがクリアされます。 + + + ポートの設定は、[APP_NAME]再起動後に反映されます。 + + + デバッグ設定の変更は、[APP_NAME]再起動後に反映されます。 + + + 新しいスキンは、[APP_NAME]再起動後に表示されます。 + + + 言語の変更は、[APP_NAME]再起動後に反映されます。 + + [SECOND_LIFE]のWebページに移動し、入札あるいはオークションの詳細を確認しますか? + + confirm + + + http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]&lang=ja-JP + + + + 変更を保存しますか? + + confirm + + + + このノートカードを削除してもよろしいですか? + + + confirm + + + + 以前のスクリーンショットをレポートに使用しますか? + + + ジェスチャーの保存に失敗しました。 ステップが多すぎます。 ステップをいくつか削除してから再保存してください - fail - - ジェスチャーの保存に失敗しました。 + + fail + + + ジェスチャーの保存に失敗しました。 少し待ってからもう一度試してください。 - fail - - ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 + + fail + + + ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 オブジェクトが範囲内に存在しないか、削除された可能性があります。 - fail - - 以下の理由で、ジェスチャーの保存時に問題が起こりました:[REASON] + + fail + + + 以下の理由で、ジェスチャーの保存時に問題が起こりました:[REASON] お手数ですが、後でもう一度試してください。 - fail - - ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 + + fail + + + ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 オブジェクトが範囲内に存在しないか、削除された可能性があります。 - fail - - 以下の理由で、ノートカードの保存時に問題が起こりました:[REASON] + + fail + + + 以下の理由で、ノートカードの保存時に問題が起こりました:[REASON] お手数ですが、後でもう一度試してください。 - fail - - あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。 + + fail + + + あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。 サーバーの最新保存バージョンをロードしますか? (**警告**:この操作後元に戻すことはできません) - confirm - - - スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。 + + confirm + + + + スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。 オブジェクトは範囲外か、または削除されているかもしれません。 - fail - - ログイン位置が指定されていません。 + + fail + + + ログイン位置が指定されていません。 ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。 - fail - - - スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。 + + fail + + + + スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。 オブジェクトが範囲内に存在しないか、または削除された可能性があります。 - fail - - ファイルをダウンロードできません。 - fail - - ダウンロードをリクエストしたファイルは、[SECOND_LIFE]でサポートされていません。 - - confirm - - - ファイル[[FILE]]に書き込むことができませんでした。 - fail - - お使いのコンピュータは、[APP_NAME]の最小システム要件を満たしていません。 + + fail + + + ファイルをダウンロードできません。 + + fail + + + ダウンロードをリクエストしたファイルは、[SECOND_LIFE]でサポートされていません。 + + + confirm + + + + ファイル[[FILE]]に書き込むことができませんでした。 + + fail + + + お使いのコンピュータは、[APP_NAME]の最小システム要件を満たしていません。 このためパフォーマンスが低下する場合があります。恐れ入りますが[SUPPORT_SITE]は、サポートされていないシステム構成に対する技術的サポートを提供できません。 詳細について、[_URL] を確認しますか? - https://secondlife.com/system-requirements?lang=ja - fail - - - グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 + + https://secondlife.com/system-requirements?lang=ja + + + fail + + + + グラフィックスチップに最新のドライバがある可能性があります。グラフィックドライバを更新することにより、大幅にパフォーマンスが向上します。 ドライバの更新を確認するために[URL] にアクセスしますか? - [URL] - confirm - fail - - - お使いのシステムには、[APP_NAME]が認識できないグラフィックカードが搭載されています。[APP_NAME]でまだテストされていない最新ハードウェアのためだと考えられます。 + + [URL] + + + confirm + + + fail + + + + お使いのシステムには、[APP_NAME]が認識できないグラフィックカードが搭載されています。[APP_NAME]でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。 (「私」>「初期設定」>「グラフィック」) - fail - - - - - グラフィックドライバを初期化中に[APP_NAME]がクラッシュしました。 + + fail + +
+ + +
+ グラフィックドライバを初期化中に[APP_NAME]がクラッシュしました。 ドライバの一般的なエラーを防ぐために、画質が低に設定されます。このため、一部のグラフィック特性に制限が出ます。 お使いのグラフィックカードのドライバをアップデートするようおすすめします。 画質は、「初期設定」>「グラフィック」で設定できます。 - fail - - この設定を変更すると、「自動調整」の設定が無効になります。 + + fail + + + この設定を変更すると、「自動調整」の設定が無効になります。 続けてもよろしいですか? - confirm - - - 高度な照明をオンにするには、品質をレベル4以上にする必要があります。 - confirm - - - 影を有効にするには、品質をレベルを4以上にする必要があります。 - confirm - - - [REGION]では、地形の変更ができません。 - fail - - [PARCEL]区画の地形を編集する権限がありません。 - fail - - 以下のアイテムをコピーする権限がありません: + + confirm + + + + 高度な照明をオンにするには、品質をレベル4以上にする必要があります。 + + confirm + + + + 影を有効にするには、品質をレベルを4以上にする必要があります。 + + confirm + + + + [REGION]では、地形の変更ができません。 + + fail + + + [PARCEL]区画の地形を編集する権限がありません。 + + fail + + + 以下のアイテムをコピーする権限がありません: <nolink>[ITEMS]</nolink> 他の人に譲ると、そのアイテムはあなたのインベントリから削除されます。本当にこれらのアイテムを譲ってもよろしいですか? - confirm - fail - - - インベントリのアイテムを渡すことができません。 - fail - - 取引がキャンセルされました。 - fail - - 一度に42個以上のアイテムを渡すことはできません。 - fail - - 選択したアイテムを渡す権限がありません。 - fail - - あなたは選択した[COUNT]個のアイテムをコピーする権限がありません。 + + confirm + + + fail + + + + インベントリのアイテムを渡すことができません。 + + fail + + + 取引がキャンセルされました。 + + fail + + + 一度に42個以上のアイテムを渡すことはできません。 + + fail + + + 選択したアイテムを渡す権限がありません。 + + fail + + + あなたは選択した[COUNT]個のアイテムをコピーする権限がありません。 これらのアイテムはあなたのインベントリから失われます。 本当にアイテムを渡してもよろしいですか? - confirm - fail - - - 選択したフォルダを渡す権限がありません。 - fail - - このアバターをフリーズしますか? + + confirm + + + fail + + + + 選択したフォルダを渡す権限がありません。 + + fail + + + このアバターをフリーズしますか? アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。 - confirm - - - [AVATAR_NAME]をフリーズしますか? + + confirm + + + + [AVATAR_NAME]をフリーズしますか? フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。 - confirm - - - あなたの土地から[AVATAR_NAME]を追放しますか? - confirm - - - このアバターをあなたの土地から追放しますか? - confirm - - - [AVATAR_NAME]をあなたの土地から追放しますか? - confirm - - - <nolink>[GROUP_NAME]</nolink>から[AVATAR_NAME]を追放しました。 - group - - 取得エラー:選択したオブジェクトの数が多すぎます。 - fail - - 取得エラー:オブジェクトが複数のリージョン(地域)にまたがって存在しています。 + + confirm + + + + あなたの土地から[AVATAR_NAME]を追放しますか? + + confirm + + + + このアバターをあなたの土地から追放しますか? + + confirm + + + + [AVATAR_NAME]をあなたの土地から追放しますか? + + confirm + + + + <nolink>[GROUP_NAME]</nolink>から[AVATAR_NAME]を追放しました。 + + group + + + 取得エラー:選択したオブジェクトの数が多すぎます。 + + fail + + + 取得エラー:オブジェクトが複数のリージョン(地域)にまたがって存在しています。 すべて同じリージョン内に移動させてから取得してください。 - fail - - [EXTRA] + + fail + + + [EXTRA] [_URL] に移動してリンデンドル購入に関する情報を確認しますか? - https://secondlife.com/my/lindex/?lang=ja-JP - - - [MUTE_LIMIT]エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 - fail - - [COUNT]個のオブジェクトをリンクできませんでした。 + + https://secondlife.com/my/lindex/?lang=ja-JP + + + + [MUTE_LIMIT]エントリの制限に達したため、ブロックリストに新しいエントリを追加できません。 + + fail + + + [COUNT]個のオブジェクトをリンクできませんでした。 リンクできるオブジェクトは最大[MAX]個です。 - fail - - セットが揃っているオブジェクトのみリンクできます。複数のオブジェクトを選択してください。 - fail - - すべてのオブジェクトの修正許可がないためリンクできません。 + + fail + + + セットが揃っているオブジェクトのみリンクできます。複数のオブジェクトを選択してください。 + + fail + + + すべてのオブジェクトの修正許可がないためリンクできません。 どのオブジェクトもロックされておらず、あなたのものであることを確認してください。 - fail - - リージョン(地域)の境界を越えてオブジェクトをリンクできません。 - fail - - リージョン(地域)の境界を越えてオブジェクトをリンクできません。 - fail - - 所有者が異なるため、オブジェクトをリンクできません。 + + fail + + + リージョン(地域)の境界を越えてオブジェクトをリンクできません。 + + fail + + + リージョン(地域)の境界を越えてオブジェクトをリンクできません。 + + fail + + + 所有者が異なるため、オブジェクトをリンクできません。 自分が所有しているオブジェクトだけを選択してください。 - fail - - ファイル「[FILE]」は、無効な拡張子です。 - -このファイルの拡張子が正しいかどうかを確認してください。 - 「[EXTENSION]」は、無効な拡張子です。 + + fail + + + + ファイル「[FILE]」は、無効な拡張子です。 + +このファイルの拡張子が正しいかどうかを確認してください。 + + 「[EXTENSION]」は、無効な拡張子です。 有効な拡張子:[VALIDS] - fail - - - 読み込みのためにアップロードされたサウンドファイルを開けません: + + fail + + + + 読み込みのためにアップロードされたサウンドファイルを開けません: [FILE] - fail - - RIFF WAVEファイルとして認識されません: + + fail + + + RIFF WAVEファイルとして認識されません: [FILE] - fail - - PCM WAVEオーディオファイルとして認識されません: + + fail + + + PCM WAVEオーディオファイルとして認識されません: [FILE] - fail - - このファイルのチャンネル数は無効です(モノラルか、ステレオである必要があります): + + fail + + + このファイルのチャンネル数は無効です(モノラルか、ステレオである必要があります): [FILE] - fail - - このファイルのサンプリングレートはサポートされていません(44.1kである必要があります): + + fail + + + このファイルのサンプリングレートはサポートされていません(44.1kである必要があります): [FILE] - fail - - このファイルのビットサイズはサポートされていません(8bitか、16bitである必要があります): + + fail + + + このファイルのビットサイズはサポートされていません(8bitか、16bitである必要があります): [FILE] - fail - - WAVヘッダーにデータチャンクが見つかりません: + + fail + + + WAVヘッダーにデータチャンクが見つかりません: [FILE] - fail - - WAVファイルのチャンクサイズが間違っています: + + fail + + + WAVファイルのチャンクサイズが間違っています: [FILE] - fail - - オーディオファイルが長すぎます。(最大10秒): + + fail + + + オーディオファイルが長すぎます。(最大10秒): [FILE] - fail - - 「[FILE]」に問題があります。 + + fail + + + 「[FILE]」に問題があります。 [ERROR] - fail - - 書き込み用の一時圧縮サウンドファイルを開くことができません: + + fail + + + 書き込み用の一時圧縮サウンドファイルを開くことができません: [FILE] - fail - - 不明なVorbisのエンコードに失敗しました: + + fail + + + 不明なVorbisのエンコードに失敗しました: [FILE] - fail - - 次のファイルのエンコードができません: + + fail + + + 次のファイルのエンコードができません: [FILE] - fail - - ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります - fail - - - 破損したリソースファイル: + + fail + + + ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります + + fail + + + + 破損したリソースファイル: [FILE] - fail - - 不明なLindenリソースファイルのバージョンです: + + fail + + + 不明なLindenリソースファイルのバージョンです: [FILE] - fail - - 出力ファイルを作成できません: + + fail + + + 出力ファイルを作成できません: [FILE] - fail - - 現在[APP_NAME]では、BVH形式のアニメーションファイルの一括アップロードはサポートされていません。 - fail - - 以下の理由で「[FILE]」をアップロードできませんでした: + + fail + + + 現在[APP_NAME]では、BVH形式のアニメーションファイルの一括アップロードはサポートされていません。 + + fail + + + 以下の理由で「[FILE]」をアップロードできませんでした: [REASON] お手数ですがもう一度やり直してください。 - fail - - 「[LANDMARK_NAME]」を「[FOLDER_NAME]」フォルダに追加しました。 - この場所のランドマークは、既に持っています。 - fail - - - - + + fail + + + + 「[LANDMARK_NAME]」を「[FOLDER_NAME]」フォルダに追加しました。 + + この場所のランドマークは、既に持っています。 + + fail + + + + + フォルダ名を入力してください: - confirm -
- + + confirm + + + -
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml index 098128bb6d..94766ee8fa 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml @@ -1,12 +1,12 @@ - - - - - - - - - - - - 名前タグ: - - - - - - - \ No newline at end of file + + + + + 名前タグ: + + + + + + + diff --git a/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml b/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml index f5f1bc1b03..a031cd7176 100644 --- a/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml +++ b/indra/newview/skins/default/xui/ja/panel_performance_preferences.xml @@ -1,66 +1,120 @@ -