diff --git a/.hgtags b/.hgtags index a19c9d259c7211b0a51594d5db6c20d857eae3d0..94fb03070c2e5fef8d2dd3d58e9227a26b49811f 100755 --- a/.hgtags +++ b/.hgtags @@ -505,3 +505,4 @@ d07f76c5b9860fb87924d00ca729f7d4532534d6 3.7.29-release 67edc442c80b8d2fadd2a6c4a7184b469906cdbf 3.7.30-release 797ed69e6134ef48bb922577ab2540fb2d964668 3.8.0-release 3f61ed662347dc7c6941b8266e72746a66d90e2a 3.8.1-release +3a62616f3dd8bd512fcdfd29ef033b2505b11213 3.8.2-release diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h index 5a95a58d93db4f43054e507e2020c8ae2e7569e4..3a4b5dad18cfaae843090ed95809a4921a7b4de7 100755 --- a/indra/llcommon/llassettype.h +++ b/indra/llcommon/llassettype.h @@ -107,6 +107,9 @@ class LL_COMMON_API LLAssetType AT_LINK_FOLDER = 25, // Inventory folder link + AT_MARKETPLACE_FOLDER = 26, + // Marketplace folder. Same as an AT_CATEGORY but different display methods. + AT_WIDGET = 40, // UI Widget: this is *not* an inventory asset type, only a viewer side asset (e.g. button, other ui items...) diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp index 23bf6da1f9367df9e364b68ef89fb14a0f24685f..86aca77de894f8a4f49a1c3e34d5f6328d900185 100755 --- a/indra/llinventory/llfoldertype.cpp +++ b/indra/llinventory/llfoldertype.cpp @@ -96,6 +96,10 @@ LLFolderDictionary::LLFolderDictionary() addEntry(LLFolderType::FT_OUTBOX, new FolderEntry("outbox", TRUE)); addEntry(LLFolderType::FT_BASIC_ROOT, new FolderEntry("basic_rt", TRUE)); + + addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new FolderEntry("merchant", FALSE)); + addEntry(LLFolderType::FT_MARKETPLACE_STOCK, new FolderEntry("stock", FALSE)); + addEntry(LLFolderType::FT_MARKETPLACE_VERSION, new FolderEntry("version", FALSE)); addEntry(LLFolderType::FT_NONE, new FolderEntry("-1", FALSE)); }; diff --git a/indra/llinventory/llfoldertype.h b/indra/llinventory/llfoldertype.h old mode 100755 new mode 100644 index a0c847914f048c717ba90f05399f5f6ea308a06d..515bb05a3f10e343251a1336b92a7dadc2084a0d --- a/indra/llinventory/llfoldertype.h +++ b/indra/llinventory/llfoldertype.h @@ -87,6 +87,10 @@ class LL_COMMON_API LLFolderType FT_BASIC_ROOT = 52, + FT_MARKETPLACE_LISTINGS = 53, + FT_MARKETPLACE_STOCK = 54, + FT_MARKETPLACE_VERSION = 55, // Note: We actually *never* create folders with that type. This is used for icon override only. + FT_COUNT, FT_NONE = -1 diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index 7f70e6a3f51dec7931b70c137cf810ec3eca8637..b149d24c4b3c73ed5665cc2b0772db252bc33ccf 100755 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -576,6 +576,17 @@ void LLHTTPClient::patch( request(url, HTTP_PATCH, new LLSDInjector(body), responder, timeout, headers); } +void LLHTTPClient::putRaw( + const std::string& url, + const U8* data, + S32 size, + ResponderPtr responder, + const LLSD& headers, + const F32 timeout) +{ + request(url, HTTP_PUT, new RawInjector(data, size), responder, timeout, headers); +} + void LLHTTPClient::post( const std::string& url, const LLSD& body, diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h index b18258fd7bc17d84b1a1492df2141bea94948ece..fd48b4a743e3f4523d72488b0f5b91d7e89af326 100755 --- a/indra/llmessage/llhttpclient.h +++ b/indra/llmessage/llhttpclient.h @@ -79,6 +79,14 @@ class LLHTTPClient ResponderPtr, const LLSD& headers = LLSD(), const F32 timeout=HTTP_REQUEST_EXPIRY_SECS); + static void putRaw( + const std::string& url, + const U8* data, + S32 size, + ResponderPtr responder, + const LLSD& headers = LLSD(), + const F32 timeout=HTTP_REQUEST_EXPIRY_SECS); + static void patch( const std::string& url, diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp index 74ef8dd0c37919b890bf0366693a3071dba5efc2..3e159365e5d0fcea0999b2a6397dd4c1ae97a69a 100755 --- a/indra/llui/llcommandmanager.cpp +++ b/indra/llui/llcommandmanager.cpp @@ -131,6 +131,25 @@ LLCommand * LLCommandManager::getCommand(const LLCommandId& commandId) return command_match; } +LLCommand * LLCommandManager::getCommand(const std::string& name) +{ + LLCommand * command_match = NULL; + + CommandVector::const_iterator it = mCommands.begin(); + + while (it != mCommands.end()) + { + if ((*it)->name() == name) + { + command_match = *it; + break; + } + it++; + } + + return command_match; +} + void LLCommandManager::addCommand(LLCommand * command) { LLCommandId command_id = command->id(); diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h index ff5a8a325738b1c9a511cbd3df93b96683c357ca..f2f2145953c3f35820dbb6f2f6146fc69c39922a 100755 --- a/indra/llui/llcommandmanager.h +++ b/indra/llui/llcommandmanager.h @@ -190,6 +190,7 @@ class LLCommandManager U32 commandCount() const; LLCommand * getCommand(U32 commandIndex); LLCommand * getCommand(const LLCommandId& commandId); + LLCommand * getCommand(const std::string& name); static bool load(); diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index 4c05d001a07c681de4f7c8ef8a0810718ca4098a..3282c5f726967d60ae9111c8b376f5b512dfd80c 100755 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -730,7 +730,7 @@ void LLFolderView::removeSelectedItems() // structures. std::vector<LLFolderViewItem*> items; S32 count = mSelectedItems.size(); - if(count == 0) return; + if(count <= 0) return; LLFolderViewItem* item = NULL; selected_items_t::iterator item_it; for (item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it) @@ -947,7 +947,6 @@ void LLFolderView::cut() if (listener) { listener->cutToClipboard(); - listener->removeItem(); } } diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 747b472ac2718ec3a0f1d02014497d40a72e6dfb..81a0204bc5462fb98be5f1ea8067ce0bd80f850e 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -104,7 +104,8 @@ LLFolderViewItem::Params::Params() item_height("item_height"), item_top_pad("item_top_pad"), creation_date(), - allow_open("allow_open", true), + allow_wear("allow_wear", true), + allow_drop("allow_drop", true), font_color("font_color"), font_highlight_color("font_highlight_color"), left_pad("left_pad", 0), @@ -137,7 +138,8 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p) mRoot(p.root), mViewModelItem(p.listener), mIsMouseOverTitle(false), - mAllowOpen(p.allow_open), + mAllowWear(p.allow_wear), + mAllowDrop(p.allow_drop), mFontColor(p.font_color), mFontHighlightColor(p.font_highlight_color), mLeftPad(p.left_pad), @@ -471,7 +473,7 @@ void LLFolderViewItem::buildContextMenu(LLMenuGL& menu, U32 flags) void LLFolderViewItem::openItem( void ) { - if (mAllowOpen) + if (mAllowWear || !getViewModelItem()->isItemWearable()) { getViewModelItem()->openItem(); } @@ -1337,7 +1339,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo { return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1356,7 +1358,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1378,7 +1380,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1397,7 +1399,7 @@ void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFo return; } - if (selecting) + if (selecting && (*it)->getVisible()) { items.push_back(*it); } @@ -1494,12 +1496,14 @@ void LLFolderViewFolder::destroyView() while (!mItems.empty()) { LLFolderViewItem *itemp = mItems.back(); + mItems.pop_back(); itemp->destroyView(); // LLFolderViewItem::destroyView() removes entry from mItems } while (!mFolders.empty()) { LLFolderViewFolder *folderp = mFolders.back(); + mFolders.pop_back(); folderp->destroyView(); // LLFolderVievFolder::destroyView() removes entry from mFolders } @@ -1797,9 +1801,16 @@ BOOL LLFolderViewFolder::handleDragAndDropToThisFolder(MASK mask, EAcceptance* accept, std::string& tooltip_msg) { + if (!mAllowDrop) + { + *accept = ACCEPT_NO; + tooltip_msg = LLTrans::getString("TooltipOutboxCannotDropOnRoot"); + return TRUE; + } + BOOL accepted = getViewModelItem()->dragOrDrop(mask,drop,cargo_type,cargo_data, tooltip_msg); - - if (accepted) + + if (accepted) { mDragAndDropTarget = TRUE; *accept = ACCEPT_YES_MULTI; diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index 5ad5731cadf8b289e563597b53b98f18f6ddebaf..ed4496cfaa43d4614eb01def6e0828fef7deb3e3 100755 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -59,7 +59,8 @@ class LLFolderViewItem : public LLView item_top_pad; Optional<time_t> creation_date; - Optional<bool> allow_open; + Optional<bool> allow_wear; + Optional<bool> allow_drop; Optional<LLUIColor> font_color; Optional<LLUIColor> font_highlight_color; @@ -117,7 +118,8 @@ class LLFolderViewItem : public LLView mIsCurSelection, mDragAndDropTarget, mIsMouseOverTitle, - mAllowOpen, + mAllowWear, + mAllowDrop, mSelectPending; LLUIColor mFontColor; diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h index f6550eae428da9d815c818f94a9b10d2adc1fca4..d60e36183bc162db7a1deb1484c860acd31f8576 100755 --- a/indra/llui/llfolderviewmodel.h +++ b/indra/llui/llfolderviewmodel.h @@ -156,6 +156,8 @@ class LLFolderViewModelItem : public LLRefCount, public LLTrace::MemTrackable<LL virtual void openItem( void ) = 0; virtual void closeItem( void ) = 0; virtual void selectItem(void) = 0; + + virtual BOOL isItemWearable() const { return FALSE; } virtual BOOL isItemRenameable() const = 0; virtual BOOL renameItem(const std::string& new_name) = 0; @@ -169,7 +171,7 @@ class LLFolderViewModelItem : public LLRefCount, public LLTrace::MemTrackable<LL virtual BOOL isItemCopyable() const = 0; virtual BOOL copyToClipboard() const = 0; - virtual BOOL cutToClipboard() const = 0; + virtual BOOL cutToClipboard() = 0; virtual BOOL isClipboardPasteable() const = 0; virtual void pasteFromClipboard() = 0; diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index fd4f9f7f45fb0c95bbd521aa46d25c2931da7aa2..4a91969bb70eda1a46cf40836bce18de05536d6e 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -263,6 +263,7 @@ set(viewer_SOURCE_FILES llfloaterlagmeter.cpp llfloaterland.cpp llfloaterlandholdings.cpp + llfloatermarketplacelistings.cpp llfloatermap.cpp llfloatermediasettings.cpp llfloatermemleak.cpp @@ -877,6 +878,7 @@ set(viewer_HEADER_FILES llfloaterland.h llfloaterlandholdings.h llfloatermap.h + llfloatermarketplacelistings.h llfloatermediasettings.h llfloatermemleak.h llfloatermodelpreview.h diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index a08ffae0caee5838d948ba0de742f5f768312c2a..269aa9c86de7dc77e2318c699297b92342c63779 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.8.2 +3.8.3 diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index 7b329e2092a0fc7dbc1b318d3145fd325fd2d3b2..2cd6638042ec2b0b54c8ec5721aaf34bcda6375c 100755 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -118,6 +118,18 @@ tooltip_ref="Command_Marketplace_Tooltip" execute_function="Avatar.OpenMarketplace" /> + <command name="marketplacelistings" + available_in_toybox="true" + icon="Command_MktListings_Icon" + label_ref="Command_MarketplaceListings_Label" + tooltip_ref="Command_MarketplaceListings_Tooltip" + execute_function="Marketplace.Toggle" + execute_parameters="marketplace" + is_enabled_function="Marketplace.Enabled" + is_enabled_parameters="marketplace" + is_running_function="Floater.IsOpen" + is_running_parameters="marketplace_listings" + /> <command name="minimap" available_in_toybox="true" icon="Command_MiniMap_Icon" diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b4a4e41884d4c90c1e1d7ae6f26647c826c7fa79..0d280f30b42bd34127021d00418eec5b3c0cfa15 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4691,17 +4691,6 @@ <key>Value</key> <integer>0</integer> </map> - <key>InventoryDisplayOutbox</key> - <map> - <key>Comment</key> - <string>Override merchant inventory outbox display</string> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>InventoryInboxToggleState</key> <map> <key>Comment</key> @@ -4724,6 +4713,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>InventoryOutboxDisplayBoth</key> + <map> + <key>Comment</key> + <string>Show the legacy Merchant Outbox UI as well as the Marketplace Listings UI</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>InventoryOutboxLogging</key> <map> <key>Comment</key> @@ -4755,7 +4755,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <integer>21</integer> + <integer>20</integer> </map> <key>InventoryOutboxMaxFolderDepth</key> <map> @@ -4779,6 +4779,17 @@ <key>Value</key> <integer>200</integer> </map> + <key>InventoryOutboxMaxStockItemCount</key> + <map> + <key>Comment</key> + <string>Maximum number of items allowed in a stock folder.</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>200</integer> + </map> <key>InventorySortOrder</key> <map> <key>Comment</key> @@ -4790,6 +4801,17 @@ <key>Value</key> <integer>7</integer> </map> + <key>MarketplaceListingsSortOrder</key> + <map> + <key>Comment</key> + <string>Specifies sort for marketplace listings</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>2</integer> + </map> <key>InvertMouse</key> <map> <key>Comment</key> @@ -5639,6 +5661,17 @@ <key>Value</key> <string /> </map> + <key>MarketplaceListingsLogging</key> + <map> + <key>Comment</key> + <string>Enable debug output associated with the Marketplace Listings (SLM) API.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MarketplaceURL</key> <map> <key>Comment</key> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 2060065c75e1065556073bcabce7fba0f6533aeb..7147769c43ce9a099f6f02bd33eaa4d783896fa8 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3850,6 +3850,12 @@ void LLAgent::handleTeleportFinished() LLNotificationsUtil::add("PreferredMaturityChanged", args); mIsMaturityRatingChangingDuringTeleport = false; } + + // Init SLM Marketplace connection so we know which UI should be used for the user as a merchant + // Note: Eventually, all merchant will be migrated to the new SLM system and there will be no reason to show the old UI at all. + // Note: Some regions will not support the SLM cap for a while so we need to do that check for each teleport. + // *TODO : Suppress that line from here once the whole grid migrated to SLM and move it to idle_startup() (llstartup.cpp) + check_merchant_status(); } void LLAgent::handleTeleportFailed() diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h index deff94ea1630ccd74837069dc45ca9c59680b8c6..af7b50802cd34df0b463dd93a797e8eb8488f4e9 100644 --- a/indra/newview/llconversationmodel.h +++ b/indra/newview/llconversationmodel.h @@ -86,7 +86,7 @@ class LLConversationItem : public LLFolderViewModelItemCommon virtual void move( LLFolderViewModelItem* parent_listener ) { } virtual BOOL isItemCopyable() const { return FALSE; } virtual BOOL copyToClipboard() const { return FALSE; } - virtual BOOL cutToClipboard() const { return FALSE; } + virtual BOOL cutToClipboard() { return FALSE; } virtual BOOL isClipboardPasteable() const { return FALSE; } virtual void pasteFromClipboard() { } virtual void pasteLinkFromClipboard() { } diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp new file mode 100755 index 0000000000000000000000000000000000000000..b2d36479cd0929c1c894a91440c63e10ccf5b165 --- /dev/null +++ b/indra/newview/llfloatermarketplacelistings.cpp @@ -0,0 +1,949 @@ +/** + * @file llfloatermarketplacelistings.cpp + * @brief Implementation of the marketplace listings floater and panels + * @author merov@lindenlab.com + * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloatermarketplacelistings.h" + +#include "llfloaterreg.h" +#include "llfiltereditor.h" +#include "llfolderview.h" +#include "llinventorybridge.h" +#include "llinventorymodelbackgroundfetch.h" +#include "llinventoryobserver.h" +#include "llinventoryfunctions.h" +#include "llmarketplacefunctions.h" +#include "llnotificationhandler.h" +#include "llnotificationmanager.h" +#include "llnotificationsutil.h" +#include "llsidepaneliteminfo.h" +#include "lltextbox.h" +#include "lltrans.h" + +///---------------------------------------------------------------------------- +/// LLPanelMarketplaceListings +///---------------------------------------------------------------------------- + +static LLPanelInjector<LLPanelMarketplaceListings> t_panel_status("llpanelmarketplacelistings"); + +LLPanelMarketplaceListings::LLPanelMarketplaceListings() +: mRootFolder(NULL) +, mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME) +, mFilterListingFoldersOnly(false) +{ + mCommitCallbackRegistrar.add("Marketplace.ViewSort.Action", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemClicked, this, _2)); + mEnableCallbackRegistrar.add("Marketplace.ViewSort.CheckItem", boost::bind(&LLPanelMarketplaceListings::onViewSortMenuItemCheck, this, _2)); +} + +BOOL LLPanelMarketplaceListings::postBuild() +{ + childSetAction("add_btn", boost::bind(&LLPanelMarketplaceListings::onAddButtonClicked, this)); + childSetAction("audit_btn", boost::bind(&LLPanelMarketplaceListings::onAuditButtonClicked, this)); + + mFilterEditor = getChild<LLFilterEditor>("filter_editor"); + mFilterEditor->setCommitCallback(boost::bind(&LLPanelMarketplaceListings::onFilterEdit, this, _2)); + + mAuditBtn = getChild<LLButton>("audit_btn"); + mAuditBtn->setEnabled(FALSE); + + return LLPanel::postBuild(); +} + +BOOL LLPanelMarketplaceListings::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + LLView * handled_view = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + BOOL handled = (handled_view != NULL); + // Special case the drop zone + if (handled && (handled_view->getName() == "marketplace_drop_zone")) + { + LLFolderView* root_folder = getRootFolder(); + handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + } + return handled; +} + +void LLPanelMarketplaceListings::buildAllPanels() +{ + // Build the All panel first + LLInventoryPanel* panel_all_items; + panel_all_items = buildInventoryPanel("All Items", "panel_marketplace_listings_inventory.xml"); + panel_all_items->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel_all_items->getFilter().markDefault(); + + // Build the other panels + LLInventoryPanel* panel; + panel = buildInventoryPanel("Active Items", "panel_marketplace_listings_listed.xml"); + panel->getFilter().setFilterMarketplaceActiveFolders(); + panel->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel->getFilter().markDefault(); + panel = buildInventoryPanel("Inactive Items", "panel_marketplace_listings_unlisted.xml"); + panel->getFilter().setFilterMarketplaceInactiveFolders(); + panel->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel->getFilter().markDefault(); + panel = buildInventoryPanel("Unassociated Items", "panel_marketplace_listings_unassociated.xml"); + panel->getFilter().setFilterMarketplaceUnassociatedFolders(); + panel->getFilter().setEmptyLookupMessage("MarketplaceNoMatchingItems"); + panel->getFilter().markDefault(); + + // Set the tab panel + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + tabs_panel->setCommitCallback(boost::bind(&LLPanelMarketplaceListings::onTabChange, this)); + tabs_panel->selectTabPanel(panel_all_items); // All panel selected by default + mRootFolder = panel_all_items->getRootFolder(); // Keep the root of the all panel + + // Set the default sort order + setSortOrder(gSavedSettings.getU32("MarketplaceListingsSortOrder")); +} + +LLInventoryPanel* LLPanelMarketplaceListings::buildInventoryPanel(const std::string& childname, const std::string& filename) +{ + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + LLInventoryPanel* panel = LLUICtrlFactory::createFromFile<LLInventoryPanel>(filename, tabs_panel, LLInventoryPanel::child_registry_t::instance()); + llassert(panel != NULL); + + // Set sort order and callbacks + panel = getChild<LLInventoryPanel>(childname); + panel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME); + panel->setSelectCallback(boost::bind(&LLPanelMarketplaceListings::onSelectionChange, this, panel, _1, _2)); + + return panel; +} + +void LLPanelMarketplaceListings::setSortOrder(U32 sort_order) +{ + mSortOrder = sort_order; + gSavedSettings.setU32("MarketplaceListingsSortOrder", sort_order); + + // Set each panel with that sort order + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items"); + panel->setSortOrder(mSortOrder); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items"); + panel->setSortOrder(mSortOrder); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items"); + panel->setSortOrder(mSortOrder); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items"); + panel->setSortOrder(mSortOrder); +} + +void LLPanelMarketplaceListings::onFilterEdit(const std::string& search_string) +{ + // Find active panel + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + if (panel) + { + // Save filter string (needed when switching tabs) + mFilterSubString = search_string; + // Set filter string on active panel + panel->setFilterSubString(mFilterSubString); + } +} + +void LLPanelMarketplaceListings::draw() +{ + if (LLMarketplaceData::instance().checkDirtyCount()) + { + update_all_marketplace_count(); + } + + // Get the audit button enabled only after the whole inventory is fetched + if (!mAuditBtn->getEnabled()) + { + mAuditBtn->setEnabled(LLInventoryModelBackgroundFetch::instance().isEverythingFetched()); + } + + LLPanel::draw(); +} + +void LLPanelMarketplaceListings::onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action) +{ + panel->onSelectionChange(items, user_action); +} + +bool LLPanelMarketplaceListings::allowDropOnRoot() +{ + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + return (panel ? panel->getAllowDropOnRoot() : false); +} + +void LLPanelMarketplaceListings::onTabChange() +{ + // Find active panel + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + if (panel) + { + // If the panel doesn't allow drop on root, it doesn't allow the creation of new folder on root either + LLButton* add_btn = getChild<LLButton>("add_btn"); + add_btn->setEnabled(panel->getAllowDropOnRoot()); + + // Set filter string on active panel + panel->setFilterSubString(mFilterSubString); + + // Show/hide the drop zone and resize the inventory tabs panel accordingly + LLPanel* drop_zone = (LLPanel*)getChild<LLPanel>("marketplace_drop_zone"); + bool drop_zone_visible = drop_zone->getVisible(); + if (drop_zone_visible != panel->getAllowDropOnRoot()) + { + LLPanel* tabs = (LLPanel*)getChild<LLPanel>("tab_container_panel"); + S32 delta_height = drop_zone->getRect().getHeight(); + delta_height = (drop_zone_visible ? delta_height : -delta_height); + tabs->reshape(tabs->getRect().getWidth(),tabs->getRect().getHeight() + delta_height); + tabs->translate(0,-delta_height); + } + drop_zone->setVisible(panel->getAllowDropOnRoot()); + } +} + +void LLPanelMarketplaceListings::onAddButtonClicked() +{ + // Find active panel + LLInventoryPanel* panel = (LLInventoryPanel*)getChild<LLTabContainer>("marketplace_filter_tabs")->getCurrentPanel(); + if (panel) + { + LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + llassert(marketplacelistings_id.notNull()); + LLFolderType::EType preferred_type = LLFolderType::lookup("category"); + LLUUID category = gInventory.createNewCategory(marketplacelistings_id, preferred_type, LLStringUtil::null); + gInventory.notifyObservers(); + panel->setSelectionByID(category, TRUE); + panel->getRootFolder()->setNeedsAutoRename(TRUE); + } +} + +void LLPanelMarketplaceListings::onAuditButtonClicked() +{ + LLSD data(LLSD::emptyMap()); + LLFloaterReg::showInstance("marketplace_validation", data); +} + +void LLPanelMarketplaceListings::onViewSortMenuItemClicked(const LLSD& userdata) +{ + std::string chosen_item = userdata.asString(); + + // Sort options + if ((chosen_item == "sort_by_stock_amount") || (chosen_item == "sort_by_name") || (chosen_item == "sort_by_recent")) + { + // We're making sort options exclusive, default is SO_FOLDERS_BY_NAME + if (chosen_item == "sort_by_stock_amount") + { + setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); + } + else if (chosen_item == "sort_by_name") + { + setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME); + } + else if (chosen_item == "sort_by_recent") + { + setSortOrder(LLInventoryFilter::SO_DATE); + } + } + // Filter option + else if (chosen_item == "show_only_listing_folders") + { + mFilterListingFoldersOnly = !mFilterListingFoldersOnly; + // Set each panel with that filter flag + LLTabContainer* tabs_panel = getChild<LLTabContainer>("marketplace_filter_tabs"); + LLInventoryPanel* panel = (LLInventoryPanel*)tabs_panel->getPanelByName("All Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Active Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Inactive Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + panel = (LLInventoryPanel*)tabs_panel->getPanelByName("Unassociated Items"); + panel->getFilter().setFilterMarketplaceListingFolders(mFilterListingFoldersOnly); + } +} + +bool LLPanelMarketplaceListings::onViewSortMenuItemCheck(const LLSD& userdata) +{ + std::string chosen_item = userdata.asString(); + + if ((chosen_item == "sort_by_stock_amount") || (chosen_item == "sort_by_name") || (chosen_item == "sort_by_recent")) + { + if (chosen_item == "sort_by_stock_amount") + { + return (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); + } + else if (chosen_item == "sort_by_name") + { + return (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME); + } + else if (chosen_item == "sort_by_recent") + { + return (mSortOrder & LLInventoryFilter::SO_DATE); + } + } + else if (chosen_item == "show_only_listing_folders") + { + return mFilterListingFoldersOnly; + } + return false; +} + +///---------------------------------------------------------------------------- +/// LLMarketplaceListingsAddedObserver helper class +///---------------------------------------------------------------------------- + +class LLMarketplaceListingsAddedObserver : public LLInventoryCategoryAddedObserver +{ +public: + LLMarketplaceListingsAddedObserver(LLFloaterMarketplaceListings * marketplace_listings_floater) + : LLInventoryCategoryAddedObserver() + , mMarketplaceListingsFloater(marketplace_listings_floater) + { + } + + void done() + { + for (cat_vec_t::iterator it = mAddedCategories.begin(); it != mAddedCategories.end(); ++it) + { + LLViewerInventoryCategory* added_category = *it; + + LLFolderType::EType added_category_type = added_category->getPreferredType(); + + if (added_category_type == LLFolderType::FT_MARKETPLACE_LISTINGS) + { + mMarketplaceListingsFloater->initializeMarketPlace(); + } + } + } + +private: + LLFloaterMarketplaceListings * mMarketplaceListingsFloater; +}; + +///---------------------------------------------------------------------------- +/// LLFloaterMarketplaceListings +///---------------------------------------------------------------------------- + +LLFloaterMarketplaceListings::LLFloaterMarketplaceListings(const LLSD& key) +: LLFloater(key) +, mCategoriesObserver(NULL) +, mCategoryAddedObserver(NULL) +, mRootFolderId(LLUUID::null) +, mInventoryStatus(NULL) +, mInventoryInitializationInProgress(NULL) +, mInventoryPlaceholder(NULL) +, mInventoryText(NULL) +, mInventoryTitle(NULL) +, mPanelListings(NULL) +, mPanelListingsSet(false) +{ +} + +LLFloaterMarketplaceListings::~LLFloaterMarketplaceListings() +{ + if (mCategoriesObserver && gInventory.containsObserver(mCategoriesObserver)) + { + gInventory.removeObserver(mCategoriesObserver); + } + delete mCategoriesObserver; + + if (mCategoryAddedObserver && gInventory.containsObserver(mCategoryAddedObserver)) + { + gInventory.removeObserver(mCategoryAddedObserver); + } + delete mCategoryAddedObserver; +} + +BOOL LLFloaterMarketplaceListings::postBuild() +{ + mInventoryStatus = getChild<LLTextBox>("marketplace_status"); + mInventoryInitializationInProgress = getChild<LLView>("initialization_progress_indicator"); + mInventoryPlaceholder = getChild<LLView>("marketplace_listings_inventory_placeholder_panel"); + mInventoryText = mInventoryPlaceholder->getChild<LLTextBox>("marketplace_listings_inventory_placeholder_text"); + mInventoryTitle = mInventoryPlaceholder->getChild<LLTextBox>("marketplace_listings_inventory_placeholder_title"); + + mPanelListings = static_cast<LLPanelMarketplaceListings*>(getChild<LLUICtrl>("panel_marketplace_listing")); + + LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLFloaterMarketplaceListings::onFocusReceived, this)); + + // Observe category creation to catch marketplace listings creation (moot if already existing) + mCategoryAddedObserver = new LLMarketplaceListingsAddedObserver(this); + gInventory.addObserver(mCategoryAddedObserver); + + // Fetch aggressively so we can interact with listings right onOpen() + fetchContents(); + + return TRUE; +} + +void LLFloaterMarketplaceListings::onClose(bool app_quitting) +{ +} + +void LLFloaterMarketplaceListings::onOpen(const LLSD& key) +{ + // + // Initialize the Market Place or go update the marketplace listings + // + if (LLMarketplaceData::instance().getSLMStatus() <= MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE) + { + initializeMarketPlace(); + } + else + { + updateView(); + } +} + +void LLFloaterMarketplaceListings::onFocusReceived() +{ + updateView(); +} + +void LLFloaterMarketplaceListings::fetchContents() +{ + if (mRootFolderId.notNull() && + (LLMarketplaceData::instance().getSLMDataFetched() != MarketplaceFetchCodes::MARKET_FETCH_LOADING) && + (LLMarketplaceData::instance().getSLMDataFetched() != MarketplaceFetchCodes::MARKET_FETCH_DONE)) + { + LLMarketplaceData::instance().setDataFetchedSignal(boost::bind(&LLFloaterMarketplaceListings::updateView, this)); + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_LOADING); + LLInventoryModelBackgroundFetch::instance().start(mRootFolderId); + LLMarketplaceData::instance().getSLMListings(); + } +} + +void LLFloaterMarketplaceListings::setRootFolder() +{ + if ((LLMarketplaceData::instance().getSLMStatus() != MarketplaceStatusCodes::MARKET_PLACE_MERCHANT) && + (LLMarketplaceData::instance().getSLMStatus() != MarketplaceStatusCodes::MARKET_PLACE_MIGRATED_MERCHANT)) + { + // If we are *not* a merchant or we have no market place connection established yet, do nothing + return; + } + + // We are a merchant. Get the Marketplace listings folder, create it if needs be. + LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, true); + if (marketplacelistings_id.isNull()) + { + // We should never get there unless the inventory fails badly + LL_ERRS("SLM") << "Inventory problem: failure to create the marketplace listings folder for a merchant!" << LL_ENDL; + return; + } + + // No longer need to observe new category creation + if (mCategoryAddedObserver && gInventory.containsObserver(mCategoryAddedObserver)) + { + gInventory.removeObserver(mCategoryAddedObserver); + delete mCategoryAddedObserver; + mCategoryAddedObserver = NULL; + } + llassert(!mCategoryAddedObserver); + + if (marketplacelistings_id == mRootFolderId) + { + LL_WARNS("SLM") << "Inventory warning: Marketplace listings folder already set" << LL_ENDL; + return; + } + + mRootFolderId = marketplacelistings_id; +} + +void LLFloaterMarketplaceListings::setPanels() +{ + if (mRootFolderId.isNull()) + { + return; + } + + // Consolidate Marketplace listings + // We shouldn't have to do that but with a client/server system relying on a "well known folder" convention, + // things get messy and conventions get broken down eventually + gInventory.consolidateForType(mRootFolderId, LLFolderType::FT_MARKETPLACE_LISTINGS); + + // Now that we do have a non NULL root, we can build the inventory panels + mPanelListings->buildAllPanels(); + + // Create observer for marketplace listings modifications + if (!mCategoriesObserver) + { + mCategoriesObserver = new LLInventoryCategoriesObserver(); + llassert(mCategoriesObserver); + gInventory.addObserver(mCategoriesObserver); + mCategoriesObserver->addCategory(mRootFolderId, boost::bind(&LLFloaterMarketplaceListings::onChanged, this)); + } + + // Get the content of the marketplace listings folder + fetchContents(); + + // Flag that this is done + mPanelListingsSet = true; +} + +void LLFloaterMarketplaceListings::initializeMarketPlace() +{ + LLMarketplaceData::instance().initializeSLM(boost::bind(&LLFloaterMarketplaceListings::updateView, this)); +} + +S32 LLFloaterMarketplaceListings::getFolderCount() +{ + if (mPanelListings && mRootFolderId.notNull()) + { + LLInventoryModel::cat_array_t * cats; + LLInventoryModel::item_array_t * items; + gInventory.getDirectDescendentsOf(mRootFolderId, cats, items); + + return (cats->size() + items->size()); + } + else + { + return 0; + } +} + +void LLFloaterMarketplaceListings::setStatusString(const std::string& statusString) +{ + mInventoryStatus->setText(statusString); +} + +void LLFloaterMarketplaceListings::updateView() +{ + U32 mkt_status = LLMarketplaceData::instance().getSLMStatus(); + bool is_merchant = (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_MERCHANT) || (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_MIGRATED_MERCHANT); + U32 data_fetched = LLMarketplaceData::instance().getSLMDataFetched(); + + // Get or create the root folder if we are a merchant and it hasn't been done already + if (mRootFolderId.isNull() && is_merchant) + { + setRootFolder(); + } + + // Update the bottom initializing status and progress dial if we are initializing or if we're a merchant and still loading + if ((mkt_status <= MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING) || (is_merchant && (data_fetched <= MarketplaceFetchCodes::MARKET_FETCH_LOADING)) ) + { + // Just show the loading indicator in that case and fetch the data (fetch will be skipped if it's already loading) + mInventoryInitializationInProgress->setVisible(true); + mPanelListings->setVisible(FALSE); + fetchContents(); + return; + } + else + { + mInventoryInitializationInProgress->setVisible(false); + } + + // Update the middle portion : tabs or messages + if (getFolderCount() > 0) + { + if (!mPanelListingsSet) + { + // We need to rebuild the tabs cleanly the first time we make them visible + setPanels(); + } + mPanelListings->setVisible(TRUE); + mInventoryPlaceholder->setVisible(FALSE); + } + else + { + mPanelListings->setVisible(FALSE); + mInventoryPlaceholder->setVisible(TRUE); + + std::string text; + std::string title; + std::string tooltip; + + const LLSD& subs = getMarketplaceStringSubstitutions(); + + // Update the top message or flip to the tabs and folders view + // *TODO : check those messages and create better appropriate ones in strings.xml + if (mRootFolderId.notNull()) + { + // "Marketplace listings is empty!" message strings + text = LLTrans::getString("InventoryMarketplaceListingsNoItems", subs); + title = LLTrans::getString("InventoryMarketplaceListingsNoItemsTitle"); + tooltip = LLTrans::getString("InventoryMarketplaceListingsNoItemsTooltip"); + } + else if (mkt_status <= MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING) + { + // "Initializing!" message strings + text = LLTrans::getString("InventoryOutboxInitializing", subs); + title = LLTrans::getString("InventoryOutboxInitializingTitle"); + tooltip = LLTrans::getString("InventoryOutboxInitializingTooltip"); + } + else if (mkt_status == MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT) + { + // "Not a merchant!" message strings + text = LLTrans::getString("InventoryOutboxNotMerchant", subs); + title = LLTrans::getString("InventoryOutboxNotMerchantTitle"); + tooltip = LLTrans::getString("InventoryOutboxNotMerchantTooltip"); + } + else + { + // "Errors!" message strings + text = LLTrans::getString("InventoryMarketplaceError", subs); + title = LLTrans::getString("InventoryOutboxErrorTitle"); + tooltip = LLTrans::getString("InventoryOutboxErrorTooltip"); + } + + mInventoryText->setValue(text); + mInventoryTitle->setValue(title); + mInventoryPlaceholder->getParent()->setToolTip(tooltip); + } +} + +bool LLFloaterMarketplaceListings::isAccepted(EAcceptance accept) +{ + return (accept >= ACCEPT_YES_COPY_SINGLE); +} + +BOOL LLFloaterMarketplaceListings::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + // If there's no panel to accept drops or no existing marketplace listings folder, we refuse all drop + if (!mPanelListings || mRootFolderId.isNull()) + { + return FALSE; + } + + tooltip_msg = ""; + + // Pass to the children + LLView * handled_view = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + BOOL handled = (handled_view != NULL); + + // If no one handled it or it was not accepted and we drop on an empty panel, we try to accept it at the floater level + // as if it was dropped on the marketplace listings root folder + if ((!handled || !isAccepted(*accept)) && !mPanelListings->getVisible() && mRootFolderId.notNull()) + { + if (!mPanelListingsSet) + { + setPanels(); + } + LLFolderView* root_folder = mPanelListings->getRootFolder(); + handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + } + + return handled; +} + +BOOL LLFloaterMarketplaceListings::handleHover(S32 x, S32 y, MASK mask) +{ + return LLFloater::handleHover(x, y, mask); +} + +void LLFloaterMarketplaceListings::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLFloater::onMouseLeave(x, y, mask); +} + +void LLFloaterMarketplaceListings::onChanged() +{ + LLViewerInventoryCategory* category = gInventory.getCategory(mRootFolderId); + if (mRootFolderId.notNull() && category) + { + updateView(); + } + else + { + // Invalidate the marketplace listings data + mRootFolderId.setNull(); + } +} + +//----------------------------------------------------------------------------- +// LLFloaterAssociateListing +//----------------------------------------------------------------------------- + +// Tell if a listing has one only version folder +bool hasUniqueVersionFolder(const LLUUID& folder_id) +{ + LLInventoryModel::cat_array_t* categories; + LLInventoryModel::item_array_t* items; + gInventory.getDirectDescendentsOf(folder_id, categories, items); + return (categories->size() == 1); +} + +LLFloaterAssociateListing::LLFloaterAssociateListing(const LLSD& key) +: LLFloater(key) +, mUUID() +{ +} + +LLFloaterAssociateListing::~LLFloaterAssociateListing() +{ + gFocusMgr.releaseFocusIfNeeded( this ); +} + +BOOL LLFloaterAssociateListing::postBuild() +{ + getChild<LLButton>("OK")->setCommitCallback(boost::bind(&LLFloaterAssociateListing::apply, this, TRUE)); + getChild<LLButton>("Cancel")->setCommitCallback(boost::bind(&LLFloaterAssociateListing::cancel, this)); + getChild<LLLineEditor>("listing_id")->setPrevalidate(&LLTextValidate::validateNonNegativeS32); + center(); + + return LLFloater::postBuild(); +} + +BOOL LLFloaterAssociateListing::handleKeyHere(KEY key, MASK mask) +{ + if (key == KEY_RETURN && mask == MASK_NONE) + { + apply(); + return TRUE; + } + else if (key == KEY_ESCAPE && mask == MASK_NONE) + { + cancel(); + return TRUE; + } + + return LLFloater::handleKeyHere(key, mask); +} + +// static +LLFloaterAssociateListing* LLFloaterAssociateListing::show(const LLUUID& folder_id) +{ + LLFloaterAssociateListing* floater = LLFloaterReg::showTypedInstance<LLFloaterAssociateListing>("associate_listing"); + + floater->mUUID = folder_id; + + return floater; +} + +// Callback for apply if DAMA required... +void LLFloaterAssociateListing::callback_apply(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + apply(FALSE); + } +} + +void LLFloaterAssociateListing::apply(BOOL user_confirm) +{ + if (mUUID.notNull()) + { + S32 id = (S32)getChild<LLUICtrl>("listing_id")->getValue().asInteger(); + if (id > 0) + { + // Check if the id exists in the merchant SLM DB: note that this record might exist in the LLMarketplaceData + // structure even if unseen in the UI, for instance, if its listing_uuid doesn't exist in the merchant inventory + LLUUID listing_uuid = LLMarketplaceData::instance().getListingFolder(id); + if (listing_uuid.notNull() && user_confirm && LLMarketplaceData::instance().getActivationState(listing_uuid) && !hasUniqueVersionFolder(mUUID)) + { + // Look for user confirmation before unlisting + LLNotificationsUtil::add("ConfirmMerchantUnlist", LLSD(), LLSD(), boost::bind(&LLFloaterAssociateListing::callback_apply, this, _1, _2)); + return; + } + // Associate the id with the user chosen folder + LLMarketplaceData::instance().associateListing(mUUID,listing_uuid,id); + } + else + { + LLNotificationsUtil::add("AlertMerchantListingInvalidID"); + } + } + closeFloater(); +} + +void LLFloaterAssociateListing::cancel() +{ + closeFloater(); +} + +//----------------------------------------------------------------------------- +// LLFloaterMarketplaceValidation +//----------------------------------------------------------------------------- + +// Note: The key is the UUID of the folder to validate. +// Validates the whole marketplace listings content if UUID is null. + +LLFloaterMarketplaceValidation::LLFloaterMarketplaceValidation(const LLSD& key) +: LLFloater(key), +mEditor(NULL) +{ +} + +BOOL LLFloaterMarketplaceValidation::postBuild() +{ + childSetAction("OK", onOK, this); + + // This widget displays the validation messages + mEditor = getChild<LLTextEditor>("validation_text"); + mEditor->setEnabled(FALSE); + mEditor->setFocus(TRUE); + mEditor->setValue(LLSD()); + + return TRUE; +} + +LLFloaterMarketplaceValidation::~LLFloaterMarketplaceValidation() +{ +} + +// virtual +void LLFloaterMarketplaceValidation::draw() +{ + // draw children + LLFloater::draw(); +} + +void LLFloaterMarketplaceValidation::onOpen(const LLSD& key) +{ + // Clear the messages + clearMessages(); + + // Get the folder UUID to validate. Use the whole marketplace listing if none provided. + LLUUID cat_id(key.asUUID()); + if (cat_id.isNull()) + { + cat_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + } + + // Validates the folder + if (cat_id.notNull()) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); + validate_marketplacelistings(cat, boost::bind(&LLFloaterMarketplaceValidation::appendMessage, this, _1, _2, _3), false); + } + + // Handle the listing folder being processed + handleCurrentListing(); + + // Dump result to the editor panel + if (mEditor) + { + mEditor->setValue(LLSD()); + if (mMessages.empty()) + { + // Display a no error message + mEditor->appendText(LLTrans::getString("Marketplace Validation No Error"), false); + } + else + { + // Print out all the messages to the panel + message_list_t::iterator mCurrentLine = mMessages.begin(); + bool new_line = false; + while (mCurrentLine != mMessages.end()) + { + // Errors are printed in bold, other messages in normal font + LLStyle::Params style; + LLFontDescriptor new_desc(mEditor->getFont()->getFontDesc()); + new_desc.setStyle(mCurrentLine->mErrorLevel == LLError::LEVEL_ERROR ? LLFontGL::BOLD : LLFontGL::NORMAL); + LLFontGL* new_font = LLFontGL::getFont(new_desc); + style.font = new_font; + mEditor->appendText(mCurrentLine->mMessage, new_line, style); + new_line = true; + mCurrentLine++; + } + } + } + // We don't need the messages anymore + clearMessages(); +} + +// static +void LLFloaterMarketplaceValidation::onOK( void* userdata ) +{ + // destroys this object + LLFloaterMarketplaceValidation* self = (LLFloaterMarketplaceValidation*) userdata; + self->clearMessages(); + self->closeFloater(); +} + +void LLFloaterMarketplaceValidation::appendMessage(std::string& message, S32 depth, LLError::ELevel log_level) +{ + // Dump previous listing messages if we're starting a new listing + if (depth == 1) + { + handleCurrentListing(); + } + + // Store the message in the current listing message list + Message current_message; + current_message.mErrorLevel = log_level; + current_message.mMessage = message; + mCurrentListingMessages.push_back(current_message); + mCurrentListingErrorLevel = (mCurrentListingErrorLevel < log_level ? log_level : mCurrentListingErrorLevel); +} + +// Move the current listing messages to the general list if needs be and reset the current listing data +void LLFloaterMarketplaceValidation::handleCurrentListing() +{ + // Dump the current folder messages to the general message list if level warrants it + if (mCurrentListingErrorLevel > LLError::LEVEL_INFO) + { + message_list_t::iterator mCurrentLine = mCurrentListingMessages.begin(); + while (mCurrentLine != mCurrentListingMessages.end()) + { + mMessages.push_back(*mCurrentLine); + mCurrentLine++; + } + } + + // Reset the current listing + mCurrentListingMessages.clear(); + mCurrentListingErrorLevel = LLError::LEVEL_INFO; +} + +void LLFloaterMarketplaceValidation::clearMessages() +{ + mMessages.clear(); + mCurrentListingMessages.clear(); + mCurrentListingErrorLevel = LLError::LEVEL_INFO; +} + +//----------------------------------------------------------------------------- +// LLFloaterItemProperties +//----------------------------------------------------------------------------- + +LLFloaterItemProperties::LLFloaterItemProperties(const LLSD& key) +: LLFloater(key) +{ +} + +LLFloaterItemProperties::~LLFloaterItemProperties() +{ +} + +BOOL LLFloaterItemProperties::postBuild() +{ + // On the standalone properties floater, we have no need for a back button... + LLSidepanelItemInfo* panel = getChild<LLSidepanelItemInfo>("item_panel"); + LLButton* back_btn = panel->getChild<LLButton>("back_btn"); + back_btn->setVisible(FALSE); + + return LLFloater::postBuild(); +} + +void LLFloaterItemProperties::onOpen(const LLSD& key) +{ + // Tell the panel which item it needs to visualize + LLSidepanelItemInfo* panel = getChild<LLSidepanelItemInfo>("item_panel"); + panel->setItemID(key["id"].asUUID()); +} + diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h new file mode 100755 index 0000000000000000000000000000000000000000..ffc098e28a238ef1de11a9c90d3e0a5fc6811367 --- /dev/null +++ b/indra/newview/llfloatermarketplacelistings.h @@ -0,0 +1,226 @@ +/** + * @file llfloatermarketplacelistings.h + * @brief Implementation of the marketplace listings floater and panels + * @author merov@lindenlab.com + * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATERMARKETPLACELISTINGS_H +#define LL_LLFLOATERMARKETPLACELISTINGS_H + +#include "llfloater.h" +#include "llinventoryfilter.h" +#include "llinventorypanel.h" +#include "llnotificationptr.h" +#include "llmodaldialog.h" +#include "lltexteditor.h" + +class LLInventoryCategoriesObserver; +class LLInventoryCategoryAddedObserver; +class LLTextBox; +class LLView; +class LLFilterEditor; + +class LLFloaterMarketplaceListings; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLPanelMarketplaceListings +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLPanelMarketplaceListings : public LLPanel +{ +public: + LLPanelMarketplaceListings(); + BOOL postBuild(); + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); + void draw(); + LLFolderView* getRootFolder() { return mRootFolder; } + bool allowDropOnRoot(); + + void buildAllPanels(); + +private: + LLInventoryPanel* buildInventoryPanel(const std::string& childname, const std::string& filename); + + // UI callbacks + void onViewSortMenuItemClicked(const LLSD& userdata); + bool onViewSortMenuItemCheck(const LLSD& userdata); + void onAddButtonClicked(); + void onAuditButtonClicked(); + void onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action); + void onTabChange(); + void onFilterEdit(const std::string& search_string); + + void setSortOrder(U32 sort_order); + + LLFolderView* mRootFolder; + LLButton* mAuditBtn; + LLFilterEditor* mFilterEditor; + std::string mFilterSubString; + bool mFilterListingFoldersOnly; + U32 mSortOrder; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLFloaterMarketplaceListings +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLFloaterMarketplaceListings : public LLFloater +{ +public: + LLFloaterMarketplaceListings(const LLSD& key); + ~LLFloaterMarketplaceListings(); + + void initializeMarketPlace(); + + // virtuals + BOOL postBuild(); + BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); + + void showNotification(const LLNotificationPtr& notification); + + BOOL handleHover(S32 x, S32 y, MASK mask); + void onMouseLeave(S32 x, S32 y, MASK mask); + +protected: + void setRootFolder(); + void setPanels(); + void fetchContents(); + + void setStatusString(const std::string& statusString); + + void onClose(bool app_quitting); + void onOpen(const LLSD& key); + void onFocusReceived(); + void onChanged(); + + bool isAccepted(EAcceptance accept); + + void updateView(); + +private: + S32 getFolderCount(); + + LLInventoryCategoriesObserver * mCategoriesObserver; + LLInventoryCategoryAddedObserver * mCategoryAddedObserver; + + LLTextBox * mInventoryStatus; + LLView * mInventoryInitializationInProgress; + LLView * mInventoryPlaceholder; + LLTextBox * mInventoryText; + LLTextBox * mInventoryTitle; + + LLUUID mRootFolderId; + LLPanelMarketplaceListings * mPanelListings; + bool mPanelListingsSet; +}; + +//----------------------------------------------------------------------------- +// LLFloaterAssociateListing +//----------------------------------------------------------------------------- +class LLFloaterAssociateListing : public LLFloater +{ + friend class LLFloaterReg; +public: + virtual BOOL postBuild(); + virtual BOOL handleKeyHere(KEY key, MASK mask); + + static LLFloaterAssociateListing* show(const LLUUID& folder_id); + +private: + LLFloaterAssociateListing(const LLSD& key); + virtual ~LLFloaterAssociateListing(); + + // UI Callbacks + void apply(BOOL user_confirm = TRUE); + void cancel(); + void callback_apply(const LLSD& notification, const LLSD& response); + + LLUUID mUUID; +}; + +//----------------------------------------------------------------------------- +// LLFloaterMarketplaceValidation +//----------------------------------------------------------------------------- +// Note: The key is the UUID of the folder to validate. Validates the whole +// marketplace listings content if UUID is null. +// Note: For the moment, we just display the validation text. Eventually, we should +// get the validation triggered on the server and display the html report. +// *TODO : morph into an html/text window using the pattern in llfloatertos + +class LLFloaterMarketplaceValidation : public LLFloater +{ +public: + LLFloaterMarketplaceValidation(const LLSD& key); + virtual ~LLFloaterMarketplaceValidation(); + + virtual BOOL postBuild(); + virtual void draw(); + virtual void onOpen(const LLSD& key); + + void clearMessages(); + void appendMessage(std::string& message, S32 depth, LLError::ELevel log_level); + static void onOK( void* userdata ); + +private: + struct Message { + LLError::ELevel mErrorLevel; + std::string mMessage; + }; + typedef std::vector<Message> message_list_t; + + void handleCurrentListing(); + + message_list_t mCurrentListingMessages; + LLError::ELevel mCurrentListingErrorLevel; + + message_list_t mMessages; + + LLTextEditor* mEditor; +}; + +//----------------------------------------------------------------------------- +// LLFloaterItemProperties +//----------------------------------------------------------------------------- + +class LLFloaterItemProperties : public LLFloater +{ +public: + LLFloaterItemProperties(const LLSD& key); + virtual ~LLFloaterItemProperties(); + + BOOL postBuild(); + virtual void onOpen(const LLSD& key); + +private: +}; + +#endif // LL_LLFLOATERMARKETPLACELISTINGS_H diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp index e5efca1102748dfdbb601a50f51b129de92c6ff1..b7b1634a5fbd907961d76afad02205486a33f4e7 100755 --- a/indra/newview/llfloateroutbox.cpp +++ b/indra/newview/llfloateroutbox.cpp @@ -160,6 +160,12 @@ BOOL LLFloaterOutbox::postBuild() mCategoryAddedObserver = new LLOutboxAddedObserver(this); gInventory.addObserver(mCategoryAddedObserver); + // Setup callbacks for importer + LLMarketplaceInventoryImporter& importer = LLMarketplaceInventoryImporter::instance(); + importer.setInitializationErrorCallback(boost::bind(&LLFloaterOutbox::initializationReportError, this, _1, _2)); + importer.setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1)); + importer.setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2)); + return TRUE; } @@ -298,12 +304,8 @@ void LLFloaterOutbox::initializeMarketPlace() // Initialize the marketplace import API // LLMarketplaceInventoryImporter& importer = LLMarketplaceInventoryImporter::instance(); - if (!importer.isInitialized()) { - importer.setInitializationErrorCallback(boost::bind(&LLFloaterOutbox::initializationReportError, this, _1, _2)); - importer.setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1)); - importer.setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2)); importer.initialize(); } } @@ -516,7 +518,7 @@ void LLFloaterOutbox::onImportButtonClicked() { mOutboxInventoryPanel.get()->clearSelection(); } - + mImportBusy = LLMarketplaceInventoryImporter::instance().triggerImport(); } @@ -617,3 +619,5 @@ void LLFloaterOutbox::showNotification(const LLNotificationPtr& notification) notification_handler->processNotification(notification); } + + diff --git a/indra/newview/llfloateroutbox.h b/indra/newview/llfloateroutbox.h index 40519c8fd2ea42c387ffb740b52f34e6eaa07ce4..2cf69fc3cc3411888724676aadf84e352dd32f1f 100755 --- a/indra/newview/llfloateroutbox.h +++ b/indra/newview/llfloateroutbox.h @@ -1,7 +1,6 @@ /** * @file llfloateroutbox.h - * @brief LLFloaterOutbox - * class definition + * @brief Implementation of the merchant outbox window * * $LicenseInfo:firstyear=2001&license=viewerlgpl$ * Second Life Viewer Source Code @@ -30,6 +29,7 @@ #include "llfloater.h" #include "llfoldertype.h" +#include "llinventoryfilter.h" #include "llnotificationptr.h" diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index 3271a40ea015d02d1eaf0fdb42ae501e251c5c3d..44eda4d6c0679987abed9a4c9a68029198982910 100755 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -27,6 +27,7 @@ #include "llviewerprecompiledheaders.h" #include "llfolderviewmodelinventory.h" #include "llinventorymodelbackgroundfetch.h" +#include "llinventoryfunctions.h" #include "llinventorypanel.h" #include "lltooldraganddrop.h" #include "llfavoritesbar.h" @@ -277,7 +278,7 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a, // We sort by name if we aren't sorting by date // OR if these are folders and we are sorting folders by name. - bool by_name = (!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM))); + bool by_name = ((!mByDate || (mFoldersByName && (a->getSortGroup() != SG_ITEM))) && !mFoldersByWeight); if (a->getSortGroup() != b->getSortGroup()) { @@ -309,6 +310,31 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a, return (compare < 0); } } + else if (mFoldersByWeight) + { + S32 weight_a = compute_stock_count(a->getUUID()); + S32 weight_b = compute_stock_count(b->getUUID()); + if (weight_a == weight_b) + { + // Equal weight -> use alphabetical order + return (LLStringUtil::compareDict(a->getDisplayName(), b->getDisplayName()) < 0); + } + else if (weight_a == COMPUTE_STOCK_INFINITE) + { + // No stock -> move a at the end of the list + return false; + } + else if (weight_b == COMPUTE_STOCK_INFINITE) + { + // No stock -> move b at the end of the list + return true; + } + else + { + // Lighter is first (sorted in increasing order of weight) + return (weight_a < weight_b); + } + } else { time_t first_create = a->getCreationDate(); diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h index 8772185ad092b934dbc32e05595fec4f83bb1c91..0516fc3b4b8c77f222db615c3d9a47a829f3eb3b 100755 --- a/indra/newview/llfolderviewmodelinventory.h +++ b/indra/newview/llfolderviewmodelinventory.h @@ -89,6 +89,7 @@ class LLInventorySort mByDate = (mSortOrder & LLInventoryFilter::SO_DATE); mSystemToTop = (mSortOrder & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP); mFoldersByName = (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME); + mFoldersByWeight = (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_WEIGHT); } bool operator()(const LLFolderViewModelItemInventory* const& a, const LLFolderViewModelItemInventory* const& b) const; @@ -97,6 +98,7 @@ class LLInventorySort bool mByDate; bool mSystemToTop; bool mFoldersByName; + bool mFoldersByWeight; }; class LLFolderViewModelInventory diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 84f88e38ba0a8a0767883ac2466a8ca77ee7f138..605f71f412aa3c352d1b76979760da1e76576015 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -40,6 +40,7 @@ #include "llfavoritesbar.h" // management of favorites folder #include "llfloateropenobject.h" #include "llfloaterreg.h" +#include "llfloatermarketplacelistings.h" #include "llfloatersidepanelcontainer.h" #include "llfloaterworldmap.h" #include "llfolderview.h" @@ -65,6 +66,7 @@ #include "llsidepanelappearance.h" #include "lltooldraganddrop.h" #include "lltrans.h" +#include "llurlaction.h" #include "llviewerassettype.h" #include "llviewerfoldertype.h" #include "llviewermenu.h" @@ -80,11 +82,6 @@ void copy_slurl_to_clipboard_callback_inv(const std::string& slurl); -// Marketplace outbox current disabled -#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU 1 -#define ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU 0 -#define BLOCK_WORN_ITEMS_IN_OUTBOX 1 - typedef std::pair<LLUUID, LLUUID> two_uuids_t; typedef std::list<two_uuids_t> two_uuids_list_t; @@ -206,7 +203,6 @@ const std::string& LLInvFVBridge::getDisplayName() const { buildDisplayName(); } - return mDisplayName; } @@ -270,13 +266,49 @@ BOOL LLInvFVBridge::isLibraryItem() const /** * @brief Adds this item into clipboard storage */ -BOOL LLInvFVBridge::cutToClipboard() const +BOOL LLInvFVBridge::cutToClipboard() +{ + const LLInventoryObject* obj = gInventory.getObject(mUUID); + if (obj && isItemMovable() && isItemRemovable()) + { + const LLUUID &marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + const BOOL cut_from_marketplacelistings = gInventory.isObjectDescendentOf(mUUID, marketplacelistings_id); + + if (cut_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(mUUID) || + LLMarketplaceData::instance().isListedAndActive(mUUID))) + { + // Prompt the user if cutting from a marketplace active listing + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLInvFVBridge::callback_cutToClipboard, this, _1, _2)); + } + else + { + // Otherwise just perform the cut + return perform_cutToClipboard(); + } + } + return FALSE; +} + +// Callback for cutToClipboard if DAMA required... +BOOL LLInvFVBridge::callback_cutToClipboard(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + return perform_cutToClipboard(); + } + return FALSE; +} + +BOOL LLInvFVBridge::perform_cutToClipboard() { const LLInventoryObject* obj = gInventory.getObject(mUUID); if (obj && isItemMovable() && isItemRemovable()) { LLClipboard::instance().setCutMode(true); - return LLClipboard::instance().addToClipboard(mUUID); + BOOL added_to_clipboard = LLClipboard::instance().addToClipboard(mUUID); + removeObject(&gInventory, mUUID); // Always perform the remove even if the object couldn't make it to the clipboard + return added_to_clipboard; } return FALSE; } @@ -291,15 +323,22 @@ BOOL LLInvFVBridge::copyToClipboard() const return FALSE; } -// *TODO: make sure this does the right thing void LLInvFVBridge::showProperties() { - show_item_profile(mUUID); - - // Disable old properties floater; this is replaced by the sidepanel. - /* - LLFloaterReg::showInstance("properties", mUUID); - */ + if (isMarketplaceListingsFolder()) + { + LLFloaterReg::showInstance("item_properties", LLSD().with("id",mUUID),TRUE); + // Force it to show on top as this floater has a tendency to hide when confirmation dialog shows up + LLFloater* floater_properties = LLFloaterReg::findInstance("item_properties", LLSD().with("id",mUUID)); + if (floater_properties) + { + floater_properties->setVisibleAndFrontmost(); + } + } + else + { + show_item_profile(mUUID); + } } void LLInvFVBridge::removeBatch(std::vector<LLFolderViewModelItem*>& batch) @@ -696,7 +735,7 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, if (!isInboxFolder()) { items.push_back(std::string("Rename")); - if (!isItemRenameable() || (flags & FIRST_SELECTED_ITEM) == 0) + if (!isItemRenameable() || ((flags & FIRST_SELECTED_ITEM) == 0)) { disabled_items.push_back(std::string("Rename")); } @@ -734,15 +773,28 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, disabled_items.push_back(std::string("Cut")); } - if (canListOnMarketplace()) + if (canListOnMarketplace() && !isMarketplaceListingsFolder() && !isInboxFolder()) { items.push_back(std::string("Marketplace Separator")); - items.push_back(std::string("Merchant Copy")); - if (!canListOnMarketplaceNow()) - { - disabled_items.push_back(std::string("Merchant Copy")); - } + if (gMenuHolder->getChild<LLView>("MerchantOutbox")->getVisible()) + { + items.push_back(std::string("Merchant Copy")); + if (!canListOnOutboxNow()) + { + disabled_items.push_back(std::string("Merchant Copy")); + } + } + if (gMenuHolder->getChild<LLView>("MarketplaceListings")->getVisible()) + { + items.push_back(std::string("Marketplace Copy")); + items.push_back(std::string("Marketplace Move")); + if (!canListOnMarketplaceNow()) + { + disabled_items.push_back(std::string("Marketplace Copy")); + disabled_items.push_back(std::string("Marketplace Move")); + } + } } } } @@ -901,21 +953,130 @@ void LLInvFVBridge::addOutboxContextMenuOptions(U32 flags, { disabled_items.push_back(std::string("Rename")); } - -#if ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU - if (isOutboxFolderDirectParent()) - { - items.push_back(std::string("Marketplace Separator")); - items.push_back(std::string("Marketplace Send")); - - if ((flags & FIRST_SELECTED_ITEM) == 0) - { - disabled_items.push_back(std::string("Marketplace Send")); - } - } -#endif // ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU } +void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags, + menuentry_vec_t &items, + menuentry_vec_t &disabled_items) +{ + S32 depth = depth_nesting_in_marketplace(mUUID); + if (depth == 1) + { + // Options available at the Listing Folder level + items.push_back(std::string("Marketplace Create Listing")); + items.push_back(std::string("Marketplace Associate Listing")); + items.push_back(std::string("Marketplace Check Listing")); + items.push_back(std::string("Marketplace List")); + items.push_back(std::string("Marketplace Unlist")); + if (LLMarketplaceData::instance().isUpdating(mUUID,depth) || ((flags & FIRST_SELECTED_ITEM) == 0)) + { + // During SLM update, disable all marketplace related options + // Also disable all if multiple selected items + disabled_items.push_back(std::string("Marketplace Create Listing")); + disabled_items.push_back(std::string("Marketplace Associate Listing")); + disabled_items.push_back(std::string("Marketplace Check Listing")); + disabled_items.push_back(std::string("Marketplace List")); + disabled_items.push_back(std::string("Marketplace Unlist")); + } + else + { + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + items.push_back(std::string("Marketplace Get Listing")); + } + if (LLMarketplaceData::instance().isListed(mUUID)) + { + disabled_items.push_back(std::string("Marketplace Create Listing")); + disabled_items.push_back(std::string("Marketplace Associate Listing")); + if (LLMarketplaceData::instance().getVersionFolder(mUUID).isNull()) + { + disabled_items.push_back(std::string("Marketplace List")); + disabled_items.push_back(std::string("Marketplace Unlist")); + } + else + { + if (LLMarketplaceData::instance().getActivationState(mUUID)) + { + disabled_items.push_back(std::string("Marketplace List")); + } + else + { + disabled_items.push_back(std::string("Marketplace Unlist")); + } + } + } + else + { + disabled_items.push_back(std::string("Marketplace List")); + disabled_items.push_back(std::string("Marketplace Unlist")); + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + disabled_items.push_back(std::string("Marketplace Get Listing")); + } + } + } + } + if (depth == 2) + { + // Options available at the Version Folder levels and only for folders + LLInventoryCategory* cat = gInventory.getCategory(mUUID); + if (cat && LLMarketplaceData::instance().isListed(cat->getParentUUID())) + { + items.push_back(std::string("Marketplace Activate")); + items.push_back(std::string("Marketplace Deactivate")); + if (LLMarketplaceData::instance().isUpdating(mUUID,depth) || ((flags & FIRST_SELECTED_ITEM) == 0)) + { + // During SLM update, disable all marketplace related options + // Also disable all if multiple selected items + disabled_items.push_back(std::string("Marketplace Activate")); + disabled_items.push_back(std::string("Marketplace Deactivate")); + } + else + { + if (LLMarketplaceData::instance().isVersionFolder(mUUID)) + { + disabled_items.push_back(std::string("Marketplace Activate")); + if (LLMarketplaceData::instance().getActivationState(mUUID)) + { + disabled_items.push_back(std::string("Marketplace Deactivate")); + } + } + else + { + disabled_items.push_back(std::string("Marketplace Deactivate")); + } + } + } + } + + items.push_back(std::string("Marketplace Edit Listing")); + LLUUID listing_folder_id = nested_parent_id(mUUID,depth); + LLUUID version_folder_id = LLMarketplaceData::instance().getVersionFolder(listing_folder_id); + + if (depth >= 2) + { + // Prevent creation of new folders if the max count has been reached on this version folder (active or not) + LLUUID local_version_folder_id = nested_parent_id(mUUID,depth-1); + LLInventoryModel::cat_array_t categories; + LLInventoryModel::item_array_t items; + gInventory.collectDescendents(local_version_folder_id, categories, items, FALSE); + if (categories.size() >= gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) + { + disabled_items.push_back(std::string("New Folder")); + } + } + + // Options available at all levels on items and categories + if (!LLMarketplaceData::instance().isListed(listing_folder_id) || version_folder_id.isNull()) + { + disabled_items.push_back(std::string("Marketplace Edit Listing")); + } + + // Separator + items.push_back(std::string("Marketplace Listings Separator")); +} + + // *TODO: remove this BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const { @@ -1018,6 +1179,7 @@ BOOL LLInvFVBridge::isCOFFolder() const return LLAppearanceMgr::instance().getIsInCOF(mUUID); } +// *TODO : Suppress isInboxFolder() once Merchant Outbox is fully deprecated BOOL LLInvFVBridge::isInboxFolder() const { const LLUUID inbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX, false); @@ -1030,6 +1192,18 @@ BOOL LLInvFVBridge::isInboxFolder() const return gInventory.isObjectDescendentOf(mUUID, inbox_id); } +BOOL LLInvFVBridge::isMarketplaceListingsFolder() const +{ + const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + + if (folder_id.isNull()) + { + return FALSE; + } + + return gInventory.isObjectDescendentOf(mUUID, folder_id); +} + BOOL LLInvFVBridge::isOutboxFolder() const { const LLUUID outbox_id = getOutboxFolder(); @@ -1191,11 +1365,18 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type, case LLAssetType::AT_CATEGORY: if (actual_asset_type == LLAssetType::AT_LINK_FOLDER) { - // Create a link folder handler instead. + // Create a link folder handler instead new_listener = new LLLinkFolderBridge(inventory, root, uuid); - break; } - new_listener = new LLFolderBridge(inventory, root, uuid); + else if (actual_asset_type == LLAssetType::AT_MARKETPLACE_FOLDER) + { + // Create a marketplace folder handler + new_listener = new LLMarketplaceFolderBridge(inventory, root, uuid); + } + else + { + new_listener = new LLFolderBridge(inventory, root, uuid); + } break; case LLAssetType::AT_LINK: case LLAssetType::AT_LINK_FOLDER: @@ -1238,6 +1419,22 @@ void LLInvFVBridge::purgeItem(LLInventoryModel *model, const LLUUID &uuid) } } +void LLInvFVBridge::removeObject(LLInventoryModel *model, const LLUUID &uuid) +{ + // Keep track of the parent + LLInventoryItem* itemp = model->getItem(uuid); + LLUUID parent_id = (itemp ? itemp->getParentUUID() : LLUUID::null); + // Remove the object + model->removeObject(uuid); + // Get the parent updated + if (parent_id.notNull()) + { + LLViewerInventoryCategory* parent_cat = model->getCategory(parent_id); + model->updateCategory(parent_cat); + model->notifyObservers(); + } +} + bool LLInvFVBridge::canShare() const { bool can_share = false; @@ -1268,11 +1465,9 @@ bool LLInvFVBridge::canShare() const bool LLInvFVBridge::canListOnMarketplace() const { -#if ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU - LLInventoryModel * model = getInventoryModel(); - const LLViewerInventoryCategory * cat = model->getCategory(mUUID); + LLViewerInventoryCategory * cat = model->getCategory(mUUID); if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType())) { return false; @@ -1283,16 +1478,6 @@ bool LLInvFVBridge::canListOnMarketplace() const return false; } - if (getOutboxFolder().isNull()) - { - return false; - } - - if (isInboxFolder() || isOutboxFolder()) - { - return false; - } - LLViewerInventoryItem * item = model->getItem(mUUID); if (item) { @@ -1308,16 +1493,11 @@ bool LLInvFVBridge::canListOnMarketplace() const } return true; - -#else - return false; -#endif } -bool LLInvFVBridge::canListOnMarketplaceNow() const +// *TODO : Suppress canListOnOutboxNow() once we deprecate Merchant Outbox completely +bool LLInvFVBridge::canListOnOutboxNow() const { -#if ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU - bool can_list = true; // Do not allow listing while import is in progress @@ -1363,10 +1543,56 @@ bool LLInvFVBridge::canListOnMarketplaceNow() const } return can_list; +} -#else - return false; -#endif +bool LLInvFVBridge::canListOnMarketplaceNow() const +{ + bool can_list = true; + + const LLInventoryObject* obj = getInventoryObject(); + can_list &= (obj != NULL); + + if (can_list) + { + const LLUUID& object_id = obj->getLinkedUUID(); + can_list = object_id.notNull(); + + if (can_list) + { + LLFolderViewFolder * object_folderp = mInventoryPanel.get() ? mInventoryPanel.get()->getFolderByID(object_id) : NULL; + if (object_folderp) + { + can_list = !static_cast<LLFolderBridge*>(object_folderp->getViewModelItem())->isLoading(); + } + } + + if (can_list) + { + std::string error_msg; + LLInventoryModel* model = getInventoryModel(); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplacelistings_id.notNull()) + { + LLViewerInventoryCategory * master_folder = model->getCategory(marketplacelistings_id); + LLInventoryCategory *cat = model->getCategory(mUUID); + if (cat) + { + can_list = can_move_folder_to_marketplace(master_folder, master_folder, cat, error_msg); + } + else + { + LLInventoryItem *item = model->getItem(mUUID); + can_list = (item ? can_move_item_to_marketplace(master_folder, master_folder, item, error_msg) : false); + } + } + else + { + can_list = false; + } + } + } + + return can_list; } LLToolDragAndDrop::ESource LLInvFVBridge::getDragSource() const @@ -1458,7 +1684,6 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) else if ("cut" == action) { cutToClipboard(); - gInventory.removeObject(mUUID); return; } else if ("copy" == action) @@ -1499,6 +1724,14 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); copy_item_to_outbox(itemp, outbox_id, LLUUID::null, LLToolDragAndDrop::getOperationId()); } + else if (("move_to_marketplace_listings" == action) || ("copy_to_marketplace_listings" == action) || ("copy_or_move_to_marketplace_listings" == action)) + { + LLInventoryItem* itemp = model->getItem(mUUID); + if (!itemp) return; + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + // Note: For a single item, if it's not a copy, then it's a move + move_item_to_marketplacelistings(itemp, marketplacelistings_id, ("copy_to_marketplace_listings" == action)); + } else if ("copy_slurl" == action) { LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem()); @@ -1518,6 +1751,11 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action) { doActionOnCurSelectedLandmark(boost::bind(&LLItemBridge::doShowOnMap, this, _1)); } + else if ("marketplace_edit_listing" == action) + { + std::string url = LLMarketplaceData::instance().getListingURL(mUUID); + LLUrlAction::openURL(url); + } } void LLItemBridge::doActionOnCurSelectedLandmark(LLLandmarkList::loaded_callback_t cb) @@ -1983,6 +2221,22 @@ void LLFolderBridge::buildDisplayName() const } } +std::string LLFolderBridge::getLabelSuffix() const +{ + static LLCachedControl<F32> folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); + + if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay()) + { + return llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str()); + } + + return LLInvFVBridge::getLabelSuffix(); +} + +LLFontGL::StyleFlags LLFolderBridge::getLabelStyle() const +{ + return LLFontGL::NORMAL; +} void LLFolderBridge::update() { @@ -2039,6 +2293,11 @@ BOOL LLFolderBridge::isItemRemovable() const return FALSE; } } + + if (isMarketplaceListingsFolder() && LLMarketplaceData::instance().getActivationState(mUUID)) + { + return FALSE; + } return TRUE; } @@ -2174,88 +2433,11 @@ BOOL LLFolderBridge::isClipboardPasteableAsLink() const } -static BOOL can_move_to_outbox(LLInventoryItem* inv_item, std::string& tooltip_msg) -{ - // Collapse links directly to items/folders - LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; - LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem(); - if (linked_item != NULL) - { - inv_item = linked_item; - } - - bool allow_transfer = inv_item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()); - if (!allow_transfer) - { - tooltip_msg = LLTrans::getString("TooltipOutboxNoTransfer"); - return false; - } - -#if BLOCK_WORN_ITEMS_IN_OUTBOX - bool worn = get_is_item_worn(inv_item->getUUID()); - if (worn) - { - tooltip_msg = LLTrans::getString("TooltipOutboxWorn"); - return false; - } -#endif - - bool calling_card = (LLAssetType::AT_CALLINGCARD == inv_item->getType()); - if (calling_card) - { - tooltip_msg = LLTrans::getString("TooltipOutboxCallingCard"); - return false; - } - - return true; -} - - -int get_folder_levels(LLInventoryCategory* inv_cat) -{ - LLInventoryModel::cat_array_t* cats; - LLInventoryModel::item_array_t* items; - gInventory.getDirectDescendentsOf(inv_cat->getUUID(), cats, items); - - int max_child_levels = 0; - - for (S32 i=0; i < cats->size(); ++i) - { - LLInventoryCategory* category = cats->at(i); - max_child_levels = llmax(max_child_levels, get_folder_levels(category)); - } - - return 1 + max_child_levels; -} - -int get_folder_path_length(const LLUUID& ancestor_id, const LLUUID& descendant_id) -{ - int depth = 0; - - if (ancestor_id == descendant_id) return depth; - - const LLInventoryCategory* category = gInventory.getCategory(descendant_id); - - while(category) - { - LLUUID parent_id = category->getParentUUID(); - - if (parent_id.isNull()) break; - - depth++; - - if (parent_id == ancestor_id) return depth; - - category = gInventory.getCategory(parent_id); - } - - LL_WARNS() << "get_folder_path_length() couldn't trace a path from the descendant to the ancestor" << LL_ENDL; - return -1; -} BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, BOOL drop, - std::string& tooltip_msg) + std::string& tooltip_msg, + BOOL user_confirm) { LLInventoryModel* model = getInventoryModel(); @@ -2274,10 +2456,14 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, const LLUUID &cat_id = inv_cat->getUUID(); const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + const LLUUID from_folder_uuid = inv_cat->getParentUUID(); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); const BOOL move_is_from_outbox = model->isObjectDescendentOf(cat_id, outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); + const BOOL move_is_from_marketplacelistings = model->isObjectDescendentOf(cat_id, marketplacelistings_id); // check to make sure source is agent inventory, and is represented there. LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); @@ -2305,6 +2491,18 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, BOOL is_movable = TRUE; + if (is_movable && (marketplacelistings_id == cat_id)) + { + is_movable = FALSE; + tooltip_msg = LLTrans::getString("TooltipOutboxCannotMoveRoot"); + } + if (is_movable && move_is_from_marketplacelistings && LLMarketplaceData::instance().getActivationState(cat_id)) + { + // If the incoming folder is listed and active (and is therefore either the listing or the version folder), + // then moving is *not* allowed + is_movable = FALSE; + tooltip_msg = LLTrans::getString("TooltipOutboxDragActive"); + } if (is_movable && (mUUID == cat_id)) { is_movable = FALSE; @@ -2330,6 +2528,12 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, is_movable = FALSE; // tooltip? } + if (is_movable && (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK)) + { + // One cannot move a folder into a stock folder + is_movable = FALSE; + // tooltip? + } LLInventoryModel::cat_array_t descendent_categories; LLInventoryModel::item_array_t descendent_items; @@ -2397,93 +2601,13 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } } } - if (is_movable && move_is_into_outbox) + + if (is_movable && (move_is_into_outbox || move_is_into_marketplacelistings)) { - const int nested_folder_levels = get_folder_path_length(outbox_id, mUUID) + get_folder_levels(inv_cat); - - if (nested_folder_levels > gSavedSettings.getU32("InventoryOutboxMaxFolderDepth")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxFolderLevels"); - is_movable = FALSE; - } - else - { - int dragged_folder_count = descendent_categories.size(); - int existing_item_count = 0; - int existing_folder_count = 0; - - const LLViewerInventoryCategory * master_folder = model->getFirstDescendantOf(outbox_id, mUUID); - - if (master_folder != NULL) - { - if (model->isObjectDescendentOf(cat_id, master_folder->getUUID())) - { - // Don't use count because we're already inside the same category anyway - dragged_folder_count = 0; - } - else - { - existing_folder_count = 1; // Include the master folder in the count! - - // If we're in the drop operation as opposed to the drag without drop, we are doing a - // single category at a time so don't block based on the total amount of cargo data items - if (drop) - { - dragged_folder_count += 1; - } - else - { - // NOTE: The cargo id's count is a total of categories AND items but we err on the side of - // prevention rather than letting too many folders into the hierarchy of the outbox, - // when we're dragging the item to a new parent - dragged_folder_count += LLToolDragAndDrop::instance().getCargoCount(); - } - } - - // Tally the total number of categories and items inside the master folder - - LLInventoryModel::cat_array_t existing_categories; - LLInventoryModel::item_array_t existing_items; - - model->collectDescendents(master_folder->getUUID(), existing_categories, existing_items, FALSE); - - existing_folder_count += existing_categories.size(); - existing_item_count += existing_items.size(); - } - else - { - // Assume a single category is being dragged to the outbox since we evaluate one at a time - // when not putting them under a parent item. - dragged_folder_count += 1; - } - - const int nested_folder_count = existing_folder_count + dragged_folder_count; - const int nested_item_count = existing_item_count + descendent_items.size(); - - if (nested_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders"); - is_movable = FALSE; - } - else if (nested_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects"); - is_movable = FALSE; - } - - if (is_movable == TRUE) - { - for (S32 i=0; i < descendent_items.size(); ++i) - { - LLInventoryItem* item = descendent_items[i]; - if (!can_move_to_outbox(item, tooltip_msg)) - { - is_movable = FALSE; - break; - } - } - } - } + const LLViewerInventoryCategory * master_folder = (move_is_into_outbox ? model->getFirstDescendantOf(outbox_id, mUUID) : model->getFirstDescendantOf(marketplacelistings_id, mUUID)); + LLViewerInventoryCategory * dest_folder = getCategory(); + S32 bundle_size = (drop ? 1 : LLToolDragAndDrop::instance().getCargoCount()); + is_movable = can_move_folder_to_marketplace(master_folder, dest_folder, inv_cat, tooltip_msg, bundle_size); } if (is_movable) @@ -2526,6 +2650,48 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, if (accept && drop) { + // Dropping in or out of marketplace needs (sometimes) confirmation + if (user_confirm && (move_is_from_marketplacelistings || move_is_into_marketplacelistings)) + { + if (move_is_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(cat_id) || + LLMarketplaceData::instance().isListedAndActive(cat_id))) + { + if (LLMarketplaceData::instance().isListed(cat_id) || LLMarketplaceData::instance().isVersionFolder(cat_id)) + { + // Move the active version folder or listing folder itself outside marketplace listings will unlist the listing so ask that question specifically + LLNotificationsUtil::add("ConfirmMerchantUnlist", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + } + else + { + // Any other case will simply modify but not unlist an active listed listing + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + } + return true; + } + if (move_is_from_marketplacelistings && LLMarketplaceData::instance().isVersionFolder(cat_id)) + { + // Moving the version folder from its location will deactivate it. Ask confirmation. + LLNotificationsUtil::add("ConfirmMerchantClearVersion", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + if (move_is_into_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(mUUID)) + { + // Moving something in an active listed listing will modify it. Ask confirmation. + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + if (move_is_from_marketplacelistings && LLMarketplaceData::instance().isListed(cat_id)) + { + // Moving a whole listing folder will result in archival of SLM data. Ask confirmation. + LLNotificationsUtil::add("ConfirmListingCutOrDelete", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + if (move_is_into_marketplacelistings && !move_is_from_marketplacelistings) + { + LLNotificationsUtil::add("ConfirmMerchantMoveInventory", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropCategoryIntoFolder, this, _1, _2, inv_cat)); + return true; + } + } // Look for any gestures and deactivate them if (move_is_into_trash) { @@ -2551,6 +2717,10 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, { copy_folder_to_outbox(inv_cat, mUUID, cat_id, LLToolDragAndDrop::getOperationId()); } + else if (move_is_into_marketplacelistings) + { + move_folder_to_marketplacelistings(inv_cat, mUUID); + } else { if (model->isObjectDescendentOf(cat_id, model->findCategoryUUIDForType(LLFolderType::FT_INBOX, false))) @@ -2566,11 +2736,38 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, mUUID, move_is_into_trash); } + if (move_is_from_marketplacelistings) + { + // If we are moving a folder at the listing folder level (i.e. its parent is the marketplace listings folder) + if (from_folder_uuid == marketplacelistings_id) + { + // Clear the folder from the marketplace in case it is a listing folder + if (LLMarketplaceData::instance().isListed(cat_id)) + { + LLMarketplaceData::instance().clearListing(cat_id); + } + } + else + { + // If we move from within an active (listed) listing, checks that it's still valid, if not, unlist + LLUUID version_folder_id = LLMarketplaceData::instance().getActiveFolder(from_folder_uuid); + if (version_folder_id.notNull()) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(version_folder_id); + if (!validate_marketplacelistings(cat,NULL)) + { + LLMarketplaceData::instance().activateListing(version_folder_id,false); + } + } + // In all cases, update the listing we moved from so suffix are updated + update_marketplace_category(from_folder_uuid); + } + } } } else if (LLToolDragAndDrop::SOURCE_WORLD == source) { - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -2582,7 +2779,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, } else if (LLToolDragAndDrop::SOURCE_LIBRARY == source) { - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -2952,7 +3149,6 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) else if ("cut" == action) { cutToClipboard(); - gInventory.removeObject(mUUID); return; } else if ("copy" == action) @@ -2980,6 +3176,120 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) restoreItem(); return; } + else if ("marketplace_list" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 1) + { + LLUUID version_folder_id = LLMarketplaceData::instance().getVersionFolder(mUUID); + LLViewerInventoryCategory* cat = gInventory.getCategory(version_folder_id); + mMessage = ""; + if (!validate_marketplacelistings(cat,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3))) + { + LLSD subs; + subs["[ERROR_CODE]"] = mMessage; + LLNotificationsUtil::add("MerchantListingFailed", subs); + } + else + { + LLMarketplaceData::instance().activateListing(mUUID,true); + } + } + return; + } + else if ("marketplace_activate" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 2) + { + LLInventoryCategory* category = gInventory.getCategory(mUUID); + mMessage = ""; + if (!validate_marketplacelistings(category,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3),false,2)) + { + LLSD subs; + subs["[ERROR_CODE]"] = mMessage; + LLNotificationsUtil::add("MerchantFolderActivationFailed", subs); + } + else + { + LLMarketplaceData::instance().setVersionFolder(category->getParentUUID(), mUUID); + } + } + return; + } + else if ("marketplace_unlist" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 1) + { + LLMarketplaceData::instance().activateListing(mUUID,false,1); + } + return; + } + else if ("marketplace_deactivate" == action) + { + if (depth_nesting_in_marketplace(mUUID) == 2) + { + LLInventoryCategory* category = gInventory.getCategory(mUUID); + LLMarketplaceData::instance().setVersionFolder(category->getParentUUID(), LLUUID::null, 1); + } + return; + } + else if ("marketplace_create_listing" == action) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(mUUID); + mMessage = ""; + bool validates = validate_marketplacelistings(cat,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3),false); + if (!validates) + { + mMessage = ""; + validates = validate_marketplacelistings(cat,boost::bind(&LLFolderBridge::gatherMessage, this, _1, _2, _3),true); + if (validates) + { + LLNotificationsUtil::add("MerchantForceValidateListing"); + } + } + + if (!validates) + { + LLSD subs; + subs["[ERROR_CODE]"] = mMessage; + LLNotificationsUtil::add("MerchantListingFailed", subs); + } + else + { + LLMarketplaceData::instance().createListing(mUUID); + } + return; + } + else if ("marketplace_disassociate_listing" == action) + { + LLMarketplaceData::instance().clearListing(mUUID); + return; + } + else if ("marketplace_get_listing" == action) + { + // This is used only to exercise the SLM API but won't be shown to end users + LLMarketplaceData::instance().getListing(mUUID); + return; + } + else if ("marketplace_associate_listing" == action) + { + LLFloaterAssociateListing::show(mUUID); + return; + } + else if ("marketplace_check_listing" == action) + { + LLSD data(mUUID); + LLFloaterReg::showInstance("marketplace_validation", data); + return; + } + else if ("marketplace_edit_listing" == action) + { + std::string url = LLMarketplaceData::instance().getListingURL(mUUID); + if (!url.empty()) + { + LLUrlAction::openURL(url); + } + return; + } #ifndef LL_RELEASE_FOR_DOWNLOAD else if ("delete_system_folder" == action) { @@ -2996,17 +3306,31 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action) const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); copy_folder_to_outbox(cat, outbox_id, cat->getUUID(), LLToolDragAndDrop::getOperationId()); } -#if ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU - else if (isMarketplaceSendAction(action)) + else if (("move_to_marketplace_listings" == action) || ("copy_to_marketplace_listings" == action) || ("copy_or_move_to_marketplace_listings" == action)) { - LL_INFOS() << "Send to marketplace action!" << LL_ENDL; - LLInventoryCategory * cat = gInventory.getCategory(mUUID); if (!cat) return; - - send_to_marketplace(cat); - } -#endif // ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + move_folder_to_marketplacelistings(cat, marketplacelistings_id, ("move_to_marketplace_listings" != action), (("copy_or_move_to_marketplace_listings" == action))); + } +} + +void LLFolderBridge::gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level) +{ + if (log_level >= LLError::LEVEL_ERROR) + { + if (!mMessage.empty()) + { + // Currently, we do not gather all messages as it creates very long alerts + // Users can get to the whole list of errors on a listing using the "Check for Errors" audit button or "Check listing" right click menu + //mMessage += "\n"; + return; + } + // Take the leading spaces out... + std::string::size_type start = message.find_first_not_of(" "); + // Append the message + mMessage += message.substr(start, message.length() - start); + } } void LLFolderBridge::openItem() @@ -3076,25 +3400,24 @@ LLFolderType::EType LLFolderBridge::getPreferredType() const // Icons for folders are based on the preferred type LLUIImagePtr LLFolderBridge::getIcon() const { - LLFolderType::EType preferred_type = LLFolderType::FT_NONE; - LLViewerInventoryCategory* cat = getCategory(); - if(cat) - { - preferred_type = cat->getPreferredType(); - } - return getIcon(preferred_type); + return getFolderIcon(FALSE); } -// static -LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type) +LLUIImagePtr LLFolderBridge::getIconOpen() const { - return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, FALSE)); + return getFolderIcon(TRUE); } -LLUIImagePtr LLFolderBridge::getIconOpen() const +LLUIImagePtr LLFolderBridge::getFolderIcon(BOOL is_open) const { - return LLUI::getUIImage(LLViewerFolderType::lookupIconName(getPreferredType(), TRUE)); + LLFolderType::EType preferred_type = getPreferredType(); + return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, is_open)); +} +// static : use by LLLinkFolderBridge to get the closed type icons +LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type) +{ + return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, FALSE)); } LLUIImagePtr LLFolderBridge::getIconOverlay() const @@ -3106,14 +3429,6 @@ LLUIImagePtr LLFolderBridge::getIconOverlay() const return NULL; } -std::string LLFolderBridge::getLabelSuffix() const -{ - static LLCachedControl<F32> folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); - return mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay() - ? llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str()) - : LLStringUtil::null; -} - BOOL LLFolderBridge::renameItem(const std::string& new_name) { @@ -3197,10 +3512,42 @@ void LLFolderBridge::updateHierarchyCreationDate(time_t date) void LLFolderBridge::pasteFromClipboard() { LLInventoryModel* model = getInventoryModel(); - if(model && isClipboardPasteable()) + if (model && isClipboardPasteable()) { - const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + const BOOL paste_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); + + if (paste_into_marketplacelistings && !LLMarketplaceData::instance().isListed(mUUID) && LLMarketplaceData::instance().isInActiveFolder(mUUID)) + { + // Prompt the user if pasting in a marketplace active version listing (note that pasting right under the listing folder root doesn't need a prompt) + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_pasteFromClipboard, this, _1, _2)); + } + else + { + // Otherwise just do the paste + perform_pasteFromClipboard(); + } + } +} + +// Callback for pasteFromClipboard if DAMA required... +void LLFolderBridge::callback_pasteFromClipboard(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + perform_pasteFromClipboard(); + } +} + +void LLFolderBridge::perform_pasteFromClipboard() +{ + LLInventoryModel* model = getInventoryModel(); + if (model && isClipboardPasteable()) + { + const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); @@ -3208,58 +3555,70 @@ void LLFolderBridge::pasteFromClipboard() const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); const BOOL move_is_into_favorites = (mUUID == favorites_id); std::vector<LLUUID> objects; LLClipboard::instance().pasteFromClipboard(objects); - - if (move_is_into_outbox) - { - LLFolderViewItem * outbox_itemp = mInventoryPanel.get()->getItemByID(mUUID); - - if (outbox_itemp) - { - LLToolDragAndDrop::instance().setCargoCount(objects.size()); - - BOOL can_list = TRUE; - - for (std::vector<LLUUID>::const_iterator iter = objects.begin(); - (iter != objects.end()) && (can_list == TRUE); - ++iter) - { - const LLUUID& item_id = (*iter); - LLInventoryItem *item = model->getItem(item_id); - - if (item) - { - MASK mask = 0x0; - BOOL drop = FALSE; - EDragAndDropType cargo_type = LLViewerAssetType::lookupDragAndDropType(item->getActualType()); - void * cargo_data = (void *) item; - std::string tooltip_msg; - - can_list = outbox_itemp->getViewModelItem()->dragOrDrop(mask, drop, cargo_type, cargo_data, tooltip_msg); - } - } - - LLToolDragAndDrop::instance().resetCargoCount(); - - if (can_list == FALSE) - { - // Notify user of failure somehow -- play error sound? modal dialog? - return; - } + + LLViewerInventoryCategory * dest_folder = getCategory(); + if (move_is_into_outbox || move_is_into_marketplacelistings) + { + std::string error_msg; + const LLViewerInventoryCategory * master_folder = (move_is_into_outbox ? model->getFirstDescendantOf(outbox_id, mUUID) : model->getFirstDescendantOf(marketplacelistings_id, mUUID)); + int index = 0; + for (std::vector<LLUUID>::const_iterator iter = objects.begin(); iter != objects.end(); ++iter) + { + const LLUUID& item_id = (*iter); + LLInventoryItem *item = model->getItem(item_id); + LLInventoryCategory *cat = model->getCategory(item_id); + + if (item && !can_move_item_to_marketplace(master_folder, dest_folder, item, error_msg, objects.size() - index, true)) + { + break; + } + if (cat && !can_move_folder_to_marketplace(master_folder, dest_folder, cat, error_msg, objects.size() - index, true, true)) + { + break; + } + ++index; } + if (!error_msg.empty()) + { + LLSD subs; + subs["[ERROR_CODE]"] = error_msg; + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return; + } } - + else + { + // Check that all items can be moved into that folder : for the moment, only stock folder mismatch is checked + for (std::vector<LLUUID>::const_iterator iter = objects.begin(); iter != objects.end(); ++iter) + { + const LLUUID& item_id = (*iter); + LLInventoryItem *item = model->getItem(item_id); + LLInventoryCategory *cat = model->getCategory(item_id); + + if ((item && !dest_folder->acceptItem(item)) || (cat && (dest_folder->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK))) + { + std::string error_msg = LLTrans::getString("TooltipOutboxMixedStock"); + LLSD subs; + subs["[ERROR_CODE]"] = error_msg; + LLNotificationsUtil::add("StockPasteFailed", subs); + return; + } + } + } + const LLUUID parent_id(mUUID); - + for (std::vector<LLUUID>::const_iterator iter = objects.begin(); iter != objects.end(); ++iter) { const LLUUID& item_id = (*iter); - + LLInventoryItem *item = model->getItem(item_id); LLInventoryObject *obj = model->getObject(item_id); if (obj) @@ -3287,21 +3646,44 @@ void LLFolderBridge::pasteFromClipboard() LLViewerInventoryCategory* vicat = (LLViewerInventoryCategory *) model->getCategory(item_id); llassert(vicat); if (vicat) - { - //changeCategoryParent() implicity calls dirtyFilter - changeCategoryParent(model, vicat, parent_id, FALSE); + { + // Clear the cut folder from the marketplace if it is a listing folder + if (LLMarketplaceData::instance().isListed(item_id)) + { + LLMarketplaceData::instance().clearListing(item_id); + } + if (move_is_into_marketplacelistings) + { + move_folder_to_marketplacelistings(vicat, parent_id); + } + else + { + //changeCategoryParent() implicity calls dirtyFilter + changeCategoryParent(model, vicat, parent_id, FALSE); + } } } else - { - LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); - llassert(viitem); - if (viitem) - { - //changeItemParent() implicity calls dirtyFilter - changeItemParent(model, viitem, parent_id, FALSE); - } - } + { + LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); + llassert(viitem); + if (viitem) + { + if (move_is_into_marketplacelistings) + { + if (!move_item_to_marketplacelistings(viitem, parent_id)) + { + // Stop pasting into the marketplace as soon as we get an error + break; + } + } + else + { + //changeItemParent() implicity calls dirtyFilter + changeItemParent(model, viitem, parent_id, FALSE); + } + } + } } else { @@ -3312,22 +3694,45 @@ void LLFolderBridge::pasteFromClipboard() llassert(vicat); if (vicat) { - copy_inventory_category(model, vicat, parent_id); + if (move_is_into_marketplacelistings) + { + move_folder_to_marketplacelistings(vicat, parent_id, true); + } + else + { + copy_inventory_category(model, vicat, parent_id); + } } } - else - { - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - parent_id, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); - } - } - } - } + else + { + LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); + llassert(viitem); + if (viitem) + { + if (move_is_into_marketplacelistings) + { + if (!move_item_to_marketplacelistings(viitem, parent_id, true)) + { + // Stop pasting into the marketplace as soon as we get an error + break; + } + } + else + { + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + parent_id, + std::string(), + LLPointer<LLInventoryCallback>(NULL)); + } + } + } + } + } + } // Change mode to paste for next paste LLClipboard::instance().setCutMode(false); } @@ -3340,14 +3745,16 @@ void LLFolderBridge::pasteLinkFromClipboard() { const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { // Notify user of failure somehow -- play error sound? modal dialog? return; @@ -3407,9 +3814,10 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items LLInventoryModel* model = getInventoryModel(); llassert(model != NULL); - const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); - const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); - const LLUUID favorites = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); + const LLUUID &lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); + const LLUUID &favorites = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + const LLUUID &marketplace_listings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); if (lost_and_found_id == mUUID) { @@ -3427,6 +3835,35 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { disabled_items.push_back(std::string("New Folder")); } + if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + if (LLMarketplaceData::instance().isUpdating(mUUID)) + { + disabled_items.push_back(std::string("New Folder")); + disabled_items.push_back(std::string("Rename")); + disabled_items.push_back(std::string("Cut")); + disabled_items.push_back(std::string("Copy")); + disabled_items.push_back(std::string("Paste")); + disabled_items.push_back(std::string("Delete")); + } + } + if (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + disabled_items.push_back(std::string("New Folder")); + disabled_items.push_back(std::string("New Script")); + disabled_items.push_back(std::string("New Note")); + disabled_items.push_back(std::string("New Gesture")); + disabled_items.push_back(std::string("New Clothes")); + disabled_items.push_back(std::string("New Body Parts")); + } + if (marketplace_listings_id == mUUID) + { + disabled_items.push_back(std::string("New Folder")); + disabled_items.push_back(std::string("Rename")); + disabled_items.push_back(std::string("Cut")); + disabled_items.push_back(std::string("Delete")); + } if(trash_id == mUUID) { // This is the trash. @@ -3456,12 +3893,14 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { items.push_back(std::string("New Folder")); } - - items.push_back(std::string("New Script")); - items.push_back(std::string("New Note")); - items.push_back(std::string("New Gesture")); - items.push_back(std::string("New Clothes")); - items.push_back(std::string("New Body Parts")); + if (!isMarketplaceListingsFolder()) + { + items.push_back(std::string("New Script")); + items.push_back(std::string("New Note")); + items.push_back(std::string("New Gesture")); + items.push_back(std::string("New Clothes")); + items.push_back(std::string("New Body Parts")); + } } getClipboardEntries(false, items, disabled_items, flags); } @@ -3495,9 +3934,9 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items LLIsType is_object( LLAssetType::AT_OBJECT ); LLIsType is_gesture( LLAssetType::AT_GESTURE ); - if (checkFolderForContentsOfType(model, is_wearable) || - checkFolderForContentsOfType(model, is_object) || - checkFolderForContentsOfType(model, is_gesture) ) + if (checkFolderForContentsOfType(model, is_wearable) || + checkFolderForContentsOfType(model, is_object) || + checkFolderForContentsOfType(model, is_gesture) ) { mWearables=TRUE; } @@ -3509,7 +3948,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items disabled_items.push_back(std::string("Delete System Folder")); } - if (!isOutboxFolder()) + if (!isOutboxFolder() && !isMarketplaceListingsFolder()) { items.push_back(std::string("Share")); if (!canShare()) @@ -3519,7 +3958,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items } // Add menu items that are dependent on the contents of the folder. LLViewerInventoryCategory* category = (LLViewerInventoryCategory *) model->getCategory(mUUID); - if (category) + if (category && (marketplace_listings_id != mUUID)) { uuid_vec_t folders; folders.push_back(category->getUUID()); @@ -3538,8 +3977,8 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items { // it's all on its way - add an observer, and the inventory will call done for us when everything is here. gInventory.addObserver(fetch); - } -} + } + } } void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t& items, menuentry_vec_t& disabled_items) @@ -3556,6 +3995,12 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t& if (isItemInTrash()) return; if (!isAgentInventory()) return; if (isOutboxFolder()) return; + + if (!isItemRemovable()) + { + disabled_items.push_back(std::string("Delete")); + } + if (isMarketplaceListingsFolder()) return; LLFolderType::EType type = category->getPreferredType(); const bool is_system_folder = LLFolderType::lookupIsProtectedType(type); @@ -3575,11 +4020,6 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t& } } - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Delete")); - } - #ifndef LL_RELEASE_FOR_DOWNLOAD if (LLFolderType::lookupIsProtectedType(type)) { @@ -3868,6 +4308,121 @@ void LLFolderBridge::modifyOutfit(BOOL append) LLAppearanceMgr::instance().wearInventoryCategory( cat, FALSE, append ); } +// +=================================================+ +// | LLMarketplaceFolderBridge | +// +=================================================+ + +// LLMarketplaceFolderBridge is a specialized LLFolderBridge for use in Marketplace Inventory panels +LLMarketplaceFolderBridge::LLMarketplaceFolderBridge(LLInventoryPanel* inventory, + LLFolderView* root, + const LLUUID& uuid) : +LLFolderBridge(inventory, root, uuid) +{ + m_depth = depth_nesting_in_marketplace(mUUID); + m_stockCountCache = COMPUTE_STOCK_NOT_EVALUATED; +} + +LLUIImagePtr LLMarketplaceFolderBridge::getIcon() const +{ + return getMarketplaceFolderIcon(FALSE); +} + +LLUIImagePtr LLMarketplaceFolderBridge::getIconOpen() const +{ + return getMarketplaceFolderIcon(TRUE); +} + +LLUIImagePtr LLMarketplaceFolderBridge::getMarketplaceFolderIcon(BOOL is_open) const +{ + LLFolderType::EType preferred_type = getPreferredType(); + if (!LLMarketplaceData::instance().isUpdating(getUUID())) + { + // Skip computation (expensive) if we're waiting for updates. Use the old value in that case. + m_depth = depth_nesting_in_marketplace(mUUID); + } + if ((preferred_type == LLFolderType::FT_NONE) && (m_depth == 2)) + { + // We override the type when in the marketplace listings folder and only for version folder + preferred_type = LLFolderType::FT_MARKETPLACE_VERSION; + } + return LLUI::getUIImage(LLViewerFolderType::lookupIconName(preferred_type, is_open)); +} + +std::string LLMarketplaceFolderBridge::getLabelSuffix() const +{ + static LLCachedControl<F32> folder_loading_message_delay(gSavedSettings, "FolderLoadingMessageWaitTime", 0.5f); + + if (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= folder_loading_message_delay()) + { + return llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str()); + } + + std::string suffix = ""; + // Listing folder case + if (LLMarketplaceData::instance().isListed(getUUID())) + { + suffix = llformat("%d",LLMarketplaceData::instance().getListingID(getUUID())); + if (suffix.empty()) + { + suffix = LLTrans::getString("MarketplaceNoID"); + } + suffix = " (" + suffix + ")"; + if (LLMarketplaceData::instance().getActivationState(getUUID())) + { + suffix += " (" + LLTrans::getString("MarketplaceLive") + ")"; + } + } + // Version folder case + else if (LLMarketplaceData::instance().isVersionFolder(getUUID())) + { + suffix += " (" + LLTrans::getString("MarketplaceActive") + ")"; + } + // Add stock amount + bool updating = LLMarketplaceData::instance().isUpdating(getUUID()); + if (!updating) + { + // Skip computation (expensive) if we're waiting for update anyway. Use the old value in that case. + m_stockCountCache = compute_stock_count(getUUID()); + } + if (m_stockCountCache == 0) + { + suffix += " (" + LLTrans::getString("MarketplaceNoStock") + ")"; + } + else if (m_stockCountCache != COMPUTE_STOCK_INFINITE) + { + if (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + suffix += " (" + LLTrans::getString("MarketplaceStock"); + } + else + { + suffix += " (" + LLTrans::getString("MarketplaceMax"); + } + if (m_stockCountCache == COMPUTE_STOCK_NOT_EVALUATED) + { + suffix += "=" + LLTrans::getString("MarketplaceUpdating") + ")"; + } + else + { + suffix += "=" + llformat("%d", m_stockCountCache) + ")"; + } + } + // Add updating suffix + if (updating) + { + suffix += " (" + LLTrans::getString("MarketplaceUpdating") + ")"; + } + return LLInvFVBridge::getLabelSuffix() + suffix; +} + +LLFontGL::StyleFlags LLMarketplaceFolderBridge::getLabelStyle() const +{ + return (LLMarketplaceData::instance().getActivationState(getUUID()) ? LLFontGL::BOLD : LLFontGL::NORMAL); +} + + + + // helper stuff bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv* move_inv) { @@ -3988,12 +4543,35 @@ void LLFolderBridge::dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_c } } +// Callback for drop item if DAMA required... +void LLFolderBridge::callback_dropItemIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryItem* inv_item) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + std::string tooltip_msg; + dragItemIntoFolder(inv_item, TRUE, tooltip_msg, FALSE); + } +} + +// Callback for drop category if DAMA required... +void LLFolderBridge::callback_dropCategoryIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryCategory* inv_category) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + std::string tooltip_msg; + dragCategoryIntoFolder(inv_category, TRUE, tooltip_msg, FALSE); + } +} + // This is used both for testing whether an item can be dropped // into the folder, as well as performing the actual drop, depending // if drop == TRUE. BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, - std::string& tooltip_msg) + std::string& tooltip_msg, + BOOL user_confirm) { LLInventoryModel* model = getInventoryModel(); @@ -4011,7 +4589,9 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false); const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); + const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); + const LLUUID from_folder_uuid = inv_item->getParentUUID(); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_favorites = (mUUID == favorites_id); @@ -4020,6 +4600,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id); const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); const BOOL move_is_from_outbox = model->isObjectDescendentOf(inv_item->getUUID(), outbox_id); + const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); + const BOOL move_is_from_marketplacelistings = model->isObjectDescendentOf(inv_item->getUUID(), marketplacelistings_id); LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); BOOL accept = FALSE; @@ -4073,59 +4655,45 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, //-------------------------------------------------------------------------------- // Determine if item can be moved & dropped - // + // Note: if user_confirm is false, we already went through those accept logic test and can skip them accept = TRUE; - if (!is_movable) + if (user_confirm && !is_movable) { accept = FALSE; } - else if ((mUUID == inv_item->getParentUUID()) && !move_is_into_favorites) + else if (user_confirm && (mUUID == inv_item->getParentUUID()) && !move_is_into_favorites) { accept = FALSE; } - else if (move_is_into_current_outfit || move_is_into_outfit) + else if (user_confirm && (move_is_into_current_outfit || move_is_into_outfit)) { accept = can_move_to_outfit(inv_item, move_is_into_current_outfit); } - else if (move_is_into_favorites || move_is_into_landmarks) + else if (user_confirm && (move_is_into_favorites || move_is_into_landmarks)) { accept = can_move_to_landmarks(inv_item); } - else if (move_is_into_outbox) + else if (user_confirm && (move_is_into_outbox || move_is_into_marketplacelistings)) { - accept = can_move_to_outbox(inv_item, tooltip_msg); - - if (accept) - { - const LLViewerInventoryCategory * master_folder = model->getFirstDescendantOf(outbox_id, mUUID); - - int existing_item_count = LLToolDragAndDrop::instance().getCargoCount(); - - if (master_folder != NULL) - { - LLInventoryModel::cat_array_t existing_categories; - LLInventoryModel::item_array_t existing_items; - - gInventory.collectDescendents(master_folder->getUUID(), existing_categories, existing_items, FALSE); - - existing_item_count += existing_items.size(); - } - - if (existing_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) - { - tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects"); - accept = FALSE; - } - } + const LLViewerInventoryCategory * master_folder = (move_is_into_outbox ? model->getFirstDescendantOf(outbox_id, mUUID) : model->getFirstDescendantOf(marketplacelistings_id, mUUID)); + LLViewerInventoryCategory * dest_folder = getCategory(); + accept = can_move_item_to_marketplace(master_folder, dest_folder, inv_item, tooltip_msg, LLToolDragAndDrop::instance().getCargoCount() - LLToolDragAndDrop::instance().getCargoIndex()); } + // Check that the folder can accept this item based on folder/item type compatibility (e.g. stock folder compatibility) + if (user_confirm && accept) + { + LLViewerInventoryCategory * dest_folder = getCategory(); + accept = dest_folder->acceptItem(inv_item); + } + LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); // Check whether the item being dragged from active inventory panel // passes the filter of the destination panel. - if (accept && active_panel && use_filter) + if (user_confirm && accept && active_panel && use_filter) { LLFolderViewItem* fv_item = active_panel->getItemByID(inv_item->getUUID()); if (!fv_item) return false; @@ -4145,9 +4713,25 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // RN: a better solution would be to deselect automatically when an item is moved // and then select any item that is dropped only in the panel that it is dropped in if (active_panel && (destination_panel != active_panel)) - { - active_panel->unSelectAll(); - } + { + active_panel->unSelectAll(); + } + // Dropping in or out of marketplace needs (sometimes) confirmation + if (user_confirm && (move_is_from_marketplacelistings || move_is_into_marketplacelistings)) + { + if ((move_is_from_marketplacelistings && (LLMarketplaceData::instance().isInActiveFolder(inv_item->getUUID()) + || LLMarketplaceData::instance().isListedAndActive(inv_item->getUUID()))) || + (move_is_into_marketplacelistings && LLMarketplaceData::instance().isInActiveFolder(mUUID))) + { + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropItemIntoFolder, this, _1, _2, inv_item)); + return true; + } + if (move_is_into_marketplacelistings && !move_is_from_marketplacelistings) + { + LLNotificationsUtil::add("ConfirmMerchantMoveInventory", LLSD(), LLSD(), boost::bind(&LLFolderBridge::callback_dropItemIntoFolder, this, _1, _2, inv_item)); + return true; + } + } //-------------------------------------------------------------------------------- // Destination folder logic @@ -4160,7 +4744,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, LLFolderViewItem* itemp = destination_panel->getRootFolder()->getDraggingOverItem(); if (itemp) { - LLUUID srcItemId = inv_item->getUUID(); + LLUUID srcItemId = inv_item->getUUID(); LLUUID destItemId = static_cast<LLFolderViewModelItemInventory*>(itemp->getViewModelItem())->getUUID(); LLFavoritesOrderStorage::instance().rearrangeFavoriteLandmarks(srcItemId, destItemId); } @@ -4178,6 +4762,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { dropToOutfit(inv_item, move_is_into_current_outfit); } + // MERCHANT OUTBOX folder + // Move the item else if (move_is_into_outbox) { if (move_is_from_outbox) @@ -4189,6 +4775,12 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, copy_item_to_outbox(inv_item, mUUID, LLUUID::null, LLToolDragAndDrop::getOperationId()); } } + // MARKETPLACE LISTINGS folder + // Move the item + else if (move_is_into_marketplacelistings) + { + move_item_to_marketplacelistings(inv_item, mUUID); + } // NORMAL or TRASH folder // (move the item, restamp if into trash) else @@ -4205,8 +4797,22 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, mUUID, move_is_into_trash); } - - // + + if (move_is_from_marketplacelistings) + { + // If we move from an active (listed) listing, checks that it's still valid, if not, unlist + LLUUID version_folder_id = LLMarketplaceData::instance().getActiveFolder(from_folder_uuid); + if (version_folder_id.notNull()) + { + LLViewerInventoryCategory* cat = gInventory.getCategory(version_folder_id); + if (!validate_marketplacelistings(cat,NULL)) + { + LLMarketplaceData::instance().activateListing(version_folder_id,false); + } + } + } + + // //-------------------------------------------------------------------------------- } } @@ -4255,7 +4861,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { accept = FALSE; } - else if (move_is_into_outbox) + else if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -4293,7 +4899,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, } else if(LLToolDragAndDrop::SOURCE_NOTECARD == source) { - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -4327,7 +4933,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, { accept = TRUE; - if (move_is_into_outbox) + if (move_is_into_outbox || move_is_into_marketplacelistings) { tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); accept = FALSE; @@ -4500,6 +5106,12 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -4567,6 +5179,12 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { if (isItemInTrash()) @@ -4642,6 +5260,12 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { if(isItemInTrash()) @@ -4934,6 +5558,12 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -5066,6 +5696,25 @@ void LLNotecardBridge::openItem() } } +void LLNotecardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) +{ + LL_DEBUGS() << "LLNotecardBridge::buildContextMenu()" << LL_ENDL; + + if (isMarketplaceListingsFolder()) + { + menuentry_vec_t items; + menuentry_vec_t disabled_items; + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + hide_context_entries(menu, items, disabled_items); + } + else + { + LLItemBridge::buildContextMenu(menu, flags); + } +} + // +=================================================+ // | LLGestureBridge | // +=================================================+ @@ -5201,6 +5850,12 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -5255,6 +5910,12 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { if(isItemInTrash()) @@ -5514,6 +6175,12 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Share")); @@ -5736,6 +6403,12 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { items.push_back(std::string("Delete")); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { // FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere BOOL can_open = ((flags & SUPPRESS_OPEN_ITEM) != SUPPRESS_OPEN_ITEM); @@ -6036,6 +6709,12 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { addOutboxContextMenuOptions(flags, items, disabled_items); } + else if (isMarketplaceListingsFolder()) + { + addMarketplaceContextMenuOptions(flags, items, disabled_items); + items.push_back(std::string("Properties")); + getClipboardEntries(false, items, disabled_items, flags); + } else { items.push_back(std::string("Properties")); diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index da33e8e68069a05d43a211ce02ad992def7c6d54..7e7cf9c7dd5b1f87fbb6a8dd504ff0fbdb9dd6fa 100755 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -77,6 +77,7 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory bool canShare() const; bool canListOnMarketplace() const; + bool canListOnOutboxNow() const; bool canListOnMarketplaceNow() const; //-------------------------------------------------------------------- @@ -115,7 +116,7 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory virtual void move(LLFolderViewModelItem* new_parent_bridge) {} virtual BOOL isItemCopyable() const { return FALSE; } virtual BOOL copyToClipboard() const; - virtual BOOL cutToClipboard() const; + virtual BOOL cutToClipboard(); virtual BOOL isClipboardPasteable() const; virtual BOOL isClipboardPasteableAsLink() const; virtual void pasteFromClipboard() {} @@ -147,6 +148,9 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory virtual void addOutboxContextMenuOptions(U32 flags, menuentry_vec_t &items, menuentry_vec_t &disabled_items); + virtual void addMarketplaceContextMenuOptions(U32 flags, + menuentry_vec_t &items, + menuentry_vec_t &disabled_items); protected: LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid); @@ -161,6 +165,7 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory BOOL isInboxFolder() const; // true if COF or descendant of marketplace inbox BOOL isOutboxFolderDirectParent() const; + BOOL isMarketplaceListingsFolder() const; // true if descendant of Marketplace listings folder const LLUUID getOutboxFolder() const; virtual BOOL isItemPermissive() const; @@ -173,6 +178,9 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory const LLUUID& new_parent, BOOL restamp); void removeBatchNoCheck(std::vector<LLFolderViewModelItem*>& batch); + + BOOL callback_cutToClipboard(const LLSD& notification, const LLSD& response); + BOOL perform_cutToClipboard(); public: BOOL isOutboxFolder() const; // true if COF or descendant of marketplace outbox @@ -188,6 +196,7 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory mutable std::string mSearchableName; void purgeItem(LLInventoryModel *model, const LLUUID &uuid); + void removeObject(LLInventoryModel *model, const LLUUID &uuid); virtual void buildDisplayName() const {} }; @@ -264,8 +273,10 @@ class LLFolderBridge : public LLInvFVBridge mIsLoading(false) {} - BOOL dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, std::string& tooltip_msg); - BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category, BOOL drop, std::string& tooltip_msg); + BOOL dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop, std::string& tooltip_msg, BOOL user_confirm = TRUE); + BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category, BOOL drop, std::string& tooltip_msg, BOOL user_confirm = TRUE); + void callback_dropItemIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryItem* inv_item); + void callback_dropCategoryIntoFolder(const LLSD& notification, const LLSD& response, LLInventoryCategory* inv_category); virtual void buildDisplayName() const; @@ -280,10 +291,9 @@ class LLFolderBridge : public LLInvFVBridge virtual LLUIImagePtr getIcon() const; virtual LLUIImagePtr getIconOpen() const; virtual LLUIImagePtr getIconOverlay() const; - static LLUIImagePtr getIcon(LLFolderType::EType preferred_type); - virtual std::string getLabelSuffix() const; + virtual LLFontGL::StyleFlags getLabelStyle() const; virtual BOOL renameItem(const std::string& new_name); @@ -355,12 +365,17 @@ class LLFolderBridge : public LLInvFVBridge static LLHandle<LLFolderBridge> sSelf; static void staticFolderOptionsMenu(); -private: +protected: + void callback_pasteFromClipboard(const LLSD& notification, const LLSD& response); + void perform_pasteFromClipboard(); + void gatherMessage(std::string& message, S32 depth, LLError::ELevel log_level); + LLUIImagePtr getFolderIcon(BOOL is_open) const; bool mCallingCards; bool mWearables; bool mIsLoading; LLTimer mTimeSinceRequestStart; + std::string mMessage; LLRootHandle<LLFolderBridge> mHandle; }; @@ -441,6 +456,7 @@ class LLNotecardBridge : public LLItemBridge const LLUUID& uuid) : LLItemBridge(inventory, root, uuid) {} virtual void openItem(); + virtual void buildContextMenu(LLMenuGL& menu, U32 flags); }; class LLGestureBridge : public LLItemBridge @@ -484,6 +500,7 @@ class LLObjectBridge : public LLItemBridge virtual LLUIImagePtr getIcon() const; virtual void performAction(LLInventoryModel* model, std::string action); virtual void openItem(); + virtual BOOL isItemWearable() const { return TRUE; } virtual std::string getLabelSuffix() const; virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual BOOL renameItem(const std::string& new_name); @@ -516,6 +533,7 @@ class LLWearableBridge : public LLItemBridge virtual LLUIImagePtr getIcon() const; virtual void performAction(LLInventoryModel* model, std::string action); virtual void openItem(); + virtual BOOL isItemWearable() const { return TRUE; } virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual std::string getLabelSuffix() const; virtual BOOL renameItem(const std::string& new_name); @@ -669,6 +687,31 @@ class LLRecentInventoryBridgeBuilder : public LLInventoryFolderViewModelBuilder U32 flags = 0x00) const; }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Marketplace Inventory Panel related classes +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLMarketplaceFolderBridge : public LLFolderBridge +{ +public: + // Overloads some display related methods specific to folders in a marketplace floater context + LLMarketplaceFolderBridge(LLInventoryPanel* inventory, + LLFolderView* root, + const LLUUID& uuid); + + virtual LLUIImagePtr getIcon() const; + virtual LLUIImagePtr getIconOpen() const; + virtual std::string getLabelSuffix() const; + virtual LLFontGL::StyleFlags getLabelStyle() const; + +private: + LLUIImagePtr getMarketplaceFolderIcon(BOOL is_open) const; + // Those members are mutable because they are cached variablse to speed up display, not a state variables + mutable S32 m_depth; + mutable S32 m_stockCountCache; +}; + + void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment, bool replace = false); diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index c66e9da4a94fefa43284f522809480a49f7ddd7a..3ed876af8779ba04afe0ea8028c569f166abc7c8 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -33,6 +33,8 @@ #include "llfolderviewitem.h" #include "llinventorymodel.h" #include "llinventorymodelbackgroundfetch.h" +#include "llinventoryfunctions.h" +#include "llmarketplacefunctions.h" #include "llviewercontrol.h" #include "llfolderview.h" #include "llinventorybridge.h" @@ -136,12 +138,64 @@ bool LLInventoryFilter::checkFolder(const LLUUID& folder_id) const } // when applying a filter, matching folders get their contents downloaded first - if (mFilterSubString.size() + if (isNotDefault() && !gInventory.isCategoryComplete(folder_id)) { LLInventoryModelBackgroundFetch::instance().start(folder_id); } + // Marketplace folder filtering + const U32 filterTypes = mFilterOps.mFilterTypes; + const U32 marketplace_filter = FILTERTYPE_MARKETPLACE_ACTIVE | FILTERTYPE_MARKETPLACE_INACTIVE | + FILTERTYPE_MARKETPLACE_UNASSOCIATED | FILTERTYPE_MARKETPLACE_LISTING_FOLDER | + FILTERTYPE_NO_MARKETPLACE_ITEMS; + if (filterTypes & marketplace_filter) + { + S32 depth = depth_nesting_in_marketplace(folder_id); + + if (filterTypes & FILTERTYPE_NO_MARKETPLACE_ITEMS) + { + if (depth >= 0) + { + return false; + } + } + + if (filterTypes & FILTERTYPE_MARKETPLACE_LISTING_FOLDER) + { + if (depth > 1) + { + return false; + } + } + + if (depth > 0) + { + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + if (filterTypes & FILTERTYPE_MARKETPLACE_ACTIVE) + { + if (!LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } + } + else if (filterTypes & FILTERTYPE_MARKETPLACE_INACTIVE) + { + if (!LLMarketplaceData::instance().isListed(listing_uuid) || LLMarketplaceData::instance().getActivationState(listing_uuid)) + { + return false; + } + } + else if (filterTypes & FILTERTYPE_MARKETPLACE_UNASSOCIATED) + { + if (LLMarketplaceData::instance().isListed(listing_uuid)) + { + return false; + } + } + } + } + // show folder links LLViewerInventoryItem* item = gInventory.getItem(folder_id); if (item && item->getActualType() == LLAssetType::AT_LINK_FOLDER) @@ -501,6 +555,40 @@ void LLInventoryFilter::setFilterEmptySystemFolders() mFilterOps.mFilterTypes |= FILTERTYPE_EMPTYFOLDERS; } +void LLInventoryFilter::setFilterMarketplaceActiveFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_ACTIVE; +} + +void LLInventoryFilter::setFilterMarketplaceInactiveFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_INACTIVE; +} + +void LLInventoryFilter::setFilterMarketplaceUnassociatedFolders() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_UNASSOCIATED; +} + +void LLInventoryFilter::setFilterMarketplaceListingFolders(bool select_only_listing_folders) +{ + if (select_only_listing_folders) + { + mFilterOps.mFilterTypes |= FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + setModified(FILTER_MORE_RESTRICTIVE); + } + else + { + mFilterOps.mFilterTypes &= ~FILTERTYPE_MARKETPLACE_LISTING_FOLDER; + setModified(FILTER_LESS_RESTRICTIVE); + } +} + +void LLInventoryFilter::setFilterNoMarketplaceFolder() +{ + mFilterOps.mFilterTypes |= FILTERTYPE_NO_MARKETPLACE_ITEMS; +} + void LLInventoryFilter::setFilterUUID(const LLUUID& object_id) { if (mFilterOps.mFilterUUID == LLUUID::null) diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index 5e18ad4d20d5eda28161824f26ba45920b592a51..abc4ae347cb1e76e356d8d23de7dab822f04c72d 100755 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -52,7 +52,12 @@ class LLInventoryFilter : public LLFolderViewFilter FILTERTYPE_UUID = 0x1 << 2, // find the object with UUID and any links to it FILTERTYPE_DATE = 0x1 << 3, // search by date range FILTERTYPE_WEARABLE = 0x1 << 4, // search by wearable type - FILTERTYPE_EMPTYFOLDERS = 0x1 << 5 // pass if folder is not a system folder to be hidden if + FILTERTYPE_EMPTYFOLDERS = 0x1 << 5, // pass if folder is not a system folder to be hidden if empty + FILTERTYPE_MARKETPLACE_ACTIVE = 0x1 << 6, // pass if folder is a marketplace active folder + FILTERTYPE_MARKETPLACE_INACTIVE = 0x1 << 7, // pass if folder is a marketplace inactive folder + FILTERTYPE_MARKETPLACE_UNASSOCIATED = 0x1 << 8, // pass if folder is a marketplace non associated (no market ID) folder + FILTERTYPE_MARKETPLACE_LISTING_FOLDER = 0x1 << 9, // pass iff folder is a listing folder + FILTERTYPE_NO_MARKETPLACE_ITEMS = 0x1 << 10 // pass iff folder is not under the marketplace }; enum EFilterDateDirection @@ -73,7 +78,8 @@ class LLInventoryFilter : public LLFolderViewFilter SO_NAME = 0, // Sort inventory by name SO_DATE = 0x1, // Sort inventory by date SO_FOLDERS_BY_NAME = 0x1 << 1, // Force folder sort by name - SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2 // Force system folders to be on top + SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2,// Force system folders to be on top + SO_FOLDERS_BY_WEIGHT = 0x1 << 3, // Force folder sort by weight, usually, amount of some elements in their descendents }; struct FilterOps @@ -170,6 +176,11 @@ class LLInventoryFilter : public LLFolderViewFilter void setFilterUUID(const LLUUID &object_id); void setFilterWearableTypes(U64 types); void setFilterEmptySystemFolders(); + void setFilterMarketplaceActiveFolders(); + void setFilterMarketplaceInactiveFolders(); + void setFilterMarketplaceUnassociatedFolders(); + void setFilterMarketplaceListingFolders(bool select_only_listing_folders); + void setFilterNoMarketplaceFolder(); void updateFilterTypes(U64 types, U64& current_types); void setFilterSubString(const std::string& string); diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 605a63aa33525cdbf90aea140ac113e61c5e158c..218590e5c3d87514b87da36788c292ce638be869 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -60,6 +60,7 @@ #include "llinventorypanel.h" #include "lllineeditor.h" #include "llmarketplacenotifications.h" +#include "llmarketplacefunctions.h" #include "llmenugl.h" #include "llnotificationsutil.h" #include "llpanelmaininventory.h" @@ -90,6 +91,126 @@ BOOL LLInventoryState::sWearNewClothing = FALSE; LLUUID LLInventoryState::sWearNewClothingTransactionID; +std::list<LLUUID> LLInventoryAction::sMarketplaceFolders; + +// Helper function : callback to update a folder after inventory action happened in the background +void update_folder_cb(const LLUUID& dest_folder) +{ + LLViewerInventoryCategory* dest_cat = gInventory.getCategory(dest_folder); + gInventory.updateCategory(dest_cat); + gInventory.notifyObservers(); +} + +// Helper function : Count only the copyable items, i.e. skip the stock items (which are no copy) +S32 count_copyable_items(LLInventoryModel::item_array_t& items) +{ + S32 count = 0; + for (LLInventoryModel::item_array_t::const_iterator it = items.begin(); it != items.end(); ++it) + { + LLViewerInventoryItem* item = *it; + if (item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + count++; + } + } + return count; +} + +// Helper function : Count only the non-copyable items, i.e. the stock items, skip the others +S32 count_stock_items(LLInventoryModel::item_array_t& items) +{ + S32 count = 0; + for (LLInventoryModel::item_array_t::const_iterator it = items.begin(); it != items.end(); ++it) + { + LLViewerInventoryItem* item = *it; + if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + count++; + } + } + return count; +} + +// Helper function : Count the number of stock folders +S32 count_stock_folders(LLInventoryModel::cat_array_t& categories) +{ + S32 count = 0; + for (LLInventoryModel::cat_array_t::const_iterator it = categories.begin(); it != categories.end(); ++it) + { + LLInventoryCategory* cat = *it; + if (cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + count++; + } + } + return count; +} + +// Helper funtion : Count the number of items (not folders) in the descending hierarchy +S32 count_descendants_items(const LLUUID& cat_id) +{ + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_id,cat_array,item_array); + + S32 count = item_array->size(); + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLViewerInventoryCategory* category = *iter; + count += count_descendants_items(category->getUUID()); + } + + return count; +} + +// Helper function : Returns true if the hierarchy contains nocopy items +bool contains_nocopy_items(const LLUUID& id) +{ + LLInventoryCategory* cat = gInventory.getCategory(id); + + if (cat) + { + // Get the content + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(id,cat_array,item_array); + + // Check all the items: returns true upon encountering a nocopy item + for (LLInventoryModel::item_array_t::iterator iter = item_array->begin(); iter != item_array->end(); iter++) + { + LLInventoryItem* item = *iter; + LLViewerInventoryItem * inv_item = (LLViewerInventoryItem *) item; + if (!inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + return true; + } + } + + // Check all the sub folders recursively + for (LLInventoryModel::cat_array_t::iterator iter = cat_array->begin(); iter != cat_array->end(); iter++) + { + LLViewerInventoryCategory* cat = *iter; + if (contains_nocopy_items(cat->getUUID())) + { + return true; + } + } + } + else + { + LLInventoryItem* item = gInventory.getItem(id); + LLViewerInventoryItem * inv_item = (LLViewerInventoryItem *) item; + if (!inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + return true; + } + } + + // Exit without meeting a nocopy item + return false; +} // Generates a string containing the path to the item specified by // item_id. @@ -112,6 +233,139 @@ void append_path(const LLUUID& id, std::string& path) path.append(temp); } +void update_marketplace_folder_hierarchy(const LLUUID cat_id) +{ + // When changing the marketplace status of a folder, the only thing that needs to happen is + // for all observers of the folder to, possibly, change the display label of the folder + // so that's the only thing we change on the update mask. + gInventory.addChangedMask(LLInventoryObserver::LABEL, cat_id); + + // Update all descendent folders down + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_id,cat_array,item_array); + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + update_marketplace_folder_hierarchy(category->getUUID()); + } + return; +} + +void update_marketplace_category(const LLUUID& cur_uuid, bool perform_consistency_enforcement) +{ + // When changing the marketplace status of an item, we usually have to change the status of all + // folders in the same listing. This is because the display of each folder is affected by the + // overall status of the whole listing. + // Consequently, the only way to correctly update an item anywhere in the marketplace is to + // update the whole listing from its listing root. + // This is not as bad as it seems as we only update folders, not items, and the folder nesting depth + // is limited to 4. + // We also take care of degenerated cases so we don't update all folders in the inventory by mistake. + + if (cur_uuid.isNull()) + { + return; + } + + // Grab marketplace listing data for this item + S32 depth = depth_nesting_in_marketplace(cur_uuid); + if (depth > 0) + { + // Retrieve the listing uuid this object is in + LLUUID listing_uuid = nested_parent_id(cur_uuid, depth); + + // Verify marketplace data consistency for this listing + if (perform_consistency_enforcement && LLMarketplaceData::instance().isListed(listing_uuid)) + { + LLUUID version_folder_uuid = LLMarketplaceData::instance().getVersionFolder(listing_uuid); + S32 version_depth = depth_nesting_in_marketplace(version_folder_uuid); + if (version_folder_uuid.notNull() && (!gInventory.isObjectDescendentOf(version_folder_uuid, listing_uuid) || (version_depth != 2))) + { + LL_INFOS("SLM") << "Unlist and clear version folder as the version folder is not at the right place anymore!!" << LL_ENDL; + LLMarketplaceData::instance().setVersionFolder(listing_uuid, LLUUID::null,1); + } + else if (version_folder_uuid.notNull() && LLMarketplaceData::instance().getActivationState(version_folder_uuid) && (count_descendants_items(version_folder_uuid) == 0) && !LLMarketplaceData::instance().isUpdating(version_folder_uuid,version_depth)) + { + LL_INFOS("SLM") << "Unlist as the version folder is empty of any item!!" << LL_ENDL; + LLNotificationsUtil::add("AlertMerchantVersionFolderEmpty"); + LLMarketplaceData::instance().activateListing(listing_uuid, false,1); + } + } + + // Check if the count on hand needs to be updated on SLM + if (perform_consistency_enforcement && (compute_stock_count(listing_uuid) != LLMarketplaceData::instance().getCountOnHand(listing_uuid))) + { + LLMarketplaceData::instance().updateCountOnHand(listing_uuid,1); + } + // Update all descendents starting from the listing root + update_marketplace_folder_hierarchy(listing_uuid); + } + else if (depth == 0) + { + // If this is the marketplace listings root itself, update all descendents + if (gInventory.getCategory(cur_uuid)) + { + update_marketplace_folder_hierarchy(cur_uuid); + } + } + else + { + // If the folder is outside the marketplace listings root, clear its SLM data if needs be + if (perform_consistency_enforcement && LLMarketplaceData::instance().isListed(cur_uuid)) + { + LL_INFOS("SLM") << "Disassociate as the listing folder is not under the marketplace folder anymore!!" << LL_ENDL; + LLMarketplaceData::instance().clearListing(cur_uuid); + } + // Update all descendents if this is a category + if (gInventory.getCategory(cur_uuid)) + { + update_marketplace_folder_hierarchy(cur_uuid); + } + } + + return; +} + +// Iterate through the marketplace and flag for label change all categories that countain a stock folder (i.e. stock folders and embedding folders up the hierarchy) +void update_all_marketplace_count(const LLUUID& cat_id) +{ + // Get all descendent folders down + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_id,cat_array,item_array); + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + if (category->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + // Listing containing stock folders needs to be updated but not others + // Note: we take advantage of the fact that stock folder *do not* contain sub folders to avoid a recursive call here + update_marketplace_category(category->getUUID()); + } + else + { + // Explore the contained folders recursively + update_all_marketplace_count(category->getUUID()); + } + } +} + +void update_all_marketplace_count() +{ + // Get the marketplace root and launch the recursive exploration + const LLUUID marketplace_listings_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (!marketplace_listings_uuid.isNull()) + { + update_all_marketplace_count(marketplace_listings_uuid); + } + return; +} + void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name) { LLViewerInventoryCategory* cat; @@ -132,7 +386,8 @@ void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::s void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, - const LLUUID& root_copy_id) + const LLUUID& root_copy_id, + bool move_no_copy_items ) { // Create the initial folder LLUUID new_cat_uuid = gInventory.createNewCategory(parent_id, LLFolderType::FT_NONE, cat->getName()); @@ -145,19 +400,42 @@ void copy_inventory_category(LLInventoryModel* model, LLInventoryModel::cat_array_t* cat_array; LLInventoryModel::item_array_t* item_array; gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + + // If root_copy_id is null, tell the marketplace model we'll be waiting for new items to be copied over for this folder + if (root_copy_id.isNull()) + { + LLMarketplaceData::instance().setValidationWaiting(root_id,count_descendants_items(cat->getUUID())); + } // Copy all the items LLInventoryModel::item_array_t item_array_copy = *item_array; for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) { LLInventoryItem* item = *iter; - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - new_cat_uuid, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); + LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(update_folder_cb, new_cat_uuid)); + + if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + // If the item is nocopy, we do nothing or, optionally, move it + if (move_no_copy_items) + { + // Reparent the item + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) item; + gInventory.changeItemParent(viewer_inv_item, new_cat_uuid, true); + } + // Decrement the count in root_id since that one item won't be copied over + LLMarketplaceData::instance().decrementValidationWaiting(root_id); + } + else + { + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + new_cat_uuid, + std::string(), + cb); + } } // Copy all the folders @@ -167,7 +445,7 @@ void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* category = *iter; if (category->getUUID() != root_id) { - copy_inventory_category(model, category, new_cat_uuid, root_id); + copy_inventory_category(model, category, new_cat_uuid, root_id, move_no_copy_items); } } } @@ -509,14 +787,22 @@ void open_outbox() LLFloaterReg::showInstance("outbox"); } -LLUUID create_folder_in_outbox_for_item(LLInventoryItem* item, const LLUUID& destFolderId, S32 operation_id) +void open_marketplace_listings() +{ + LLFloaterReg::showInstance("marketplace_listings"); +} + +// Create a new folder in destFolderId with the same name as the item name and return the uuid of the new folder +// Note: this is used locally in various situation where we need to wrap an item into a special folder +LLUUID create_folder_for_item(LLInventoryItem* item, const LLUUID& destFolderId) { llassert(item); llassert(destFolderId.notNull()); LLUUID created_folder_id = gInventory.createNewCategory(destFolderId, LLFolderType::FT_NONE, item->getName()); gInventory.notifyObservers(); - + + // *TODO : Create different notifications for the various cases LLNotificationsUtil::add("OutboxFolderCreated"); return created_folder_id; @@ -532,8 +818,7 @@ void move_to_outbox_cb_action(const LLSD& payload) // when moving item directly into outbox create folder with that name if (dest_folder_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false)) { - S32 operation_id = payload["operation_id"].asInteger(); - dest_folder_id = create_folder_in_outbox_for_item(viitem, dest_folder_id, operation_id); + dest_folder_id = create_folder_for_item(viitem, dest_folder_id); } LLUUID parent = viitem->getParentUUID(); @@ -604,7 +889,7 @@ void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LL // when moving item directly into outbox create folder with that name if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false)) { - dest_folder = create_folder_in_outbox_for_item(inv_item, dest_folder, operation_id); + dest_folder = create_folder_for_item(inv_item, dest_folder); } copy_inventory_item(gAgent.getID(), @@ -634,7 +919,7 @@ void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 // when moving item directly into outbox create folder with that name if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false)) { - dest_folder = create_folder_in_outbox_for_item(inv_item, dest_folder, operation_id); + dest_folder = create_folder_for_item(inv_item, dest_folder); } LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; @@ -674,6 +959,1003 @@ void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_fold open_outbox(); } +///---------------------------------------------------------------------------- +// Marketplace functions +// +// Handles Copy and Move to or within the Marketplace listings folder. +// Handles creation of stock folders, nesting of listings and version folders, +// permission checking and listings validation. +///---------------------------------------------------------------------------- + +S32 depth_nesting_in_marketplace(LLUUID cur_uuid) +{ + // Get the marketplace listings root, exit with -1 (i.e. not under the marketplace listings root) if none + const LLUUID marketplace_listings_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplace_listings_uuid.isNull()) + { + return -1; + } + // If not a descendent of the marketplace listings root, then the nesting depth is -1 by definition + if (!gInventory.isObjectDescendentOf(cur_uuid, marketplace_listings_uuid)) + { + return -1; + } + + // Iterate through the parents till we hit the marketplace listings root + // Note that the marketplace listings root itself will return 0 + S32 depth = 0; + LLInventoryObject* cur_object = gInventory.getObject(cur_uuid); + while (cur_uuid != marketplace_listings_uuid) + { + depth++; + cur_uuid = cur_object->getParentUUID(); + cur_object = gInventory.getCategory(cur_uuid); + } + return depth; +} + +// Returns the UUID of the marketplace listing this object is in +LLUUID nested_parent_id(LLUUID cur_uuid, S32 depth) +{ + if (depth < 1) + { + // For objects outside the marketplace listings root (or root itself), we return a NULL UUID + return LLUUID::null; + } + else if (depth == 1) + { + // Just under the root, we return the passed UUID itself if it's a folder, NULL otherwise (not a listing) + LLViewerInventoryCategory* cat = gInventory.getCategory(cur_uuid); + return (cat ? cur_uuid : LLUUID::null); + } + + // depth > 1 + LLInventoryObject* cur_object = gInventory.getObject(cur_uuid); + while (depth > 1) + { + depth--; + cur_uuid = cur_object->getParentUUID(); + cur_object = gInventory.getCategory(cur_uuid); + } + return cur_uuid; +} + +S32 compute_stock_count(LLUUID cat_uuid, bool force_count /* false */) +{ + // Handle the case of the folder being a stock folder immediately + LLViewerInventoryCategory* cat = gInventory.getCategory(cat_uuid); + if (!cat) + { + // Not a category so no stock count to speak of + return COMPUTE_STOCK_INFINITE; + } + if (cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + if (cat->getVersion() == LLViewerInventoryCategory::VERSION_UNKNOWN) + { + // If the folder is not completely fetched, we do not want to return any confusing value that could lead to unlisting + // "COMPUTE_STOCK_NOT_EVALUATED" denotes that a stock folder has a count that cannot be evaluated at this time (folder not up to date) + return COMPUTE_STOCK_NOT_EVALUATED; + } + // Note: stock folders are *not* supposed to have nested subfolders so we stop recursion here but we count only items (subfolders will be ignored) + // Note: we *always* give a stock count for stock folders, it's useful even if the listing is unassociated + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_uuid,cat_array,item_array); + return item_array->size(); + } + + // When force_count is true, we do not do any verification of the marketplace status and simply compute + // the stock amount based on the descendent hierarchy. This is used specifically when creating a listing. + if (!force_count) + { + // Grab marketplace data for this folder + S32 depth = depth_nesting_in_marketplace(cat_uuid); + LLUUID listing_uuid = nested_parent_id(cat_uuid, depth); + if (!LLMarketplaceData::instance().isListed(listing_uuid)) + { + // If not listed, the notion of stock is meaningless so it won't be computed for any level + return COMPUTE_STOCK_INFINITE; + } + + LLUUID version_folder_uuid = LLMarketplaceData::instance().getVersionFolder(listing_uuid); + // Handle the case of the first 2 levels : listing and version folders + if (depth == 1) + { + if (version_folder_uuid.notNull()) + { + // If there is a version folder, the stock value for the listing is the version folder stock + return compute_stock_count(version_folder_uuid, true); + } + else + { + // If there's no version folder associated, the notion of stock count has no meaning + return COMPUTE_STOCK_INFINITE; + } + } + else if (depth == 2) + { + if (version_folder_uuid.notNull() && (version_folder_uuid != cat_uuid)) + { + // If there is a version folder but we're not it, our stock count is meaningless + return COMPUTE_STOCK_INFINITE; + } + } + } + + // In all other cases, the stock count is the min of stock folders count found in the descendents + // "COMPUTE_STOCK_NOT_EVALUATED" denotes that a stock folder in the hierarchy has a count that cannot be evaluated at this time (folder not up to date) + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat_uuid,cat_array,item_array); + + // "COMPUTE_STOCK_INFINITE" denotes a folder that doesn't countain any stock folders in its descendents + S32 curr_count = COMPUTE_STOCK_INFINITE; + + // Note: marketplace listings have a maximum depth nesting of 4 + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + S32 count = compute_stock_count(category->getUUID(), true); + if ((curr_count == COMPUTE_STOCK_INFINITE) || ((count != COMPUTE_STOCK_INFINITE) && (count < curr_count))) + { + curr_count = count; + } + } + + return curr_count; +} + +// local helper +bool can_move_to_marketplace(LLInventoryItem* inv_item, std::string& tooltip_msg, bool resolve_links) +{ + // Collapse links directly to items/folders + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; + LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem(); + LLViewerInventoryCategory * linked_category = viewer_inv_item->getLinkedCategory(); + + // Linked items and folders cannot be put for sale + if (linked_category || linked_item) + { + tooltip_msg = LLTrans::getString("TooltipOutboxLinked"); + return false; + } + + // A category is always considered as passing... + if (linked_category != NULL) + { + return true; + } + + // Take the linked item if necessary + if (linked_item != NULL) + { + inv_item = linked_item; + } + + // Check that the agent has transfer permission on the item: this is required as a resident cannot + // put on sale items she cannot transfer. Proceed with move if we have permission. + bool allow_transfer = inv_item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()); + if (!allow_transfer) + { + tooltip_msg = LLTrans::getString("TooltipOutboxNoTransfer"); + return false; + } + + // Check worn/not worn status: worn items cannot be put on the marketplace + bool worn = get_is_item_worn(inv_item->getUUID()); + if (worn) + { + tooltip_msg = LLTrans::getString("TooltipOutboxWorn"); + return false; + } + + // Check library status: library items cannot be put on the marketplace + if (!gInventory.isObjectDescendentOf(inv_item->getUUID(), gInventory.getRootFolderID())) + { + tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory"); + return false; + } + + // Check type: for the moment, calling cards cannot be put on the marketplace + bool calling_card = (LLAssetType::AT_CALLINGCARD == inv_item->getType()); + if (calling_card) + { + tooltip_msg = LLTrans::getString("TooltipOutboxCallingCard"); + return false; + } + + return true; +} + +// local helper +// Returns the max tree length (in folder nodes) down from the argument folder +int get_folder_levels(LLInventoryCategory* inv_cat) +{ + LLInventoryModel::cat_array_t* cats; + LLInventoryModel::item_array_t* items; + gInventory.getDirectDescendentsOf(inv_cat->getUUID(), cats, items); + + int max_child_levels = 0; + + for (S32 i=0; i < cats->size(); ++i) + { + LLInventoryCategory* category = cats->at(i); + max_child_levels = llmax(max_child_levels, get_folder_levels(category)); + } + + return 1 + max_child_levels; +} + +// local helper +// Returns the distance (in folder nodes) between the ancestor and its descendant. Returns -1 if not related. +int get_folder_path_length(const LLUUID& ancestor_id, const LLUUID& descendant_id) +{ + int depth = 0; + + if (ancestor_id == descendant_id) return depth; + + const LLInventoryCategory* category = gInventory.getCategory(descendant_id); + + while (category) + { + LLUUID parent_id = category->getParentUUID(); + + if (parent_id.isNull()) break; + + depth++; + + if (parent_id == ancestor_id) return depth; + + category = gInventory.getCategory(parent_id); + } + + LL_WARNS("SLM") << "get_folder_path_length() couldn't trace a path from the descendant to the ancestor" << LL_ENDL; + return -1; +} + +// local helper +// Returns true if all items within the argument folder are fit for sale, false otherwise +bool has_correct_permissions_for_sale(LLInventoryCategory* cat, std::string& error_msg) +{ + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + + LLInventoryModel::item_array_t item_array_copy = *item_array; + + for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) + { + LLInventoryItem* item = *iter; + if (!can_move_to_marketplace(item, error_msg, false)) + { + return false; + } + } + + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + if (!has_correct_permissions_for_sale(category, error_msg)) + { + return false; + } + } + return true; +} + +// Returns true if inv_item can be dropped in dest_folder, a folder nested in marketplace listings (or merchant inventory) under the root_folder root +// If returns is false, tooltip_msg contains an error message to display to the user (localized and all). +// bundle_size is the amount of sibling items that are getting moved to the marketplace at the same time. +bool can_move_item_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryItem* inv_item, std::string& tooltip_msg, S32 bundle_size, bool from_paste) +{ + // Check stock folder type matches item type in marketplace listings or merchant outbox (even if of no use there for the moment) + LLViewerInventoryCategory* view_folder = dynamic_cast<LLViewerInventoryCategory*>(dest_folder); + bool move_in_stock = (view_folder && (view_folder->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK)); + bool accept = (view_folder && view_folder->acceptItem(inv_item)); + if (!accept) + { + tooltip_msg = LLTrans::getString("TooltipOutboxMixedStock"); + } + + // Check that the item has the right type and permissions to be sold on the marketplace + if (accept) + { + accept = can_move_to_marketplace(inv_item, tooltip_msg, true); + } + + // Check that the total amount of items won't violate the max limit on the marketplace + if (accept) + { + // If the dest folder is a stock folder, we do not count the incoming items toward the total (stock items are seen as one) + int existing_item_count = (move_in_stock ? 0 : bundle_size); + + // If the dest folder is a stock folder, we do assume that the incoming items are also stock items (they should anyway) + int existing_stock_count = (move_in_stock ? bundle_size : 0); + + int existing_folder_count = 0; + + // Get the version folder: that's where the counts start from + const LLViewerInventoryCategory * version_folder = ((root_folder && (root_folder != dest_folder)) ? gInventory.getFirstDescendantOf(root_folder->getUUID(), dest_folder->getUUID()) : NULL); + + if (version_folder) + { + if (!from_paste && gInventory.isObjectDescendentOf(inv_item->getUUID(), version_folder->getUUID())) + { + // Clear those counts or they will be counted twice because we're already inside the version category + existing_item_count = 0; + } + + LLInventoryModel::cat_array_t existing_categories; + LLInventoryModel::item_array_t existing_items; + + gInventory.collectDescendents(version_folder->getUUID(), existing_categories, existing_items, FALSE); + + existing_item_count += count_copyable_items(existing_items) + count_stock_folders(existing_categories); + existing_stock_count += count_stock_items(existing_items); + existing_folder_count += existing_categories.size(); + + // If the incoming item is a nocopy (stock) item, we need to consider that it will create a stock folder + if (!inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && !move_in_stock) + { + // Note : we do not assume that all incoming items are nocopy of different kinds... + existing_folder_count += 1; + } + } + + if (existing_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects", args); + accept = false; + } + else if (existing_stock_count > gSavedSettings.getU32("InventoryOutboxMaxStockItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxStockItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyStockItems", args); + accept = false; + } + else if (existing_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders", args); + accept = false; + } + } + + return accept; +} + +// Returns true if inv_cat can be dropped in dest_folder, a folder nested in marketplace listings (or merchant inventory) under the root_folder root +// If returns is false, tooltip_msg contains an error message to display to the user (localized and all). +// bundle_size is the amount of sibling items that are getting moved to the marketplace at the same time. +bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryCategory* inv_cat, std::string& tooltip_msg, S32 bundle_size, bool check_items, bool from_paste) +{ + bool accept = true; + + // Compute the nested folders level we'll add into with that incoming folder + int incoming_folder_depth = get_folder_levels(inv_cat); + // Compute the nested folders level we're inserting ourselves in + // Note: add 1 when inserting under a listing folder as we need to take the root listing folder in the count + int insertion_point_folder_depth = (root_folder ? get_folder_path_length(root_folder->getUUID(), dest_folder->getUUID()) + 1 : 0); + + // Get the version folder: that's where the folders and items counts start from + const LLViewerInventoryCategory * version_folder = (insertion_point_folder_depth >= 2 ? gInventory.getFirstDescendantOf(root_folder->getUUID(), dest_folder->getUUID()) : NULL); + + // Compare the whole with the nested folders depth limit + // Note: substract 2 as we leave root and version folder out of the count threshold + if ((incoming_folder_depth + insertion_point_folder_depth - 2) > (S32)(gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"))) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxFolderLevels", args); + accept = false; + } + + if (accept) + { + LLInventoryModel::cat_array_t descendent_categories; + LLInventoryModel::item_array_t descendent_items; + gInventory.collectDescendents(inv_cat->getUUID(), descendent_categories, descendent_items, FALSE); + + int dragged_folder_count = descendent_categories.size() + bundle_size; // Note: We assume that we're moving a bunch of folders in. That might be wrong... + int dragged_item_count = count_copyable_items(descendent_items) + count_stock_folders(descendent_categories); + int dragged_stock_count = count_stock_items(descendent_items); + int existing_item_count = 0; + int existing_stock_count = 0; + int existing_folder_count = 0; + + if (version_folder) + { + if (!from_paste && gInventory.isObjectDescendentOf(inv_cat->getUUID(), version_folder->getUUID())) + { + // Clear those counts or they will be counted twice because we're already inside the version category + dragged_folder_count = 0; + dragged_item_count = 0; + dragged_stock_count = 0; + } + + // Tally the total number of categories and items inside the root folder + LLInventoryModel::cat_array_t existing_categories; + LLInventoryModel::item_array_t existing_items; + gInventory.collectDescendents(version_folder->getUUID(), existing_categories, existing_items, FALSE); + + existing_folder_count += existing_categories.size(); + existing_item_count += count_copyable_items(existing_items) + count_stock_folders(existing_categories); + existing_stock_count += count_stock_items(existing_items); + } + + const int total_folder_count = existing_folder_count + dragged_folder_count; + const int total_item_count = existing_item_count + dragged_item_count; + const int total_stock_count = existing_stock_count + dragged_stock_count; + + if (total_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders", args); + accept = false; + } + else if (total_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects", args); + accept = false; + } + else if (total_stock_count > gSavedSettings.getU32("InventoryOutboxMaxStockItemCount")) + { + LLStringUtil::format_map_t args; + U32 amount = gSavedSettings.getU32("InventoryOutboxMaxStockItemCount"); + args["[AMOUNT]"] = llformat("%d",amount); + tooltip_msg = LLTrans::getString("TooltipOutboxTooManyStockItems", args); + accept = false; + } + + // Now check that each item in the folder can be moved in the marketplace + if (accept && check_items) + { + for (S32 i=0; i < descendent_items.size(); ++i) + { + LLInventoryItem* item = descendent_items[i]; + if (!can_move_to_marketplace(item, tooltip_msg, false)) + { + accept = false; + break; + } + } + } + } + + return accept; +} + +bool move_item_to_marketplacelistings(LLInventoryItem* inv_item, LLUUID dest_folder, bool copy) +{ + // Get the marketplace listings depth of the destination folder, exit with error if not under marketplace + S32 depth = depth_nesting_in_marketplace(dest_folder); + if (depth < 0) + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + LLTrans::getString("Marketplace Error Not Merchant"); + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + // We will collapse links into items/folders + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; + LLViewerInventoryCategory * linked_category = viewer_inv_item->getLinkedCategory(); + + if (linked_category != NULL) + { + // Move the linked folder directly + return move_folder_to_marketplacelistings(linked_category, dest_folder, copy); + } + else + { + // Grab the linked item if any + LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem(); + viewer_inv_item = (linked_item != NULL ? linked_item : viewer_inv_item); + + // If we want to copy but the item is no copy, fail silently (this is a common case that doesn't warrant notification) + if (copy && !viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + return false; + } + + // Check that the agent has transfer permission on the item: this is required as a resident cannot + // put on sale items she cannot transfer. Proceed with move if we have permission. + std::string error_msg; + if (can_move_to_marketplace(inv_item, error_msg, true)) + { + // When moving an isolated item, we might need to create the folder structure to support it + if (depth == 0) + { + // We need a listing folder + dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_NONE, viewer_inv_item->getName()); + depth++; + } + if (depth == 1) + { + // We need a version folder + dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_NONE, viewer_inv_item->getName()); + depth++; + } + LLViewerInventoryCategory* dest_cat = gInventory.getCategory(dest_folder); + if (!viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && + (dest_cat->getPreferredType() != LLFolderType::FT_MARKETPLACE_STOCK)) + { + // We need to create a stock folder to move a no copy item + dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_MARKETPLACE_STOCK, viewer_inv_item->getName()); + dest_cat = gInventory.getCategory(dest_folder); + depth++; + } + + // Verify we can have this item in that destination category + if (!dest_cat->acceptItem(viewer_inv_item)) + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + LLTrans::getString("Marketplace Error Not Accepted"); + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + // Get the parent folder of the moved item : we may have to update it + LLUUID src_folder = viewer_inv_item->getParentUUID(); + + if (copy) + { + // Copy the item + LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(update_folder_cb, dest_folder)); + copy_inventory_item( + gAgent.getID(), + viewer_inv_item->getPermissions().getOwner(), + viewer_inv_item->getUUID(), + dest_folder, + std::string(), + cb); + } + else + { + // Reparent the item + gInventory.changeItemParent(viewer_inv_item, dest_folder, true); + } + } + else + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + error_msg; + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + } + + open_marketplace_listings(); + return true; +} + +bool move_folder_to_marketplacelistings(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, bool copy, bool move_no_copy_items) +{ + // Check that we have adequate permission on all items being moved. Proceed if we do. + std::string error_msg; + if (has_correct_permissions_for_sale(inv_cat, error_msg)) + { + // Get the destination folder + LLViewerInventoryCategory* dest_cat = gInventory.getCategory(dest_folder); + + // Check it's not a stock folder + if (dest_cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + LLTrans::getString("Marketplace Error Not Accepted"); + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + // Get the parent folder of the moved item : we may have to update it + LLUUID src_folder = inv_cat->getParentUUID(); + + LLViewerInventoryCategory * viewer_inv_cat = (LLViewerInventoryCategory *) inv_cat; + if (copy) + { + // Copy the folder + copy_inventory_category(&gInventory, viewer_inv_cat, dest_folder, LLUUID::null, move_no_copy_items); + } + else + { + // Reparent the folder + gInventory.changeCategoryParent(viewer_inv_cat, dest_folder, false); + // Check the destination folder recursively for no copy items and promote the including folders if any + validate_marketplacelistings(dest_cat); + } + + // Update the modified folders + update_marketplace_category(src_folder); + update_marketplace_category(dest_folder); + gInventory.notifyObservers(); + } + else + { + LLSD subs; + subs["[ERROR_CODE]"] = LLTrans::getString("Marketplace Error Prefix") + error_msg; + LLNotificationsUtil::add("MerchantPasteFailed", subs); + return false; + } + + open_marketplace_listings(); + return true; +} + +bool sort_alpha(const LLViewerInventoryCategory* cat1, const LLViewerInventoryCategory* cat2) +{ + return cat1->getName().compare(cat2->getName()) < 0; +} + +void dump_trace(std::string& message, S32 depth, LLError::ELevel log_level) +{ + llinfos << "validate_marketplacelistings : error = "<< log_level << ", depth = " << depth << ", message = " << message << llendl; +} + +// Make all relevant business logic checks on the marketplace listings starting with the folder as argument. +// This function does no deletion of listings but a mere audit and raises issues to the user (through the +// optional callback cb). It also returns a boolean, true if things validate, false if issues are raised. +// The only inventory changes that are done is to move and sort folders containing no-copy items to stock folders. +bool validate_marketplacelistings(LLInventoryCategory* cat, validation_callback_t cb, bool fix_hierarchy, S32 depth) +{ +#if 0 + // Used only for debug + if (!cb) + { + cb = boost::bind(&dump_trace, _1, _2, _3); + } +#endif + // Folder is valid unless issue is raised + bool result = true; + + // Get the type and the depth of the folder + LLViewerInventoryCategory * viewer_cat = (LLViewerInventoryCategory *) (cat); + const LLFolderType::EType folder_type = cat->getPreferredType(); + if (depth < 0) + { + // If the depth argument was not provided, evaluate the depth directly + depth = depth_nesting_in_marketplace(cat->getUUID()); + } + if (depth < 0) + { + // If the folder is not under the marketplace listings root, we run validation as if it was a listing folder and prevent any hierarchy fix + // This allows the function to be used to pre-validate a folder anywhere in the inventory + depth = 1; + fix_hierarchy = false; + } + + // Set the indentation for print output (typically, audit button in marketplace folder floater) + std::string indent; + for (int i = 1; i < depth; i++) + { + indent += " "; + } + + // Check out that version folders are marketplace ready + if (depth == 2) + { + std::string message; + // Note: if we fix the hierarchy, we want to check the items individually, hence the last argument here + if (!can_move_folder_to_marketplace(cat, cat, cat, message, 0, fix_hierarchy)) + { + result = false; + if (cb) + { + message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error") + " " + message; + cb(message,depth,LLError::LEVEL_ERROR); + } + } + } + + // Check out that stock folders are at the right level + if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth <= 2)) + { + if (fix_hierarchy) + { + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Warning") + " " + LLTrans::getString("Marketplace Validation Warning Stock"); + cb(message,depth,LLError::LEVEL_WARN); + } + // Nest the stock folder one level deeper in a normal folder and restart from there + LLUUID parent_uuid = cat->getParentUUID(); + LLUUID folder_uuid = gInventory.createNewCategory(parent_uuid, LLFolderType::FT_NONE, cat->getName()); + LLInventoryCategory* new_cat = gInventory.getCategory(folder_uuid); + gInventory.changeCategoryParent(viewer_cat, folder_uuid, false); + result &= validate_marketplacelistings(new_cat, cb, fix_hierarchy, depth + 1); + return result; + } + else + { + result = false; + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error") + " " + LLTrans::getString("Marketplace Validation Warning Stock"); + cb(message,depth,LLError::LEVEL_ERROR); + } + } + } + + // Item sorting and validation : sorting and moving the various stock items is complicated as the set of constraints is high + // We need to: + // * separate non stock items, stock items per types in different folders + // * have stock items nested at depth 2 at least + // * never ever move the non-stock items + + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + + // We use a composite (type,permission) key on that map to store UUIDs of items of same (type,permissions) + std::map<U32, std::vector<LLUUID> > items_vector; + + // Parse the items and create vectors of item UUIDs sorting copyable items and stock items of various types + bool has_bad_items = false; + LLInventoryModel::item_array_t item_array_copy = *item_array; + for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) + { + LLInventoryItem* item = *iter; + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) item; + + // Test but skip items that shouldn't be there to start with, raise an error message for those + std::string error_msg; + if (!can_move_to_marketplace(item, error_msg, false)) + { + has_bad_items = true; + if (cb && fix_hierarchy) + { + std::string message = indent + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Error") + " " + error_msg; + cb(message,depth,LLError::LEVEL_ERROR); + } + continue; + } + // Update the appropriate vector item for that type + LLInventoryType::EType type = LLInventoryType::IT_COUNT; // Default value for non stock items + U32 perms = 0; + if (!viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + // Get the item type for stock items + type = viewer_inv_item->getInventoryType(); + perms = viewer_inv_item->getPermissions().getMaskNextOwner(); + } + U32 key = (((U32)(type) & 0xFF) << 24) | (perms & 0xFFFFFF); + items_vector[key].push_back(viewer_inv_item->getUUID()); + } + + // How many types of items? Which type is it if only one? + S32 count = items_vector.size(); + U32 default_key = (U32)(LLInventoryType::IT_COUNT) << 24; // This is the key for any normal copyable item + U32 unique_key = (count == 1 ? items_vector.begin()->first : default_key); // The key in the case of one item type only + + // If we have no items in there (only folders or empty), analyze a bit further + if ((count == 0) && !has_bad_items) + { + if (cat_array->size() == 0) + { + // So we have no item and no folder. That's at least a warning. + if (depth == 2) + { + // If this is an empty version folder, warn only (listing won't be delivered by AIS, but only AIS should unlist) + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Empty Version"); + cb(message,depth,LLError::LEVEL_WARN); + } + } + else if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth > 2)) + { + // If this is a legit but empty stock folder, warn only (listing must stay searchable when out of stock) + if (cb) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Empty Stock"); + cb(message,depth,LLError::LEVEL_WARN); + } + } + else if (cb) + { + // We warn if there's nothing in a regular folder (may be it's an under construction listing) + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Warning Empty"); + cb(message,depth,LLError::LEVEL_WARN); + } + } + else + { + // Done with that folder : Print out the folder name unless we already found an error here + if (cb && result && (depth >= 1)) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Log"); + cb(message,depth,LLError::LEVEL_INFO); + } + } + } + // If we have a single type of items of the right type in the right place, we're done + else if ((count == 1) && !has_bad_items && (((unique_key == default_key) && (depth > 1)) || ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth > 2) && (cat_array->size() == 0)))) + { + // Done with that folder : Print out the folder name unless we already found an error here + if (cb && result && (depth >= 1)) + { + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Log"); + cb(message,depth,LLError::LEVEL_INFO); + } + } + else + { + if (fix_hierarchy && !has_bad_items) + { + // Alert the user when an existing stock folder has to be split + if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && ((count >= 2) || (cat_array->size() > 0))) + { + LLNotificationsUtil::add("AlertMerchantStockFolderSplit"); + } + // If we have more than 1 type of items or we are at the listing level or we have stock/no stock type mismatch, wrap the items in subfolders + if ((count > 1) || (depth == 1) || + ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (unique_key == default_key)) || + ((folder_type != LLFolderType::FT_MARKETPLACE_STOCK) && (unique_key != default_key))) + { + // Create one folder per vector at the right depth and of the right type + std::map<U32, std::vector<LLUUID> >::iterator items_vector_it = items_vector.begin(); + while (items_vector_it != items_vector.end()) + { + // Create a new folder + LLUUID parent_uuid = (depth > 2 ? viewer_cat->getParentUUID() : viewer_cat->getUUID()); + LLViewerInventoryItem* viewer_inv_item = gInventory.getItem(items_vector_it->second.back()); + std::string folder_name = (depth >= 1 ? viewer_cat->getName() : viewer_inv_item->getName()); + LLFolderType::EType new_folder_type = (items_vector_it->first == default_key ? LLFolderType::FT_NONE : LLFolderType::FT_MARKETPLACE_STOCK); + if (cb) + { + std::string message = ""; + if (new_folder_type == LLFolderType::FT_MARKETPLACE_STOCK) + { + message = indent + folder_name + LLTrans::getString("Marketplace Validation Warning Create Stock"); + } + else + { + message = indent + folder_name + LLTrans::getString("Marketplace Validation Warning Create Version"); + } + cb(message,depth,LLError::LEVEL_WARN); + } + LLUUID folder_uuid = gInventory.createNewCategory(parent_uuid, new_folder_type, folder_name); + + // Move each item to the new folder + while (!items_vector_it->second.empty()) + { + LLViewerInventoryItem* viewer_inv_item = gInventory.getItem(items_vector_it->second.back()); + if (cb) + { + std::string message = indent + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Warning Move"); + cb(message,depth,LLError::LEVEL_WARN); + } + gInventory.changeItemParent(viewer_inv_item, folder_uuid, true); + items_vector_it->second.pop_back(); + } + + // Next type + update_marketplace_category(parent_uuid); + update_marketplace_category(folder_uuid); + gInventory.notifyObservers(); + items_vector_it++; + } + } + // Stock folder should have no sub folder so reparent those up + if (folder_type == LLFolderType::FT_MARKETPLACE_STOCK) + { + LLUUID parent_uuid = cat->getParentUUID(); + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLViewerInventoryCategory * viewer_cat = (LLViewerInventoryCategory *) (*iter); + gInventory.changeCategoryParent(viewer_cat, parent_uuid, false); + result &= validate_marketplacelistings(viewer_cat, cb, fix_hierarchy, depth); + } + } + } + else if (cb) + { + // We are not fixing the hierarchy but reporting problems, report everything we can find + // Print the folder name + if (result && (depth >= 1)) + { + if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (count >= 2)) + { + // Report if a stock folder contains a mix of items + result = false; + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Mixed Stock"); + cb(message,depth,LLError::LEVEL_ERROR); + } + else if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (cat_array->size() != 0)) + { + // Report if a stock folder contains subfolders + result = false; + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Subfolder In Stock"); + cb(message,depth,LLError::LEVEL_ERROR); + } + else + { + // Simply print the folder name + std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Log"); + cb(message,depth,LLError::LEVEL_INFO); + } + } + // Scan each item and report if there's a problem + LLInventoryModel::item_array_t item_array_copy = *item_array; + for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++) + { + LLInventoryItem* item = *iter; + LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) item; + std::string error_msg; + if (!can_move_to_marketplace(item, error_msg, false)) + { + // Report items that shouldn't be there to start with + result = false; + std::string message = indent + " " + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Error") + " " + error_msg; + cb(message,depth,LLError::LEVEL_ERROR); + } + else if ((!viewer_inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) && (folder_type != LLFolderType::FT_MARKETPLACE_STOCK)) + { + // Report stock items that are misplaced + result = false; + std::string message = indent + " " + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Error Stock Item"); + cb(message,depth,LLError::LEVEL_ERROR); + } + else if (depth == 1) + { + // Report items not wrapped in version folder + result = false; + std::string message = indent + " " + viewer_inv_item->getName() + LLTrans::getString("Marketplace Validation Warning Unwrapped Item"); + cb(message,depth,LLError::LEVEL_ERROR); + } + } + } + + // Clean up + if (viewer_cat->getDescendentCount() == 0) + { + // Remove the current folder if it ends up empty + if (cb) + { + std::string message = indent + viewer_cat->getName() + LLTrans::getString("Marketplace Validation Warning Delete"); + cb(message,depth,LLError::LEVEL_WARN); + } + gInventory.removeCategory(cat->getUUID()); + gInventory.notifyObservers(); + return result && !has_bad_items; + } + } + + // Recursion : Perform the same validation on each nested folder + gInventory.getDirectDescendentsOf(cat->getUUID(),cat_array,item_array); + LLInventoryModel::cat_array_t cat_array_copy = *cat_array; + // Sort the folders in alphabetical order first + std::sort(cat_array_copy.begin(), cat_array_copy.end(), sort_alpha); + + for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++) + { + LLInventoryCategory* category = *iter; + result &= validate_marketplacelistings(category, cb, fix_hierarchy, depth + 1); + } + + update_marketplace_category(cat->getUUID()); + gInventory.notifyObservers(); + return result && !has_bad_items; +} + ///---------------------------------------------------------------------------- /// LLInventoryCollectFunctor implementations ///---------------------------------------------------------------------------- @@ -1061,6 +2343,29 @@ void LLOpenFoldersWithSelection::doFolder(LLFolderViewFolder* folder) } } +// Callback for doToSelected if DAMA required... +void LLInventoryAction::callback_doToSelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES + { + doToSelected(model, root, action, FALSE); + } +} + +void LLInventoryAction::callback_copySelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) // YES, Move no copy item(s) + { + doToSelected(model, root, "copy_or_move_to_marketplace_listings", FALSE); + } + else if (option == 1) // NO, Don't move no copy item(s) (leave them behind) + { + doToSelected(model, root, "copy_to_marketplace_listings", FALSE); + } +} + // Succeeds iff all selected items are bridges to objects, in which // case returns their corresponding uuids. bool get_selection_object_uuids(LLFolderView *root, uuid_vec_t& ids) @@ -1089,18 +2394,87 @@ bool get_selection_object_uuids(LLFolderView *root, uuid_vec_t& ids) return false; } -void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action) + +void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action, BOOL user_confirm) { + std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); + + // Prompt the user and check for authorization for some marketplace active listing edits + if (user_confirm && (("delete" == action) || ("cut" == action) || ("rename" == action) || ("properties" == action) || ("task_properties" == action) || ("open" == action))) + { + std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); + LLFolderViewModelItemInventory * viewModel = NULL; + for (; set_iter != selected_items.end(); ++set_iter) + { + viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem()); + if (viewModel && (depth_nesting_in_marketplace(viewModel->getUUID()) >= 0)) + { + break; + } + } + if (set_iter != selected_items.end()) + { + if ("open" == action) + { + if (get_can_item_be_worn(viewModel->getUUID())) + { + // Wearing an object from any listing, active or not, is verbotten + LLNotificationsUtil::add("AlertMerchantListingCannotWear"); + return; + } + // Note: we do not prompt for change when opening items (e.g. textures or note cards) on the marketplace... + } + else if (LLMarketplaceData::instance().isInActiveFolder(viewModel->getUUID()) || + LLMarketplaceData::instance().isListedAndActive(viewModel->getUUID())) + { + // If item is in active listing, further confirmation is required + if ((("cut" == action) || ("delete" == action)) && (LLMarketplaceData::instance().isListed(viewModel->getUUID()) || LLMarketplaceData::instance().isVersionFolder(viewModel->getUUID()))) + { + // Cut or delete of the active version folder or listing folder itself will unlist the listing so ask that question specifically + LLNotificationsUtil::add("ConfirmMerchantUnlist", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_doToSelected, _1, _2, model, root, action)); + return; + } + // Any other case will simply modify but not unlist a listing + LLNotificationsUtil::add("ConfirmMerchantActiveChange", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_doToSelected, _1, _2, model, root, action)); + return; + } + // Cutting or deleting a whole listing needs confirmation as SLM will be archived and inaccessible to the user + else if (LLMarketplaceData::instance().isListed(viewModel->getUUID()) && (("cut" == action) || ("delete" == action))) + { + LLNotificationsUtil::add("ConfirmListingCutOrDelete", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_doToSelected, _1, _2, model, root, action)); + return; + } + } + } + // Copying to the marketplace needs confirmation if nocopy items are involved + if (user_confirm && ("copy_to_marketplace_listings" == action)) + { + std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); + LLFolderViewModelItemInventory * viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem()); + if (contains_nocopy_items(viewModel->getUUID())) + { + LLNotificationsUtil::add("ConfirmCopyToMarketplace", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_copySelected, _1, _2, model, root, action)); + return; + } + } + + // Keep track of the marketplace folders that will need update of their status/name after the operation is performed + buildMarketplaceFolders(root); + if ("rename" == action) { root->startRenamingSelectedItem(); + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); return; } + if ("delete" == action) { LLSD args; args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root)); + // Note: marketplace listings will be updated in the callback if delete confirmed return; } if (("copy" == action) || ("cut" == action)) @@ -1118,12 +2492,12 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root LLViewerInventoryCategory *cat = model->getCategory(inventory_item->getUUID()); if (!cat) return; cat->changeType(new_folder_type); + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); return; } - std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); - LLMultiPreview* multi_previewp = NULL; LLMultiProperties* multi_propertiesp = NULL; @@ -1172,6 +2546,9 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root } } + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); + LLFloater::setFloaterHost(NULL); if (multi_previewp) { @@ -1215,5 +2592,62 @@ void LLInventoryAction::onItemsRemovalConfirmation( const LLSD& notification, co //because once removed from root folder view the item is no longer a selected item removeItemFromDND(root); root->removeSelectedItems(); + + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); } } + +void LLInventoryAction::buildMarketplaceFolders(LLFolderView* root) +{ + // Make a list of all marketplace folders containing the elements in the selected list + // as well as the elements themselves. + // Once those elements are updated (cut, delete in particular but potentially any action), their + // containing folder will need to be updated as well as their initially containing folder. For + // instance, moving a stock folder from a listed folder to another will require an update of the + // target listing *and* the original listing. So we need to keep track of both. + // Note: do not however put the marketplace listings root itself in this list or the whole marketplace data will be rebuilt. + sMarketplaceFolders.clear(); + const LLUUID &marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplacelistings_id.isNull()) + { + return; + } + + std::set<LLFolderViewItem*> selected_items = root->getSelectionList(); + std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); + LLFolderViewModelItemInventory * viewModel = NULL; + for (; set_iter != selected_items.end(); ++set_iter) + { + viewModel = dynamic_cast<LLFolderViewModelItemInventory *>((*set_iter)->getViewModelItem()); + if (!viewModel || !viewModel->getInventoryObject()) continue; + if (gInventory.isObjectDescendentOf(viewModel->getInventoryObject()->getParentUUID(), marketplacelistings_id)) + { + const LLUUID &parent_id = viewModel->getInventoryObject()->getParentUUID(); + if (parent_id != marketplacelistings_id) + { + sMarketplaceFolders.push_back(parent_id); + } + const LLUUID &curr_id = viewModel->getInventoryObject()->getUUID(); + if (curr_id != marketplacelistings_id) + { + sMarketplaceFolders.push_back(curr_id); + } + } + } + // Suppress dupes in the list so we won't update listings twice + sMarketplaceFolders.sort(); + sMarketplaceFolders.unique(); +} + +void LLInventoryAction::updateMarketplaceFolders() +{ + while (!sMarketplaceFolders.empty()) + { + update_marketplace_category(sMarketplaceFolders.back()); + sMarketplaceFolders.pop_back(); + } +} + + + diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 6b3861aa79f21984bc2a8f42bdd3f27ec1b5b3df..687aa57d7f1e738d9e997a3824c980a5cd10be9e 100755 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -32,6 +32,10 @@ #include "llinventory.h" #include "llwearabletype.h" +// compute_stock_count() return error code +const S32 COMPUTE_STOCK_INFINITE = -1; +const S32 COMPUTE_STOCK_NOT_EVALUATED = -2; + /******************************************************************************** ** ** ** MISCELLANEOUS GLOBAL FUNCTIONS @@ -58,18 +62,33 @@ void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id); void show_item_original(const LLUUID& item_uuid); void reset_inventory_filter(); +// Nudge the listing categories in the inventory to signal that their marketplace status changed +void update_marketplace_category(const LLUUID& cat_id, bool perform_consistency_enforcement = true); +// Nudge all listing categories to signal that their marketplace status changed +void update_all_marketplace_count(); + void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name); -void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null); +void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null, bool move_no_copy_items = false); // Generates a string containing the path to the item specified by item_id. void append_path(const LLUUID& id, std::string& path); void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LLUUID& top_level_folder, S32 operation_id); void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 operation_id); - void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, const LLUUID& top_level_folder, S32 operation_id); +typedef boost::function<void(std::string& validation_message, S32 depth, LLError::ELevel log_level)> validation_callback_t; + +bool can_move_item_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryItem* inv_item, std::string& tooltip_msg, S32 bundle_size = 1, bool from_paste = false); +bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLInventoryCategory* dest_folder, LLInventoryCategory* inv_cat, std::string& tooltip_msg, S32 bundle_size = 1, bool check_items = true, bool from_paste = false); +bool move_item_to_marketplacelistings(LLInventoryItem* inv_item, LLUUID dest_folder, bool copy = false); +bool move_folder_to_marketplacelistings(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, bool copy = false, bool move_no_copy_items = false); +bool validate_marketplacelistings(LLInventoryCategory* inv_cat, validation_callback_t cb = NULL, bool fix_hierarchy = true, S32 depth = -1); +S32 depth_nesting_in_marketplace(LLUUID cur_uuid); +LLUUID nested_parent_id(LLUUID cur_uuid, S32 depth); +S32 compute_stock_count(LLUUID cat_uuid, bool force_count = false); + /** Miscellaneous global functions ** ** *******************************************************************************/ @@ -437,10 +456,17 @@ class LLInventoryState struct LLInventoryAction { - static void doToSelected(class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void doToSelected(class LLInventoryModel* model, class LLFolderView* root, const std::string& action, BOOL user_confirm = TRUE); + static void callback_doToSelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void callback_copySelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); static void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLFolderView* root); static void removeItemFromDND(LLFolderView* root); + +private: + static void buildMarketplaceFolders(LLFolderView* root); + static void updateMarketplaceFolders(); + static std::list<LLUUID> sMarketplaceFolders; // Marketplace folders that will need update once the action is completed }; diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 47d3e88b3a3a72f44e4544743d258286992697f1..175ea22aa034459cfdabf37c8ee4978695fae03d 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -41,6 +41,7 @@ #include "llinventoryobserver.h" #include "llinventorypanel.h" #include "llnotificationsutil.h" +#include "llmarketplacefunctions.h" #include "llwindow.h" #include "llviewercontrol.h" #include "llpreview.h" @@ -1011,7 +1012,7 @@ LLInventoryModel::item_array_t* LLInventoryModel::getUnlockedItemArray(const LLU // an existing item with the matching id, or it will add the category. void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32 mask) { - if(cat->getUUID().isNull()) + if(!cat || cat->getUUID().isNull()) { return; } @@ -1025,7 +1026,8 @@ void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32 LLPointer<LLViewerInventoryCategory> old_cat = getCategory(cat->getUUID()); if(old_cat) { - // We already have an old category, modify it's values + // We already have an old category, modify its values + U32 mask = LLInventoryObserver::NONE; LLUUID old_parent_id = old_cat->getParentUUID(); LLUUID new_parent_id = cat->getParentUUID(); if(old_parent_id != new_parent_id) @@ -1049,7 +1051,13 @@ void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32 { mask |= LLInventoryObserver::LABEL; } - old_cat->copyViewerCategory(cat); + // Under marketplace, category labels are quite complex and need extra upate + const LLUUID marketplace_id = findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplace_id.notNull() && isObjectDescendentOf(cat->getUUID(), marketplace_id)) + { + mask |= LLInventoryObserver::LABEL; + } + old_cat->copyViewerCategory(cat); addChangedMask(mask, cat->getUUID()); } else @@ -1399,6 +1407,11 @@ void LLInventoryModel::deleteObject(const LLUUID& id, bool fix_broken_links, boo LLPointer<LLViewerInventoryCategory> cat = (LLViewerInventoryCategory*)((LLInventoryObject*)obj); vector_replace_with_last(*cat_list, cat); } + + // Note : We need to tell the inventory observers that those things are going to be deleted *before* the tree is cleared or they won't know what to delete (in views and view models) + addChangedMask(LLInventoryObserver::REMOVE, id); + gInventory.notifyObservers(); + item_list = getUnlockedItemArray(id); if(item_list) { @@ -1546,10 +1559,11 @@ void LLInventoryModel::addChangedMask(U32 mask, const LLUUID& referent) } } - mModifyMask |= mask; - if (referent.notNull()) + mModifyMask |= mask; + if (referent.notNull() && (mChangedItemIDs.find(referent) == mChangedItemIDs.end())) { mChangedItemIDs.insert(referent); + update_marketplace_category(referent, false); if (mask & LLInventoryObserver::ADD) { @@ -1969,17 +1983,22 @@ bool LLInventoryModel::loadSkeleton( // we can safely ignore anything loaded from file, but // not sent down in the skeleton. Must have been removed from inventory. - if(cit == not_cached) + if (cit == not_cached) { continue; } - if(cat->getVersion() != tcat->getVersion()) + else if (cat->getVersion() != tcat->getVersion()) { // if the cached version does not match the server version, // throw away the version we have so we can fetch the // correct contents the next time the viewer opens the folder. tcat->setVersion(NO_VERSION); } + else if (tcat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + // Do not trust stock folders being updated + tcat->setVersion(NO_VERSION); + } else { cached_ids.insert(tcat->getUUID()); @@ -3034,7 +3053,18 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**) LL_DEBUGS("Inventory") << "unpacked folder '" << tfolder->getName() << "' (" << tfolder->getUUID() << ") in " << tfolder->getParentUUID() << LL_ENDL; - if(tfolder->getUUID().notNull()) + + // If the folder is a listing or a version folder, all we need to do is update the SLM data + int depth_folder = depth_nesting_in_marketplace(tfolder->getUUID()); + if ((depth_folder == 1) || (depth_folder == 2)) + { + // Trigger an SLM listing update + LLUUID listing_uuid = (depth_folder == 1 ? tfolder->getUUID() : tfolder->getParentUUID()); + S32 listing_id = LLMarketplaceData::instance().getListingID(listing_uuid); + LLMarketplaceData::instance().getListing(listing_id); + // In that case, there is no item to update so no callback -> we skip the rest of the update + } + else if(tfolder->getUUID().notNull()) { folders.push_back(tfolder); LLViewerInventoryCategory* folderp = gInventory.getCategory(tfolder->getUUID()); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 4a230accb6d62673f92b128a633051e676404e85..5194cba891a854c7674b1042716e17f9ee38b1e1 100755 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -193,6 +193,7 @@ LLFolderView * LLInventoryPanel::createFolderRoot(LLUUID root_id ) p.show_empty_message = mShowEmptyMessage; p.show_item_link_overlays = mShowItemLinkOverlays; p.root = NULL; + p.allow_drop = mParams.allow_drop_on_root; p.options_menu = "menu_inventory.xml"; return LLUICtrlFactory::create<LLFolderView>(p); @@ -292,7 +293,12 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params) getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX)); getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX)); } - + // hide marketplace listing box, unless we are a marketplace panel + if (!gSavedSettings.getBOOL("InventoryOutboxMakeVisible") && !mParams.use_marketplace_folders) + { + getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_MARKETPLACE_LISTINGS)); + } + // set the filter for the empty folder if the debug setting is on if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders")) { @@ -601,13 +607,13 @@ void LLInventoryPanel::modelChanged(U32 mask) LLUUID LLInventoryPanel::getRootFolderID() { + LLUUID root_id; if (mFolderRoot.get() && mFolderRoot.get()->getViewModelItem()) { - return static_cast<LLFolderViewModelItemInventory*>(mFolderRoot.get()->getViewModelItem())->getUUID(); + root_id = static_cast<LLFolderViewModelItemInventory*>(mFolderRoot.get()->getViewModelItem())->getUUID(); } else { - LLUUID root_id; if (mParams.start_folder.id.isChosen()) { root_id = mParams.start_folder.id; @@ -635,8 +641,8 @@ LLUUID LLInventoryPanel::getRootFolderID() } } } - return root_id; } + return root_id; } // static @@ -758,7 +764,7 @@ void LLInventoryPanel::initializeViews() } -LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge) +LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop) { LLFolderViewFolder::Params params(mParams.folder); @@ -766,6 +772,7 @@ LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * br params.root = mFolderRoot.get(); params.listener = bridge; params.tool_tip = params.name; + params.allow_drop = allow_drop; params.font_color = (bridge->isLibraryItem() ? sLibraryColor : (bridge->isLink() ? sLinkColor : sDefaultColor)); params.font_highlight_color = (bridge->isLibraryItem() ? sLibraryColor : (bridge->isLink() ? sLinkColor : sDefaultHighlightColor)); @@ -794,37 +801,56 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) { LLInventoryObject const* objectp = gInventory.getObject(id); - if (!objectp) return NULL; + if (!objectp) + { + return NULL; + } LLFolderViewItem* folder_view_item = getItemByID(id); - const LLUUID &parent_id = objectp->getParentUUID(); + const LLUUID &parent_id = objectp->getParentUUID(); LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)getItemByID(parent_id); + // Force the creation of an extra root level folder item if required by the inventory panel (default is "false") + bool allow_drop = true; + bool create_root = false; + if (mParams.show_root_folder) + { + LLUUID root_id = getRootFolderID(); + if (root_id == id) + { + // We insert an extra level that's seen by the UI but has no influence on the model + parent_folder = dynamic_cast<LLFolderViewFolder*>(folder_view_item); + folder_view_item = NULL; + allow_drop = mParams.allow_drop_on_root; + create_root = true; + } + } + if (!folder_view_item && parent_folder) { if (objectp->getType() <= LLAssetType::AT_NONE || objectp->getType() >= LLAssetType::AT_COUNT) { LL_WARNS() << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " - << ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() - << LL_ENDL; + << ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() + << LL_ENDL; return NULL; } if ((objectp->getType() == LLAssetType::AT_CATEGORY) && (objectp->getActualType() != LLAssetType::AT_LINK_FOLDER)) { - LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(objectp->getType(), - objectp->getType(), + LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(LLAssetType::AT_CATEGORY, + (mParams.use_marketplace_folders ? LLAssetType::AT_MARKETPLACE_FOLDER : LLAssetType::AT_CATEGORY), LLInventoryType::IT_CATEGORY, this, - &mInventoryViewModel, + &mInventoryViewModel, mFolderRoot.get(), objectp->getUUID()); if (new_listener) { - folder_view_item = createFolderViewFolder(new_listener); + folder_view_item = createFolderViewFolder(new_listener,allow_drop); } } else @@ -847,11 +873,16 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) } if (folder_view_item) - { + { llassert(parent_folder != NULL); folder_view_item->addToFolder(parent_folder); addItemID(id, folder_view_item); - } + // In the case of the root folder been shown, open that folder by default once the widget is created + if (create_root) + { + folder_view_item->setOpen(TRUE); + } + } } // If this is a folder, add the children of the folder and recursively add any @@ -960,7 +991,7 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, // If folder view is empty the (x, y) point won't be in its rect // so the handler must be called explicitly. // but only if was not handled before. See EXT-6746. - if (!handled && !mFolderRoot.get()->hasVisibleChildren()) + if (!handled && mParams.allow_drop_on_root && !mFolderRoot.get()->hasVisibleChildren()) { handled = mFolderRoot.get()->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); } @@ -1482,6 +1513,8 @@ class LLInventoryRecentItemsPanel : public LLInventoryPanel LLInventoryPanel::initFromParams(p); // turn on inbox for recent items getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() | (1ULL << LLFolderType::FT_INBOX)); + // turn off marketplace for recent items + getFilter().setFilterNoMarketplaceFolder(); } protected: @@ -1525,5 +1558,8 @@ namespace LLInitParam declare(LLFolderType::lookup(LLFolderType::FT_INBOX) , LLFolderType::FT_INBOX); declare(LLFolderType::lookup(LLFolderType::FT_OUTBOX) , LLFolderType::FT_OUTBOX); declare(LLFolderType::lookup(LLFolderType::FT_BASIC_ROOT) , LLFolderType::FT_BASIC_ROOT); + declare(LLFolderType::lookup(LLFolderType::FT_MARKETPLACE_LISTINGS) , LLFolderType::FT_MARKETPLACE_LISTINGS); + declare(LLFolderType::lookup(LLFolderType::FT_MARKETPLACE_STOCK), LLFolderType::FT_MARKETPLACE_STOCK); + declare(LLFolderType::lookup(LLFolderType::FT_MARKETPLACE_VERSION), LLFolderType::FT_MARKETPLACE_VERSION); } } diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index bc4c10e4418620a1ae9355fb3ceb2e7ff4540cfd..b69edd8b9374402ca03593006d3a6798b7fb0fab 100755 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -97,6 +97,9 @@ class LLInventoryPanel : public LLPanel Optional<StartFolder> start_folder; Optional<bool> use_label_suffix; Optional<bool> show_empty_message; + Optional<bool> show_root_folder; + Optional<bool> allow_drop_on_root; + Optional<bool> use_marketplace_folders; Optional<LLScrollContainer::Params> scroll; Optional<bool> accepts_drag_and_drop; Optional<LLFolderView::Params> folder_view; @@ -111,7 +114,10 @@ class LLInventoryPanel : public LLPanel filter("filter"), start_folder("start_folder"), use_label_suffix("use_label_suffix", true), - show_empty_message("show_empty_message", true), + show_empty_message("show_empty_message", true), + show_root_folder("show_root_folder", false), + allow_drop_on_root("allow_drop_on_root", true), + use_marketplace_folders("use_marketplace_folders", false), scroll("scroll"), accepts_drag_and_drop("accepts_drag_and_drop"), folder_view("folder_view"), @@ -185,6 +191,7 @@ class LLInventoryPanel : public LLPanel LLFolderView* getRootFolder() { return mFolderRoot.get(); } LLUUID getRootFolderID(); LLScrollContainer* getScrollableContainer() { return mScroller; } + bool getAllowDropOnRoot() { return mParams.allow_drop_on_root; } void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); @@ -293,7 +300,7 @@ class LLInventoryPanel : public LLPanel BOOL getIsHiddenFolderType(LLFolderType::EType folder_type) const; virtual LLFolderView * createFolderRoot(LLUUID root_id ); - virtual LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge); + virtual LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop); virtual LLFolderViewItem* createFolderViewItem(LLInvFVBridge * bridge); private: bool mBuildDefaultHierarchy; // default inventory hierarchy should be created in postBuild() diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index 38c4382654434ee529340748b404069b0035d9f0..f11d0f16da6b9848a924efd33f639fc3479d45e8 100755 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -29,13 +29,21 @@ #include "llmarketplacefunctions.h" #include "llagent.h" +#include "llbufferstream.h" #include "llhttpclient.h" +#include "llinventoryfunctions.h" +#include "llinventoryobserver.h" +#include "llnotificationsutil.h" #include "llsdserialize.h" #include "lltimer.h" #include "lltrans.h" #include "llviewercontrol.h" +#include "llviewerinventory.h" #include "llviewermedia.h" #include "llviewernetwork.h" +#include "llviewerregion.h" +#include "reader.h" // JSON +#include "writer.h" // JSON #include "lleventcoro.h" #include "llcoros.h" #include "llcorehttputil.h" @@ -95,6 +103,550 @@ LLSD getMarketplaceStringSubstitutions() return marketplace_sub_map; } +// Get the version folder: if there is only one subfolder, we will use it as a version folder +LLUUID getVersionFolderIfUnique(const LLUUID& folder_id) +{ + LLUUID version_id = LLUUID::null; + LLInventoryModel::cat_array_t* categories; + LLInventoryModel::item_array_t* items; + gInventory.getDirectDescendentsOf(folder_id, categories, items); + if (categories->size() == 1) + { + version_id = categories->begin()->get()->getUUID(); + } + else + { + LLNotificationsUtil::add("AlertMerchantListingActivateRequired"); + } + return version_id; +} + +/////////////////////////////////////////////////////////////////////////////// +// SLM Responders +void log_SLM_warning(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description) +{ + LL_WARNS("SLM") << "SLM API : Responder to " << request << ". status : " << status << ", reason : " << reason << ", code : " << code << ", description : " << description << LL_ENDL; + if ((status == 422) && (description == "[\"You must have an English description to list the product\", \"You must choose a category for your product before it can be listed\", \"Listing could not change state.\", \"Price can't be blank\"]")) + { + // Unprocessable Entity : Special case that error as it is a frequent answer when trying to list an incomplete listing + LLNotificationsUtil::add("MerchantUnprocessableEntity"); + } + else + { + // Prompt the user with the warning (so they know why things are failing) + LLSD subs; + subs["[ERROR_REASON]"] = reason; + // We do show long descriptions in the alert (unlikely to be readable). The description string will be in the log though. + subs["[ERROR_DESCRIPTION]"] = (description.length() <= 512 ? description : ""); + LLNotificationsUtil::add("MerchantTransactionFailed", subs); + } +} +void log_SLM_infos(const std::string& request, U32 status, const std::string& body) +{ + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + LL_INFOS("SLM") << "SLM API : Responder to " << request << ". status : " << status << ", body or description : " << body << LL_ENDL; + } +} +void log_SLM_infos(const std::string& request, const std::string& url, const std::string& body) +{ + if (gSavedSettings.getBOOL("MarketplaceListingsLogging")) + { + LL_INFOS("SLM") << "SLM API : Sending " << request << ". url : " << url << ", body : " << body << LL_ENDL; + } +} + +class LLSLMGetMerchantResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMGetMerchantResponder); +public: + + LLSLMGetMerchantResponder() {} + +protected: + virtual void httpFailure() + { + if (HTTP_NOT_FOUND == getStatus()) + { + log_SLM_infos("Get /merchant", getStatus(), "User is not a merchant"); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT); + } + else if (HTTP_SERVICE_UNAVAILABLE == getStatus()) + { + log_SLM_infos("Get /merchant", getStatus(), "Merchant is not migrated"); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT); + } + else + { + log_SLM_warning("Get /merchant", getStatus(), getReason(), getContent().get("error_code"), getContent().get("error_description")); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE); + } + } + + virtual void httpSuccess() + { + log_SLM_infos("Get /merchant", getStatus(), "User is a merchant"); + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_MERCHANT); + } + +}; + +class LLSLMGetListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMGetListingsResponder); +public: + + LLSLMGetListingsResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Get /listings", getStatus(), getReason(), "", body); + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_FAILED); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Get /listings", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_FAILED); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Get /listings", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + if (folder_id.notNull()) + { + LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed,edit_url,count); + } + it++; + } + + // Update all folders under the root + LLMarketplaceData::instance().setSLMDataFetched(MarketplaceFetchCodes::MARKET_FETCH_DONE); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + } +private: + LLUUID mExpectedFolderId; +}; + +class LLSLMCreateListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMCreateListingsResponder); +public: + + LLSLMCreateListingsResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Post /listings", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Post /listings", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Post /listings", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed,edit_url,count); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + it++; + } + } +private: + LLUUID mExpectedFolderId; +}; + +class LLSLMGetListingResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMGetListingResponder); +public: + + LLSLMGetListingResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + if (getStatus() == 404) + { + // That listing does not exist -> delete its record from the local SLM data store + LLMarketplaceData::instance().deleteListing(mExpectedFolderId, false); + } + else + { + log_SLM_warning("Get /listing", getStatus(), getReason(), "", body); + } + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Get /listing", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Get /listing", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + + // Update that listing + LLMarketplaceData::instance().setListingID(folder_id, listing_id, false); + LLMarketplaceData::instance().setVersionFolderID(folder_id, version_id, false); + LLMarketplaceData::instance().setActivationState(folder_id, is_listed, false); + LLMarketplaceData::instance().setListingURL(folder_id, edit_url, false); + LLMarketplaceData::instance().setCountOnHand(folder_id,count,false); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + + it++; + } + } +private: + LLUUID mExpectedFolderId; +}; + +class LLSLMUpdateListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMUpdateListingsResponder); +public: + + LLSLMUpdateListingsResponder(const LLUUID& folder_id, bool expected_listed_state, const LLUUID& expected_version_id) + { + mExpectedFolderId = folder_id; + mExpectedListedState = expected_listed_state; + mExpectedVersionUUID = expected_version_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Put /listing", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Put /listing", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Put /listing", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + + // Update that listing + LLMarketplaceData::instance().setListingID(folder_id, listing_id, false); + LLMarketplaceData::instance().setVersionFolderID(folder_id, version_id, false); + LLMarketplaceData::instance().setActivationState(folder_id, is_listed, false); + LLMarketplaceData::instance().setListingURL(folder_id, edit_url, false); + LLMarketplaceData::instance().setCountOnHand(folder_id,count,false); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + + // Show a notification alert if what we got is not what we expected + // (this actually doesn't result in an error status from the SLM API protocol) + if ((mExpectedListedState != is_listed) || (mExpectedVersionUUID != version_id)) + { + LLSD subs; + subs["[URL]"] = edit_url; + LLNotificationsUtil::add("AlertMerchantListingNotUpdated", subs); + } + + it++; + } + } +private: + LLUUID mExpectedFolderId; + bool mExpectedListedState; + LLUUID mExpectedVersionUUID; +}; + +class LLSLMAssociateListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMAssociateListingsResponder); +public: + + LLSLMAssociateListingsResponder(const LLUUID& folder_id, const LLUUID& source_folder_id) + { + mExpectedFolderId = folder_id; + mSourceFolderId = source_folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + LLMarketplaceData::instance().setUpdating(mSourceFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Put /associate_inventory", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + update_marketplace_category(mSourceFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Put /associate_inventory", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + update_marketplace_category(mSourceFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Put /associate_inventory", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + bool is_listed = listing["is_listed"].asBool(); + std::string edit_url = listing["edit_url"].asString(); + std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); + std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); + int count = listing["inventory_info"]["count_on_hand"].asInt(); + + LLUUID folder_id(folder_uuid_string); + LLUUID version_id(version_uuid_string); + + // Check that the listing ID is not already associated to some other record + LLUUID old_listing = LLMarketplaceData::instance().getListingFolder(listing_id); + if (old_listing.notNull()) + { + // If it is already used, unlist the old record (we can't have 2 listings with the same listing ID) + LLMarketplaceData::instance().deleteListing(old_listing); + } + + // Add the new association + LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed,edit_url,count); + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + + // The stock count needs to be updated with the new local count now + LLMarketplaceData::instance().updateCountOnHand(folder_id,1); + + it++; + } + + // Always update the source folder so its widget updates + update_marketplace_category(mSourceFolderId, false); + } +private: + LLUUID mExpectedFolderId; // This is the folder now associated with the id. + LLUUID mSourceFolderId; // This is the folder initially associated with the id. Can be LLUUI::null +}; + +class LLSLMDeleteListingsResponder : public LLHTTPClient::Responder +{ + LOG_CLASS(LLSLMDeleteListingsResponder); +public: + + LLSLMDeleteListingsResponder(const LLUUID& folder_id) + { + mExpectedFolderId = folder_id; + } + + virtual void completedRaw(const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + LLMarketplaceData::instance().setUpdating(mExpectedFolderId,false); + + LLBufferStream istr(channels, buffer.get()); + std::stringstream strstrm; + strstrm << istr.rdbuf(); + const std::string body = strstrm.str(); + + if (!isGoodStatus()) + { + log_SLM_warning("Delete /listing", getStatus(), getReason(), "", body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + Json::Value root; + Json::Reader reader; + if (!reader.parse(body,root)) + { + log_SLM_warning("Delete /listing", getStatus(), "Json parsing failed", reader.getFormatedErrorMessages(), body); + update_marketplace_category(mExpectedFolderId, false); + gInventory.notifyObservers(); + return; + } + + log_SLM_infos("Delete /listing", getStatus(), body); + + // Extract the info from the Json string + Json::ValueIterator it = root["listings"].begin(); + + while (it != root["listings"].end()) + { + Json::Value listing = *it; + + int listing_id = listing["id"].asInt(); + LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id); + LLMarketplaceData::instance().deleteListing(folder_id); + + it++; + } + } +private: + LLUUID mExpectedFolderId; +}; + +// SLM Responders End +/////////////////////////////////////////////////////////////////////////////// + namespace LLMarketplaceImport { // Basic interface for this namespace @@ -223,7 +775,7 @@ namespace LLMarketplaceImport { if (gSavedSettings.getBOOL("InventoryOutboxLogging")) { - LL_INFOS() << " SLM POST clearing marketplace cookie due to client or server error" << LL_ENDL; + LL_INFOS() << " SLM POST : Clearing marketplace cookie due to client or server error" << LL_ENDL; } sMarketplaceCookie.clear(); } @@ -372,7 +924,7 @@ namespace LLMarketplaceImport S32 getResultStatus() { - return sImportResultStatus; + return sImportResultStatus; } const LLSD& getResults() @@ -577,15 +1129,15 @@ void LLMarketplaceInventoryImporter::initialize() return; } - if (!LLMarketplaceImport::hasSessionCookie()) - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING; - LLMarketplaceImport::establishMarketplaceSessionCookie(); - } - else - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; - } + if (!LLMarketplaceImport::hasSessionCookie()) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING; + LLMarketplaceImport::establishMarketplaceSessionCookie(); + } + else + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; + } } void LLMarketplaceInventoryImporter::reinitializeAndTriggerImport() @@ -629,54 +1181,957 @@ void LLMarketplaceInventoryImporter::updateImport() // If we are no longer in progress if (!mImportInProgress) { - if (mInitialized) - { - // Report results - if (mStatusReportSignal) - { - (*mStatusReportSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); - } - } - else - { - // Look for results success - mInitialized = LLMarketplaceImport::hasSessionCookie(); - - if (mInitialized) - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; - // Follow up with auto trigger of import - if (mAutoTriggerImport) - { - mAutoTriggerImport = false; - mImportInProgress = triggerImport(); - } - } - else - { - U32 status = LLMarketplaceImport::getResultStatus(); - if ((status == MarketplaceErrorCodes::IMPORT_FORBIDDEN) || - (status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR)) - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT; - } - else - { - mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE; - } - if (mErrorInitSignal && (mMarketPlaceStatus == MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE)) - { - (*mErrorInitSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); - } - } - } - } + // Look for results success + mInitialized = LLMarketplaceImport::hasSessionCookie(); - // Make sure we trigger the status change with the final state (in case of auto trigger after initialize) - if (mStatusChangedSignal) - { - (*mStatusChangedSignal)(mImportInProgress); + // Report results + if (mStatusReportSignal) + { + (*mStatusReportSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); + } + + if (mInitialized) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MERCHANT; + // Follow up with auto trigger of import + if (mAutoTriggerImport) + { + mAutoTriggerImport = false; + mImportInProgress = triggerImport(); + } + } + else + { + U32 status = LLMarketplaceImport::getResultStatus(); + if ((status == MarketplaceErrorCodes::IMPORT_FORBIDDEN) || + (status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR)) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT; + } + else if (status == MarketplaceErrorCodes::IMPORT_SERVER_API_DISABLED) + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_MIGRATED_MERCHANT; + } + else + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE; + } + if (mErrorInitSignal && (mMarketPlaceStatus == MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE)) + { + (*mErrorInitSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults()); + } + } } } + + // Make sure we trigger the status change with the final state (in case of auto trigger after initialize) + if (mStatusChangedSignal) + { + (*mStatusChangedSignal)(mImportInProgress); + } +} + +// +// Direct Delivery : Marketplace tuples and data +// +class LLMarketplaceInventoryObserver : public LLInventoryObserver +{ +public: + LLMarketplaceInventoryObserver() {} + virtual ~LLMarketplaceInventoryObserver() {} + virtual void changed(U32 mask); +}; + +void LLMarketplaceInventoryObserver::changed(U32 mask) +{ + // When things are added to the marketplace, we might need to re-validate and fix the containing listings + if (mask & LLInventoryObserver::ADD) + { + const std::set<LLUUID>& changed_items = gInventory.getChangedIDs(); + + std::set<LLUUID>::const_iterator id_it = changed_items.begin(); + std::set<LLUUID>::const_iterator id_end = changed_items.end(); + // First, count the number of items in this list... + S32 count = 0; + for (;id_it != id_end; ++id_it) + { + LLInventoryObject* obj = gInventory.getObject(*id_it); + if (obj && (LLAssetType::AT_CATEGORY != obj->getType())) + { + count++; + } + } + // Then, decrement the folders of that amount + // Note that of all of those, only one folder will be a listing folder (if at all). + // The other will be ignored by the decrement method. + id_it = changed_items.begin(); + for (;id_it != id_end; ++id_it) + { + LLInventoryObject* obj = gInventory.getObject(*id_it); + if (obj && (LLAssetType::AT_CATEGORY == obj->getType())) + { + LLMarketplaceData::instance().decrementValidationWaiting(obj->getUUID(),count); + } + } + } + + // When things are changed in the inventory, this can trigger a host of changes in the marketplace listings folder: + // * stock counts changing : no copy items coming in and out will change the stock count on folders + // * version and listing folders : moving those might invalidate the marketplace data itself + // Since we should cannot raise inventory change while the observer is called (the list will be cleared + // once observers are called) we need to raise a flag in the inventory to signal that things have been dirtied. + + if (mask & (LLInventoryObserver::INTERNAL | LLInventoryObserver::STRUCTURE)) + { + const std::set<LLUUID>& changed_items = gInventory.getChangedIDs(); + + std::set<LLUUID>::const_iterator id_it = changed_items.begin(); + std::set<LLUUID>::const_iterator id_end = changed_items.end(); + for (;id_it != id_end; ++id_it) + { + LLInventoryObject* obj = gInventory.getObject(*id_it); + if (obj) + { + if (LLAssetType::AT_CATEGORY == obj->getType()) + { + // If it's a folder known to the marketplace, let's check it's in proper shape + if (LLMarketplaceData::instance().isListed(*id_it) || LLMarketplaceData::instance().isVersionFolder(*id_it)) + { + LLInventoryCategory* cat = (LLInventoryCategory*)(obj); + validate_marketplacelistings(cat); + } + } + else + { + // If it's not a category, it's an item... + LLInventoryItem* item = (LLInventoryItem*)(obj); + // If it's a no copy item, we may need to update the label count of marketplace listings + if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + LLMarketplaceData::instance().setDirtyCount(); + } + } + } + } + } +} + +// Tuple == Item +LLMarketplaceTuple::LLMarketplaceTuple() : + mListingFolderId(), + mListingId(0), + mVersionFolderId(), + mIsActive(false), + mEditURL("") +{ +} + +LLMarketplaceTuple::LLMarketplaceTuple(const LLUUID& folder_id) : + mListingFolderId(folder_id), + mListingId(0), + mVersionFolderId(), + mIsActive(false), + mEditURL("") +{ +} + +LLMarketplaceTuple::LLMarketplaceTuple(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed) : + mListingFolderId(folder_id), + mListingId(listing_id), + mVersionFolderId(version_id), + mIsActive(is_listed), + mEditURL("") +{ +} + + +// Data map +LLMarketplaceData::LLMarketplaceData() : + mMarketPlaceStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED), + mMarketPlaceDataFetched(MarketplaceFetchCodes::MARKET_FETCH_NOT_DONE), + mStatusUpdatedSignal(NULL), + mDataFetchedSignal(NULL), + mDirtyCount(false) +{ + mInventoryObserver = new LLMarketplaceInventoryObserver; + gInventory.addObserver(mInventoryObserver); +} + +LLMarketplaceData::~LLMarketplaceData() +{ + gInventory.removeObserver(mInventoryObserver); +} + +void LLMarketplaceData::initializeSLM(const status_updated_signal_t::slot_type& cb) +{ + if (mStatusUpdatedSignal == NULL) + { + mStatusUpdatedSignal = new status_updated_signal_t(); + } + mStatusUpdatedSignal->connect(cb); + + if (mMarketPlaceStatus != MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED) + { + // If already initialized, just confirm the status so the callback gets called + setSLMStatus(mMarketPlaceStatus); + } + else + { + // Initiate SLM connection and set responder + std::string url = getSLMConnectURL("/merchant"); + if (url != "") + { + mMarketPlaceStatus = MarketplaceStatusCodes::MARKET_PLACE_INITIALIZING; + log_SLM_infos("LLHTTPClient::get", url, ""); + LLHTTPClient::get(url, new LLSLMGetMerchantResponder(), LLSD()); + } + } +} + +void LLMarketplaceData::setDataFetchedSignal(const status_updated_signal_t::slot_type& cb) +{ + if (mDataFetchedSignal == NULL) + { + mDataFetchedSignal = new status_updated_signal_t(); + } + mDataFetchedSignal->connect(cb); +} + +// Get/Post/Put requests to the SLM Server using the SLM API +void LLMarketplaceData::getSLMListings() +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Send request + std::string url = getSLMConnectURL("/listings"); + log_SLM_infos("LLHTTPClient::get", url, ""); + const LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + setUpdating(marketplacelistings_id,true); + LLHTTPClient::get(url, new LLSLMGetListingsResponder(marketplacelistings_id), headers); +} + +void LLMarketplaceData::getSLMListing(S32 listing_id) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Send request + std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::get", url, ""); + LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id); + setUpdating(folder_id,true); + LLHTTPClient::get(url, new LLSLMGetListingResponder(folder_id), headers); } +void LLMarketplaceData::createSLMListing(const LLUUID& folder_id, const LLUUID& version_id, S32 count) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Build the json message + Json::Value root; + Json::FastWriter writer; + + LLViewerInventoryCategory* category = gInventory.getCategory(folder_id); + root["listing"]["name"] = category->getName(); + root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString(); + root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); + root["listing"]["inventory_info"]["count_on_hand"] = count; + + std::string json_str = writer.write(root); + + // postRaw() takes ownership of the buffer and releases it later. + size_t size = json_str.size(); + U8 *data = new U8[size]; + memcpy(data, (U8*)(json_str.c_str()), size); + + // Send request + std::string url = getSLMConnectURL("/listings"); + log_SLM_infos("LLHTTPClient::postRaw", url, json_str); + setUpdating(folder_id,true); + LLHTTPClient::postRaw(url, data, size, new LLSLMCreateListingsResponder(folder_id), headers); +} + +void LLMarketplaceData::updateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, S32 count) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + Json::Value root; + Json::FastWriter writer; + + // Note : auto unlist if the count is 0 (out of stock) + if (is_listed && (count == 0)) + { + is_listed = false; + LLNotificationsUtil::add("AlertMerchantStockFolderEmpty"); + } + + // Note : we're assuming that sending unchanged info won't break anything server side... + root["listing"]["id"] = listing_id; + root["listing"]["is_listed"] = is_listed; + root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString(); + root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); + root["listing"]["inventory_info"]["count_on_hand"] = count; + + std::string json_str = writer.write(root); + + // postRaw() takes ownership of the buffer and releases it later. + size_t size = json_str.size(); + U8 *data = new U8[size]; + memcpy(data, (U8*)(json_str.c_str()), size); + + // Send request + std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::putRaw", url, json_str); + setUpdating(folder_id,true); + LLHTTPClient::putRaw(url, data, size, new LLSLMUpdateListingsResponder(folder_id, is_listed, version_id), headers); +} + +void LLMarketplaceData::associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, const LLUUID& source_folder_id) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + Json::Value root; + Json::FastWriter writer; + + // Note : we're assuming that sending unchanged info won't break anything server side... + root["listing"]["id"] = listing_id; + root["listing"]["inventory_info"]["listing_folder_id"] = folder_id.asString(); + root["listing"]["inventory_info"]["version_folder_id"] = version_id.asString(); + + std::string json_str = writer.write(root); + + // postRaw() takes ownership of the buffer and releases it later. + size_t size = json_str.size(); + U8 *data = new U8[size]; + memcpy(data, (U8*)(json_str.c_str()), size); + + // Send request + std::string url = getSLMConnectURL("/associate_inventory/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::putRaw", url, json_str); + setUpdating(folder_id,true); + setUpdating(source_folder_id,true); + LLHTTPClient::putRaw(url, data, size, new LLSLMAssociateListingsResponder(folder_id,source_folder_id), headers); +} + +void LLMarketplaceData::deleteSLMListing(S32 listing_id) +{ + LLSD headers = LLSD::emptyMap(); + headers["Accept"] = "application/json"; + headers["Content-Type"] = "application/json"; + + // Send request + std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id); + log_SLM_infos("LLHTTPClient::del", url, ""); + LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id); + setUpdating(folder_id,true); + LLHTTPClient::del(url, new LLSLMDeleteListingsResponder(folder_id), headers); +} + +std::string LLMarketplaceData::getSLMConnectURL(const std::string& route) +{ + std::string url(""); + LLViewerRegion *regionp = gAgent.getRegion(); + if (regionp) + { + // Get DirectDelivery cap + url = regionp->getCapability("DirectDelivery"); + if (url != "") + { + url += route; + } + } + return url; +} + +void LLMarketplaceData::setSLMStatus(U32 status) +{ + mMarketPlaceStatus = status; + if (mStatusUpdatedSignal) + { + (*mStatusUpdatedSignal)(); + } +} + +void LLMarketplaceData::setSLMDataFetched(U32 status) +{ + mMarketPlaceDataFetched = status; + if (mDataFetchedSignal) + { + (*mDataFetchedSignal)(); + } +} + +// Creation / Deletion / Update +// Methods publicly called +bool LLMarketplaceData::createListing(const LLUUID& folder_id) +{ + if (isListed(folder_id)) + { + // Listing already exists -> exit with error + return false; + } + + // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately + S32 count = -1; + LLUUID version_id = getVersionFolderIfUnique(folder_id); + if (version_id.notNull()) + { + count = compute_stock_count(version_id, true); + } + + // Validate the count on hand + if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If the count on hand cannot be evaluated, we will consider it empty (out of stock) at creation time + // It will get reevaluated and updated once the items are fetched + count = 0; + } + + // Post the listing creation request to SLM + createSLMListing(folder_id, version_id, count); + + return true; +} + +bool LLMarketplaceData::clearListing(const LLUUID& folder_id, S32 depth) +{ + if (folder_id.isNull()) + { + // Folder doesn't exists -> exit with error + return false; + } + + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = (isListed(folder_id) ? folder_id : nested_parent_id(folder_id, depth)); + S32 listing_id = getListingID(listing_uuid); + + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + // Update the SLM Server so that this listing is deleted (actually, archived...) + deleteSLMListing(listing_id); + + return true; +} + +bool LLMarketplaceData::getListing(const LLUUID& folder_id, S32 depth) +{ + if (folder_id.isNull()) + { + // Folder doesn't exists -> exit with error + return false; + } + + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = (isListed(folder_id) ? folder_id : nested_parent_id(folder_id, depth)); + S32 listing_id = getListingID(listing_uuid); + + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + // Get listing data from SLM + getSLMListing(listing_id); + + return true; +} + +bool LLMarketplaceData::getListing(S32 listing_id) +{ + if (listing_id == 0) + { + return false; + } + + // Get listing data from SLM + getSLMListing(listing_id); + return true; +} + +bool LLMarketplaceData::activateListing(const LLUUID& folder_id, bool activate, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + S32 listing_id = getListingID(listing_uuid); + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + if (getActivationState(listing_uuid) == activate) + { + // If activation state is unchanged, no point spamming SLM with an update + return true; + } + + LLUUID version_uuid = getVersionFolder(listing_uuid); + + // Also update the count on hand + S32 count = compute_stock_count(folder_id); + if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If the count on hand cannot be evaluated locally, we should not change that SLM value + // We are assuming that this issue is local and should not modify server side values + count = getCountOnHand(listing_uuid); + } + + // Post the listing update request to SLM + updateSLMListing(listing_uuid, listing_id, version_uuid, activate, count); + + return true; +} + +bool LLMarketplaceData::setVersionFolder(const LLUUID& folder_id, const LLUUID& version_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + S32 listing_id = getListingID(listing_uuid); + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + if (getVersionFolder(listing_uuid) == version_id) + { + // If version folder is unchanged, no point spamming SLM with an update + return true; + } + + // Note: if the version_id is cleared, we need to unlist the listing, otherwise, state unchanged + bool is_listed = (version_id.isNull() ? false : getActivationState(listing_uuid)); + + // Also update the count on hand + S32 count = compute_stock_count(version_id); + if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If the count on hand cannot be evaluated, we will consider it empty (out of stock) when resetting the version folder + // It will get reevaluated and updated once the items are fetched + count = 0; + } + + // Post the listing update request to SLM + updateSLMListing(listing_uuid, listing_id, version_id, is_listed, count); + + return true; +} + +bool LLMarketplaceData::updateCountOnHand(const LLUUID& folder_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + // Folder id can be the root of the listing or not so we need to retrieve the root first + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + S32 listing_id = getListingID(listing_uuid); + if (listing_id == 0) + { + // Listing doesn't exists -> exit with error + return false; + } + + // Compute the new count on hand + S32 count = compute_stock_count(folder_id); + + if (count == getCountOnHand(listing_uuid)) + { + // If count on hand is unchanged, no point spamming SLM with an update + return true; + } + else if (count == COMPUTE_STOCK_NOT_EVALUATED) + { + // If local count on hand is not known at that point, do *not* force an update to SLM + return false; + } + + // Get the unchanged values + bool is_listed = getActivationState(listing_uuid); + LLUUID version_uuid = getVersionFolder(listing_uuid); + + + // Post the listing update request to SLM + updateSLMListing(listing_uuid, listing_id, version_uuid, is_listed, count); + + // Force the local value as it prevents spamming (count update may occur in burst when restocking) + // Note that if SLM has a good reason to return a different value, it'll be updated by the responder + setCountOnHand(listing_uuid, count, false); + + return true; +} + +bool LLMarketplaceData::associateListing(const LLUUID& folder_id, const LLUUID& source_folder_id, S32 listing_id) +{ + if (isListed(folder_id)) + { + // Listing already exists -> exit with error + return false; + } + + // Get the version folder: if there is only one subfolder, we will set it as a version folder immediately + LLUUID version_id = getVersionFolderIfUnique(folder_id); + + // Post the listing associate request to SLM + associateSLMListing(folder_id, listing_id, version_id, source_folder_id); + + return true; +} + +// Methods privately called or called by SLM responders to perform changes +bool LLMarketplaceData::addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, const std::string& edit_url, S32 count) +{ + mMarketplaceItems[folder_id] = LLMarketplaceTuple(folder_id, listing_id, version_id, is_listed); + mMarketplaceItems[folder_id].mEditURL = edit_url; + mMarketplaceItems[folder_id].mCountOnHand = count; + if (version_id.notNull()) + { + mVersionFolders[version_id] = folder_id; + } + return true; +} + +bool LLMarketplaceData::deleteListing(const LLUUID& folder_id, bool update) +{ + LLUUID version_folder = getVersionFolder(folder_id); + + if (mMarketplaceItems.erase(folder_id) != 1) + { + return false; + } + mVersionFolders.erase(version_folder); + + if (update) + { + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::deleteListing(S32 listing_id, bool update) +{ + if (listing_id == 0) + { + return false; + } + + LLUUID folder_id = getListingFolder(listing_id); + return deleteListing(folder_id, update); +} + +// Accessors +bool LLMarketplaceData::getActivationState(const LLUUID& folder_id) +{ + // Listing folder case + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it != mMarketplaceItems.end()) + { + return (it->second).mIsActive; + } + // Version folder case + version_folders_list_t::iterator it_version = mVersionFolders.find(folder_id); + if (it_version != mVersionFolders.end()) + { + marketplace_items_list_t::iterator it = mMarketplaceItems.find(it_version->second); + if (it != mMarketplaceItems.end()) + { + return (it->second).mIsActive; + } + } + return false; +} + +S32 LLMarketplaceData::getListingID(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it == mMarketplaceItems.end() ? 0 : (it->second).mListingId); +} + +S32 LLMarketplaceData::getCountOnHand(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it == mMarketplaceItems.end() ? -1 : (it->second).mCountOnHand); +} + +LLUUID LLMarketplaceData::getVersionFolder(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it == mMarketplaceItems.end() ? LLUUID::null : (it->second).mVersionFolderId); +} + +// Reverse lookup : find the listing folder id from the listing id +LLUUID LLMarketplaceData::getListingFolder(S32 listing_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.begin(); + while (it != mMarketplaceItems.end()) + { + if ((it->second).mListingId == listing_id) + { + return (it->second).mListingFolderId; + } + it++; + } + return LLUUID::null; +} + +std::string LLMarketplaceData::getListingURL(const LLUUID& folder_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + + } + + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + + marketplace_items_list_t::iterator it = mMarketplaceItems.find(listing_uuid); + return (it == mMarketplaceItems.end() ? "" : (it->second).mEditURL); +} + +bool LLMarketplaceData::isListed(const LLUUID& folder_id) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + return (it != mMarketplaceItems.end()); +} + +bool LLMarketplaceData::isListedAndActive(const LLUUID& folder_id) +{ + return (isListed(folder_id) && getActivationState(folder_id)); +} + +bool LLMarketplaceData::isVersionFolder(const LLUUID& folder_id) +{ + version_folders_list_t::iterator it = mVersionFolders.find(folder_id); + return (it != mVersionFolders.end()); +} + +bool LLMarketplaceData::isInActiveFolder(const LLUUID& obj_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(obj_id); + + } + + LLUUID listing_uuid = nested_parent_id(obj_id, depth); + bool active = getActivationState(listing_uuid); + LLUUID version_uuid = getVersionFolder(listing_uuid); + return (active && ((obj_id == version_uuid) || gInventory.isObjectDescendentOf(obj_id, version_uuid))); +} + +LLUUID LLMarketplaceData::getActiveFolder(const LLUUID& obj_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(obj_id); + + } + + LLUUID listing_uuid = nested_parent_id(obj_id, depth); + return (getActivationState(listing_uuid) ? getVersionFolder(listing_uuid) : LLUUID::null); +} + +bool LLMarketplaceData::isUpdating(const LLUUID& folder_id, S32 depth) +{ + // Evaluate the depth if it wasn't passed as a parameter + if (depth < 0) + { + depth = depth_nesting_in_marketplace(folder_id); + } + if ((depth <= 0) || (depth > 2)) + { + // Only listing and version folders though are concerned by that status + return false; + } + else + { + const LLUUID marketplace_listings_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + std::set<LLUUID>::iterator it = mPendingUpdateSet.find(marketplace_listings_uuid); + if (it != mPendingUpdateSet.end()) + { + // If we're waiting for data for the marketplace listings root, we are in the updating process for all + return true; + } + else + { + // Check if the listing folder is waiting or data + LLUUID listing_uuid = nested_parent_id(folder_id, depth); + it = mPendingUpdateSet.find(listing_uuid); + return (it != mPendingUpdateSet.end()); + } + } +} + +void LLMarketplaceData::setUpdating(const LLUUID& folder_id, bool isUpdating) +{ + std::set<LLUUID>::iterator it = mPendingUpdateSet.find(folder_id); + if (it != mPendingUpdateSet.end()) + { + mPendingUpdateSet.erase(it); + } + if (isUpdating) + { + mPendingUpdateSet.insert(folder_id); + } +} + +void LLMarketplaceData::setValidationWaiting(const LLUUID& folder_id, S32 count) +{ + mValidationWaitingList[folder_id] = count; +} + +void LLMarketplaceData::decrementValidationWaiting(const LLUUID& folder_id, S32 count) +{ + waiting_list_t::iterator found = mValidationWaitingList.find(folder_id); + if (found != mValidationWaitingList.end()) + { + found->second -= count; + if (found->second <= 0) + { + mValidationWaitingList.erase(found); + LLInventoryCategory *cat = gInventory.getCategory(folder_id); + validate_marketplacelistings(cat); + update_marketplace_category(folder_id); + gInventory.notifyObservers(); + } + } +} + +// Private Modifiers +bool LLMarketplaceData::setListingID(const LLUUID& folder_id, S32 listing_id, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mListingId = listing_id; + + if (update) + { + update_marketplace_category(folder_id, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::setCountOnHand(const LLUUID& folder_id, S32 count, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mCountOnHand = count; + + return true; +} + +bool LLMarketplaceData::setVersionFolderID(const LLUUID& folder_id, const LLUUID& version_id, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + LLUUID old_version_id = (it->second).mVersionFolderId; + if (old_version_id == version_id) + { + return false; + } + + (it->second).mVersionFolderId = version_id; + mVersionFolders.erase(old_version_id); + if (version_id.notNull()) + { + mVersionFolders[version_id] = folder_id; + } + + if (update) + { + update_marketplace_category(old_version_id, false); + update_marketplace_category(version_id, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::setActivationState(const LLUUID& folder_id, bool activate, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mIsActive = activate; + + if (update) + { + update_marketplace_category((it->second).mListingFolderId, false); + gInventory.notifyObservers(); + } + return true; +} + +bool LLMarketplaceData::setListingURL(const LLUUID& folder_id, const std::string& edit_url, bool update) +{ + marketplace_items_list_t::iterator it = mMarketplaceItems.find(folder_id); + if (it == mMarketplaceItems.end()) + { + return false; + } + + (it->second).mEditURL = edit_url; + return true; +} + + + diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index abe60890a30c6eda48e884fa53543f8f07ecd57b..f8e7ed43647f61b456c456308b36227b18697f92 100755 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -66,8 +66,21 @@ namespace MarketplaceStatusCodes MARKET_PLACE_NOT_INITIALIZED = 0, MARKET_PLACE_INITIALIZING = 1, MARKET_PLACE_CONNECTION_FAILURE = 2, - MARKET_PLACE_MERCHANT = 3, - MARKET_PLACE_NOT_MERCHANT = 4, + MARKET_PLACE_NOT_MERCHANT = 3, + MARKET_PLACE_MERCHANT = 4, + MARKET_PLACE_NOT_MIGRATED_MERCHANT = 5, + MARKET_PLACE_MIGRATED_MERCHANT = 6 + }; +} + +namespace MarketplaceFetchCodes +{ + enum sCode + { + MARKET_FETCH_NOT_DONE = 0, + MARKET_FETCH_LOADING = 1, + MARKET_FETCH_FAILED = 2, + MARKET_FETCH_DONE = 3 }; } @@ -109,6 +122,166 @@ class LLMarketplaceInventoryImporter }; +// Classes handling the data coming from and going to the Marketplace SLM Server DB: +// * implement the Marketplace API +// * cache the current Marketplace data (tuples) +// * provide methods to get Marketplace data on any inventory item +// * set Marketplace data +// * signal Marketplace updates to inventory +namespace SLMErrorCodes +{ + enum eCode + { + SLM_SUCCESS = 200, + SLM_RECORD_CREATED = 201, + SLM_MALFORMED_PAYLOAD = 400, + SLM_NOT_FOUND = 404, + }; +} + +class LLMarketplaceData; +class LLInventoryObserver; + +// A Marketplace item is known by its tuple +class LLMarketplaceTuple +{ +public: + friend class LLMarketplaceData; + + LLMarketplaceTuple(); + LLMarketplaceTuple(const LLUUID& folder_id); + LLMarketplaceTuple(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed = false); + +private: + // Representation of a marketplace item in the Marketplace DB (well, what we know of it...) + LLUUID mListingFolderId; + S32 mListingId; + LLUUID mVersionFolderId; + bool mIsActive; + S32 mCountOnHand; + std::string mEditURL; +}; +// Notes: +// * The mListingFolderId is used as a key to this map. It could therefore be taken off the LLMarketplaceTuple objects themselves. +// * The SLM DB however uses mListingId as its primary key and it shows in its API. In the viewer though, the mListingFolderId is what we use to grab an inventory record. +typedef std::map<LLUUID, LLMarketplaceTuple> marketplace_items_list_t; +typedef std::map<LLUUID, LLUUID> version_folders_list_t; + +// Session cache of all Marketplace tuples +// Notes: +// * There's one and only one possible set of Marketplace dataset per agent and per session thus making it an LLSingleton +// * Some of those records might correspond to folders that do not exist in the inventory anymore. We do not clear them out though. They just won't show up in the UI. + +class LLSLMGetMerchantResponder; +class LLSLMGetListingsResponder; +class LLSLMCreateListingsResponder; +class LLSLMGetListingResponder; +class LLSLMUpdateListingsResponder; +class LLSLMAssociateListingsResponder; +class LLSLMDeleteListingsResponder; + +class LLMarketplaceData + : public LLSingleton<LLMarketplaceData> +{ +public: + friend class LLSLMGetMerchantResponder; + friend class LLSLMGetListingsResponder; + friend class LLSLMCreateListingsResponder; + friend class LLSLMGetListingResponder; + friend class LLSLMUpdateListingsResponder; + friend class LLSLMAssociateListingsResponder; + friend class LLSLMDeleteListingsResponder; + + LLMarketplaceData(); + virtual ~LLMarketplaceData(); + + // Public SLM API : Initialization and status + typedef boost::signals2::signal<void ()> status_updated_signal_t; + void initializeSLM(const status_updated_signal_t::slot_type& cb); + U32 getSLMStatus() const { return mMarketPlaceStatus; } + void setSLMStatus(U32 status); + void getSLMListings(); + bool isEmpty() { return (mMarketplaceItems.size() == 0); } + void setDataFetchedSignal(const status_updated_signal_t::slot_type& cb); + void setSLMDataFetched(U32 status); + U32 getSLMDataFetched() { return mMarketPlaceDataFetched; } + + // High level create/delete/set Marketplace data: each method returns true if the function succeeds, false if error + bool createListing(const LLUUID& folder_id); + bool activateListing(const LLUUID& folder_id, bool activate, S32 depth = -1); + bool clearListing(const LLUUID& folder_id, S32 depth = -1); + bool setVersionFolder(const LLUUID& folder_id, const LLUUID& version_id, S32 depth = -1); + bool associateListing(const LLUUID& folder_id, const LLUUID& source_folder_id, S32 listing_id); + bool updateCountOnHand(const LLUUID& folder_id, S32 depth = -1); + bool getListing(const LLUUID& folder_id, S32 depth = -1); + bool getListing(S32 listing_id); + bool deleteListing(S32 listing_id, bool update = true); + + // Probe the Marketplace data set to identify folders + bool isListed(const LLUUID& folder_id); // returns true if folder_id is a Listing folder + bool isListedAndActive(const LLUUID& folder_id); // returns true if folder_id is an active (listed) Listing folder + bool isVersionFolder(const LLUUID& folder_id); // returns true if folder_id is a Version folder + bool isInActiveFolder(const LLUUID& obj_id, S32 depth = -1); // returns true if the obj_id is buried in an active version folder + LLUUID getActiveFolder(const LLUUID& obj_id, S32 depth = -1); // returns the UUID of the active version folder obj_id is in + bool isUpdating(const LLUUID& folder_id, S32 depth = -1); // returns true if we're waiting from SLM incoming data for folder_id + + // Access Marketplace data set : each method returns a default value if the argument can't be found + bool getActivationState(const LLUUID& folder_id); + S32 getListingID(const LLUUID& folder_id); + LLUUID getVersionFolder(const LLUUID& folder_id); + std::string getListingURL(const LLUUID& folder_id, S32 depth = -1); + LLUUID getListingFolder(S32 listing_id); + S32 getCountOnHand(const LLUUID& folder_id); + + // Used to flag if stock count values for Marketplace have to be updated + bool checkDirtyCount() { if (mDirtyCount) { mDirtyCount = false; return true; } else { return false; } } + void setDirtyCount() { mDirtyCount = true; } + void setUpdating(const LLUUID& folder_id, bool isUpdating); + + // Used to decide when to run a validation on listing folders + void setValidationWaiting(const LLUUID& folder_id, S32 count); + void decrementValidationWaiting(const LLUUID& folder_id, S32 count = 1); + +private: + // Modify Marketplace data set : each method returns true if the function succeeds, false if error + // Used internally only by SLM Responders when data are received from the SLM Server + bool addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, const std::string& edit_url, S32 count); + bool deleteListing(const LLUUID& folder_id, bool update = true); + bool setListingID(const LLUUID& folder_id, S32 listing_id, bool update = true); + bool setVersionFolderID(const LLUUID& folder_id, const LLUUID& version_id, bool update = true); + bool setActivationState(const LLUUID& folder_id, bool activate, bool update = true); + bool setListingURL(const LLUUID& folder_id, const std::string& edit_url, bool update = true); + bool setCountOnHand(const LLUUID& folder_id, S32 count, bool update = true); + + // Private SLM API : package data and get/post/put requests to the SLM Server through the SLM API + void createSLMListing(const LLUUID& folder_id, const LLUUID& version_id, S32 count); + void getSLMListing(S32 listing_id); + void updateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed, S32 count); + void associateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, const LLUUID& source_folder_id); + void deleteSLMListing(S32 listing_id); + std::string getSLMConnectURL(const std::string& route); + + // Handling Marketplace connection and inventory connection + U32 mMarketPlaceStatus; + status_updated_signal_t* mStatusUpdatedSignal; + LLInventoryObserver* mInventoryObserver; + bool mDirtyCount; // If true, stock count value need to be updated at the next check + + // Update data + U32 mMarketPlaceDataFetched; + status_updated_signal_t* mDataFetchedSignal; + std::set<LLUUID> mPendingUpdateSet; + + // Listing folders waiting for validation + typedef std::map<LLUUID,S32> waiting_list_t; + waiting_list_t mValidationWaitingList; + + // The cache of SLM data (at last...) + marketplace_items_list_t mMarketplaceItems; + // We need a list (version folder -> listing folder) because such reverse lookups are frequent + version_folders_list_t mVersionFolders; +}; + #endif // LL_LLMARKETPLACEFUNCTIONS_H diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index f7c2f629ec1a8a4299f8bf6be4fcc2e5b8c6827b..c5fda3c1367ad2620e9a9d24af3aa949aa1588cd 100755 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -62,7 +62,7 @@ LLInboxInventoryPanel::LLInboxInventoryPanel(const LLInboxInventoryPanel::Params LLInboxInventoryPanel::~LLInboxInventoryPanel() {} -LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge) +LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop) { LLUIColor item_color = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE); @@ -74,6 +74,7 @@ LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge params.tool_tip = params.name; params.font_color = item_color; params.font_highlight_color = item_color; + params.allow_drop = allow_drop; return LLUICtrlFactory::create<LLInboxFolderViewFolder>(params); } diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h index c05e18c3007f52a39b261523531783f5c7f4a196..66aafe83d16f92813d30dd00d3a17110c92f3e70 100755 --- a/indra/newview/llpanelmarketplaceinboxinventory.h +++ b/indra/newview/llpanelmarketplaceinboxinventory.h @@ -46,7 +46,7 @@ class LLInboxInventoryPanel : public LLInventoryPanel ~LLInboxInventoryPanel(); // virtual - LLFolderViewFolder * createFolderViewFolder(LLInvFVBridge * bridge); + LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop); LLFolderViewItem * createFolderViewItem(LLInvFVBridge * bridge); }; diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index bf15f56b44043021cf6163ac9d19201546608273..39cf7d4222b6cd2353d6a20dc7c75c49496dd0b9 100755 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -130,7 +130,7 @@ class LLTaskInvFVBridge : public LLFolderViewModelItemInventory virtual void move(LLFolderViewModelItem* parent_listener); virtual BOOL isItemCopyable() const; virtual BOOL copyToClipboard() const; - virtual BOOL cutToClipboard() const; + virtual BOOL cutToClipboard(); virtual BOOL isClipboardPasteable() const; virtual void pasteFromClipboard(); virtual void pasteLinkFromClipboard(); @@ -542,7 +542,7 @@ BOOL LLTaskInvFVBridge::copyToClipboard() const return FALSE; } -BOOL LLTaskInvFVBridge::cutToClipboard() const +BOOL LLTaskInvFVBridge::cutToClipboard() { return FALSE; } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index d7bfd22cc98434908e59dd5c4b65785017d3ca4d..6622fa7d9c63b41783fe97ee7946e05b056c25b8 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1880,6 +1880,11 @@ bool idle_startup() } display_startup(); + + // *TODO : Uncomment that line once the whole grid migrated to SLM and suppress it from LLAgent::handleTeleportFinished() (llagent.cpp) + //check_merchant_status(); + + display_startup(); if (gSavedSettings.getBOOL("HelpFloaterOpen")) { diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index 0a9453534b18310bb08d28884eea7369ada3e156..530bd9a18fa8eaac4166b42630559666d909178a 100755 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -67,19 +67,19 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal mLabel(notification->getName()), mLineEditor(NULL) { - // EXP-1822 - // save currently focused view, so that return focus to it - // on destroying this toast. - LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); - while(current_selection) - { - if (current_selection->isFocusRoot()) - { - mPreviouslyFocusedView = current_selection->getHandle(); - break; - } - current_selection = current_selection->getParent(); - } + // EXP-1822 + // save currently focused view, so that return focus to it + // on destroying this toast. + LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); + while(current_selection) + { + if (current_selection->isFocusRoot()) + { + mPreviouslyFocusedView = current_selection->getHandle(); + break; + } + current_selection = current_selection->getParent(); + } const LLFontGL* font = LLFontGL::getFontSansSerif(); const S32 LINE_HEIGHT = font->getLineHeight(); @@ -431,7 +431,24 @@ LLToastAlertPanel::~LLToastAlertPanel() // return focus to the previously focused view if the viewer is not exiting if (mPreviouslyFocusedView.get() && !LLApp::isExiting()) { - mPreviouslyFocusedView.get()->setFocus(TRUE); + LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus()); + while(current_selection) + { + if (current_selection->isFocusRoot()) + { + break; + } + current_selection = current_selection->getParent(); + } + if (current_selection) + { + // If the focus moved to some other view though, move the focus there + current_selection->setFocus(TRUE); + } + else + { + mPreviouslyFocusedView.get()->setFocus(TRUE); + } } } diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 526f8d1cd83faaa9c49ce1f90570787e36ff5b54..79c31e15bfd63e470fd1da86d358fe3136aad30d 100755 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -821,6 +821,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop, if (!handled) { + // *TODO: Suppress the "outbox" case once "marketplace" is used everywhere for everyone // Disallow drag and drop to 3D from the outbox const LLUUID outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false); if (outbox_id.notNull()) @@ -835,6 +836,20 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop, } } } + // Disallow drag and drop to 3D from the marketplace + const LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); + if (marketplacelistings_id.notNull()) + { + for (S32 item_index = 0; item_index < (S32)mCargoIDs.size(); item_index++) + { + if (gInventory.isObjectDescendentOf(mCargoIDs[item_index], marketplacelistings_id)) + { + *acceptance = ACCEPT_NO; + mToolTipMsg = LLTrans::getString("TooltipOutboxDragToWorld"); + return; + } + } + } dragOrDrop3D( x, y, mask, drop, acceptance ); } diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h index de501ea32ac11c8191b7bbbd4f96329a1d6f885c..63be1ef09b2b94beb88421c02d152139540f7b6b 100755 --- a/indra/newview/lltooldraganddrop.h +++ b/indra/newview/lltooldraganddrop.h @@ -89,6 +89,7 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop> void setCargoCount(U32 count) { mCargoCount = count; } void resetCargoCount() { mCargoCount = 0; } U32 getCargoCount() const { return (mCargoCount > 0) ? mCargoCount : mCargoIDs.size(); } + S32 getCargoIndex() const { return mCurItemIndex; } static S32 getOperationId() { return sOperationId; } diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index 175227173f9bcee99864ed0cd4d15047b0d232e4..3ecb4015cee3ccb5ad3e5169c70478cb81862d37 100755 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -37,6 +37,7 @@ #include "llfloaterinspect.h" #include "lltool.h" #include "llmanipscale.h" +#include "llmarketplacefunctions.h" #include "llselectmgr.h" #include "lltoolbrush.h" #include "lltoolcomp.h" @@ -83,6 +84,8 @@ LLToolMgr::LLToolMgr() LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Active", boost::bind(&LLToolMgr::inEdit, this)); LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Enabled", boost::bind(&LLToolMgr::canEdit, this)); LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Build.Toggle", boost::bind(&LLToolMgr::toggleBuildMode, this, _2)); + LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Marketplace.Enabled", boost::bind(&LLToolMgr::canAccessMarketplace, this)); + LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Marketplace.Toggle", boost::bind(&LLToolMgr::toggleMarketplace, this, _2)); gToolNull = new LLTool(LLStringUtil::null); // Does nothing setCurrentTool(gToolNull); @@ -345,6 +348,23 @@ bool LLToolMgr::inBuildMode() return b; } +bool LLToolMgr::canAccessMarketplace() +{ + return (LLMarketplaceData::instance().getSLMStatus() != MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT) || gSavedSettings.getBOOL("InventoryOutboxDisplayBoth"); +} + +void LLToolMgr::toggleMarketplace(const LLSD& sdname) +{ + const std::string& param = sdname.asString(); + + if ((param != "marketplace") || !canAccessMarketplace()) + { + return; + } + + LLFloaterReg::toggleInstanceOrBringToFront("marketplace_listings"); +} + void LLToolMgr::setTransientTool(LLTool* tool) { if (!tool) diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h index e7d1c56c8315d52ab90fbb682cac7112c869e0ec..a3c1045aacfb00cc6b41c15e0bf680faf53662d7 100755 --- a/indra/newview/lltoolmgr.h +++ b/indra/newview/lltoolmgr.h @@ -54,7 +54,9 @@ class LLToolMgr : public LLSingleton<LLToolMgr> bool inEdit(); bool canEdit(); + bool canAccessMarketplace(); void toggleBuildMode(const LLSD& sdname); + void toggleMarketplace(const LLSD& sdname); /* Determines if we are in Build mode or not. */ bool inBuildMode(); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 8627c848b5b83f32efba1d58e8b163ac596ffd77..2bd8e5f99c6d098befc345440a56fb61496f6454 100755 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -83,6 +83,7 @@ #include "llfloaterland.h" #include "llfloaterlandholdings.h" #include "llfloatermap.h" +#include "llfloatermarketplacelistings.h" #include "llfloatermediasettings.h" #include "llfloatermemleak.h" #include "llfloatermodelpreview.h" @@ -185,6 +186,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("block_timers", "floater_fast_timers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFastTimerView>); LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>); LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); + LLFloaterReg::add("associate_listing", "floater_associate_listing.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAssociateListing>); LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>); LLFloaterReg::add("avatar", "floater_avatar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>); LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>); @@ -237,6 +239,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>); LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>); LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>); + LLFloaterReg::add("item_properties", "floater_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterItemProperties>); LLInspectAvatarUtil::registerFloater(); LLInspectGroupUtil::registerFloater(); LLInspectObjectUtil::registerFloater(); @@ -254,6 +257,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("tex_fetch_debugger", "floater_texture_fetch_debugger.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTextureFetchDebugger>); } LLFloaterReg::add("media_settings", "floater_media_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaSettings>); + LLFloaterReg::add("marketplace_listings", "floater_marketplace_listings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMarketplaceListings>); + LLFloaterReg::add("marketplace_validation", "floater_marketplace_validation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMarketplaceValidation>); LLFloaterReg::add("message_critical", "floater_critical.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>); LLFloaterReg::add("message_tos", "floater_tos.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>); LLFloaterReg::add("moveview", "floater_moveview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMove>); diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index 0401de7e69ced649bc70dbbade5721ff56390b84..158cacbc817be7b45a6c7d2d04bac86e709bdf1c 100644 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -140,7 +140,11 @@ LLViewerFolderDictionary::LLViewerFolderDictionary() addEntry(LLFolderType::FT_OUTBOX, new ViewerFolderEntry("Merchant Outbox", "Inv_SysOpen", "Inv_SysClosed", FALSE, boxes_invisible)); addEntry(LLFolderType::FT_BASIC_ROOT, new ViewerFolderEntry("Basic Root", "Inv_SysOpen", "Inv_SysClosed", FALSE, true)); - + + addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new ViewerFolderEntry("Marketplace Listings", "Inv_SysOpen", "Inv_SysClosed", FALSE, boxes_invisible)); + addEntry(LLFolderType::FT_MARKETPLACE_STOCK, new ViewerFolderEntry("New Stock", "Inv_StockFolderOpen", "Inv_StockFolderClosed", FALSE, false, "default")); + addEntry(LLFolderType::FT_MARKETPLACE_VERSION, new ViewerFolderEntry("New Version", "Inv_VersionFolderOpen","Inv_VersionFolderClosed", FALSE, false, "default")); + addEntry(LLFolderType::FT_NONE, new ViewerFolderEntry("New Folder", "Inv_FolderOpen", "Inv_FolderClosed", FALSE, false, "default")); for (U32 type = (U32)LLFolderType::FT_ENSEMBLE_START; type <= (U32)LLFolderType::FT_ENSEMBLE_END; ++type) diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 81ea91a6616410ab4b11410984c4605fdf6a64ef..729af3c8edcce71a3824b6fded6cf25c255b1bab 100755 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -817,6 +817,36 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const return true; } +bool LLViewerInventoryCategory::acceptItem(LLInventoryItem* inv_item) +{ + if (!inv_item) + { + return false; + } + + // Only stock folders have limitation on which item they will accept + bool accept = true; + if (getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK) + { + // If the item is copyable (i.e. non stock) do not accept the drop in a stock folder + if (inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID())) + { + accept = false; + } + else + { + LLInventoryModel::cat_array_t* cat_array; + LLInventoryModel::item_array_t* item_array; + gInventory.getDirectDescendentsOf(getUUID(),cat_array,item_array); + // Destination stock folder must be empty OR types of incoming and existing items must be identical and have the same permissions + accept = (!item_array->size() || + ((item_array->at(0)->getInventoryType() == inv_item->getInventoryType()) && + (item_array->at(0)->getPermissions().getMaskNextOwner() == inv_item->getPermissions().getMaskNextOwner()))); + } + } + return accept; +} + void LLViewerInventoryCategory::determineFolderType() { /* Do NOT uncomment this code. This is for future 2.1 support of ensembles. diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index ca925656003be0b167ad8d6b6eb2cf75c4219376..4e91e4110af684bbd4a5d13e009daf4a7f228416 100755 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -228,6 +228,9 @@ class LLViewerInventoryCategory : public LLInventoryCategory void changeType(LLFolderType::EType new_folder_type); virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0); virtual BOOL unpackMessage(const LLSD& category); + + // returns true if the category object will accept the incoming item + bool acceptItem(LLInventoryItem* inv_item); private: friend class LLInventoryModel; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index b797e0c835f04365748c27c14d7381c744eecad3..67f8581b9de58af3d6dd41a794eba3e733b86862 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -88,6 +88,7 @@ #include "llinventoryfunctions.h" #include "llpanellogin.h" #include "llpanelblockedlist.h" +#include "llmarketplacefunctions.h" #include "llmenuoptionpathfindingrebakenavmesh.h" #include "llmoveview.h" #include "llparcel.h" @@ -98,6 +99,7 @@ #include "llspellcheckmenuhandler.h" #include "llstatusbar.h" #include "lltextureview.h" +#include "lltoolbarview.h" #include "lltoolcomp.h" #include "lltoolmgr.h" #include "lltoolpie.h" @@ -386,6 +388,66 @@ void set_underclothes_menu_options() } } +void set_merchant_SLM_menu() +{ + // DD-170 : SLM Alpha and Beta program : for the moment, we always show the SLM menu and + // tools so that all merchants can try out the UI, even if not migrated. + // *TODO : Keep SLM UI hidden for non migrated merchant in released viewer + + //if (LLMarketplaceData::instance().getSLMStatus() == MarketplaceStatusCodes::MARKET_PLACE_NOT_MIGRATED_MERCHANT) + //{ + // Merchant not migrated: show only the old Merchant Outbox menu + // gMenuHolder->getChild<LLView>("MerchantOutbox")->setVisible(TRUE); + //} + //else + //{ + // All other cases (new merchant, not merchant, migrated merchant): show the new Marketplace Listings menu and enable the tool + gMenuHolder->getChild<LLView>("MarketplaceListings")->setVisible(TRUE); + LLCommand* command = LLCommandManager::instance().getCommand("marketplacelistings"); + gToolBarView->enableCommand(command->id(), true); + //} +} + +void set_merchant_outbox_menu(U32 status, const LLSD& content) +{ + // If the merchant is fully migrated, the API is disabled (503) and we won't show the old menu item. + // In all other cases, we show it. + if (status != MarketplaceErrorCodes::IMPORT_SERVER_API_DISABLED) + { + gMenuHolder->getChild<LLView>("MerchantOutbox")->setVisible(TRUE); + } +} + +void check_merchant_status() +{ + if (!gSavedSettings.getBOOL("InventoryOutboxDisplayBoth")) + { + // Reset the SLM status: we actually want to check again, that's the point of calling check_merchant_status() + LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED); + + // Hide SLM related menu item + gMenuHolder->getChild<LLView>("MarketplaceListings")->setVisible(FALSE); + + // Also disable the toolbar button for Marketplace Listings + LLCommand* command = LLCommandManager::instance().getCommand("marketplacelistings"); + gToolBarView->enableCommand(command->id(), false); + + // Launch an SLM test connection to get the merchant status + LLMarketplaceData::instance().initializeSLM(boost::bind(&set_merchant_SLM_menu)); + + // Do the Merchant Outbox init only once per session + if (LLMarketplaceInventoryImporter::instance().getMarketPlaceStatus() == MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED) + { + // Hide merchant outbox related menu item + gMenuHolder->getChild<LLView>("MerchantOutbox")->setVisible(FALSE); + + // Launch a Merchant Outbox test connection to get the migration status + LLMarketplaceInventoryImporter::instance().setStatusReportCallback(boost::bind(&set_merchant_outbox_menu,_1, _2)); + LLMarketplaceInventoryImporter::instance().initialize(); + } + } +} + void init_menus() { // Initialize actions diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index 7f09fc2d8faf74acc4c56cd89083ca960a1736c0..b7bdf0015775bb61bfd4814f0019267c462ef3f1 100755 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -83,6 +83,7 @@ BOOL enable_god_full(void* user_data); BOOL enable_god_liaison(void* user_data); BOOL enable_god_basic(void* user_data); void set_underclothes_menu_options(); +void check_merchant_status(); void exchange_callingcard(const LLUUID& dest_id); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 459bdca8dff87f0fe1f4ed94809c4507f9e2a2b8..2775a320d4a697fa78ec7686fb5b3249fd0e036d 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -71,6 +71,7 @@ #include "llinventoryobserver.h" #include "llinventorypanel.h" #include "llfloaterimnearbychat.h" +#include "llmarketplacefunctions.h" #include "llnotifications.h" #include "llnotificationsutil.h" #include "llpanelgrouplandmoney.h" @@ -5910,7 +5911,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) LL_WARNS() << "attempt_standard_notification: Attempted to read notification parameter data into LLSD but failed:" << llsdRaw << LL_ENDL; } } - + handle_trusted_experiences_notification(llsdBlock); @@ -5994,7 +5995,25 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) make_ui_sound("UISndRestart"); } - + + // Special Marketplace update notification + if (notificationID == "SLM_UPDATE_FOLDER") + { + std::string state = llsdBlock["state"].asString(); + if (state == "deleted") + { + // Perform the deletion viewer side, no alert shown in this case + LLMarketplaceData::instance().deleteListing(llsdBlock["listing_id"].asInteger()); + return true; + } + else + { + // In general, no message will be displayed, all we want is to get the listing updated in the marketplace floater + // If getListing() fails though, the message of the alert will be shown by the caller of attempt_standard_notification() + return LLMarketplaceData::instance().getListing(llsdBlock["listing_id"].asInteger()); + } + } + LLNotificationsUtil::add(notificationID, llsdBlock); return true; } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 291af28bc3328e9a3029062c5eb922afde5a22fe..5c7071c63def371cf78a11630bc6f9c19dfa1794 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -2809,6 +2809,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) capabilityNames.append("CopyInventoryFromNotecard"); capabilityNames.append("CreateInventoryCategory"); capabilityNames.append("DispatchRegionInfo"); + capabilityNames.append("DirectDelivery"); capabilityNames.append("EnvironmentSettings"); capabilityNames.append("EstateChangeInfo"); capabilityNames.append("EventQueueGet"); diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 5bdd662152a07cc80b4b889156914254591152df..cdd82a8a4462179090c962002e31f556ab8ba559 100755 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -111,6 +111,7 @@ class LLVOAvatarSelf : private: LLUUID mInitialBakeIDs[6]; + //bool mInitialBakesLoaded; /******************************************************************************** diff --git a/indra/newview/skins/default/textures/icons/Inv_StockFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_StockFolderClosed.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc484dc2279d69506fe4b7b7e9ead14523bef4c Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Inv_StockFolderClosed.png differ diff --git a/indra/newview/skins/default/textures/icons/Inv_StockFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_StockFolderOpen.png new file mode 100644 index 0000000000000000000000000000000000000000..0d140b56a70408c4a237538bed20aeca9f43118e Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Inv_StockFolderOpen.png differ diff --git a/indra/newview/skins/default/textures/icons/Inv_VersionFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_VersionFolderClosed.png new file mode 100644 index 0000000000000000000000000000000000000000..e89a4d7f31aa3f891f3e1da087bf7cde90fbee9f Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Inv_VersionFolderClosed.png differ diff --git a/indra/newview/skins/default/textures/icons/Inv_VersionFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_VersionFolderOpen.png new file mode 100644 index 0000000000000000000000000000000000000000..659d7d392f85fb8b8900fd89eb4431d5101af0a5 Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Inv_VersionFolderOpen.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 408ee39f9b0d3e9fbd51e02078412197ed642899..a5f2ce1f840d8cfbf47cddb04a37ec00d773274c 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -140,6 +140,7 @@ with the same filename but different name <texture name="Command_Inventory_Icon" file_name="toolbar_icons/inventory.png" preload="true" /> <texture name="Command_Map_Icon" file_name="toolbar_icons/map.png" preload="true" /> <texture name="Command_Marketplace_Icon" file_name="toolbar_icons/marketplace.png" preload="true" /> + <texture name="Command_MktListings_Icon" file_name="toolbar_icons/mktlistings.png" preload="true" /> <texture name="Command_MiniCart_Icon" file_name="toolbar_icons/mini_cart.png" preload="true" /> <texture name="Command_MiniMap_Icon" file_name="toolbar_icons/mini_map.png" preload="true" /> <texture name="Command_Move_Icon" file_name="toolbar_icons/move.png" preload="true" /> @@ -306,6 +307,8 @@ with the same filename but different name <texture name="Inv_Snapshot" file_name="icons/Inv_Snapshot.png" preload="false" /> <texture name="Inv_Socks" file_name="icons/Inv_Socks.png" preload="false" /> <texture name="Inv_Sound" file_name="icons/Inv_Sound.png" preload="false" /> + <texture name="Inv_StockFolderClosed" file_name="icons/Inv_StockFolderClosed.png" preload="false" /> + <texture name="Inv_StockFolderOpen" file_name="icons/Inv_StockFolderOpen.png" preload="false" /> <texture name="Inv_SysClosed" file_name="icons/Inv_SysClosed.png" preload="false" /> <texture name="Inv_SysOpen" file_name="icons/Inv_SysOpen.png" preload="false" /> <texture name="Inv_Tattoo" file_name="icons/Inv_Tattoo.png" preload="false" /> @@ -317,6 +320,8 @@ with the same filename but different name <texture name="Inv_Undershirt" file_name="icons/Inv_Undershirt.png" preload="false" /> <texture name="Inv_Link" file_name="icons/Inv_Link.png" preload="false" /> <texture name="Inv_Invalid" file_name="icons/Inv_Invalid.png" preload="false" /> + <texture name="Inv_VersionFolderClosed" file_name="icons/Inv_VersionFolderClosed.png" preload="false" /> + <texture name="Inv_VersionFolderOpen" file_name="icons/Inv_VersionFolderOpen.png" preload="false" /> <texture name="Linden_Dollar_Alert" file_name="widgets/Linden_Dollar_Alert.png"/> <texture name="Linden_Dollar_Background" file_name="widgets/Linden_Dollar_Background.png"/> @@ -334,6 +339,7 @@ with the same filename but different name <texture name="Map_Placeholder_Icon" file_name="icons/map_placeholder.png" preload="true" /> + <texture name="Marketplace_Dropzone_Background" file_name="widgets/Marketplace_Dropzone_Background.png" preload="true" /> <texture name="MarketplaceBtn_Off" file_name="widgets/MarketplaceBtn_Off.png" preload="true" scale.left="30" scale.top="19" scale.right="35" scale.bottom="4" /> <texture name="MarketplaceBtn_Selected" file_name="widgets/MarketplaceBtn_Selected.png" preload="true" scale.left="30" scale.top="19" scale.right="35" scale.bottom="4" /> diff --git a/indra/newview/skins/default/textures/toolbar_icons/mktlistings.png b/indra/newview/skins/default/textures/toolbar_icons/mktlistings.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f90461d76a6f989c5e3b0f90935e4b6ae1b032 Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/mktlistings.png differ diff --git a/indra/newview/skins/default/textures/widgets/Marketplace_Dropzone_Background.png b/indra/newview/skins/default/textures/widgets/Marketplace_Dropzone_Background.png new file mode 100644 index 0000000000000000000000000000000000000000..9478f7b813eccf8a0750a76dc818910eb7c8dd77 Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/Marketplace_Dropzone_Background.png differ diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index bc0eae7c5de4d4233018aefb482199e423ff1b71..ee631476cb3085ed7fdc5668943bec9c73428276 100755 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -1,74 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="INFO ÃœBER [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Kompiliert mit [COMPILER] version [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Sie befinden sich an [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(globale Koordinaten [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Speicher: [MEMORY_MB] MB -Betriebssystem, Version: [OS_VERSION] -Grafikkarten-Hersteller: [GRAPHICS_CARD_VENDOR] -Grafikkarten: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows Grafiktreiber-Version: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL Version: [OPENGL_VERSION] - -libcurl-Version: [LIBCURL_VERSION] -J2C-Decoderversion: [J2C_VERSION] -Audio-Treiberversion: [AUDIO_DRIVER_VERSION] -Qt Webkit-Version: [QT_WEBKIT_VERSION] -Voice-Serverversion: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (keiner) - </floater.string> - <floater.string name="AboutTraffic"> - Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Fehler beim Abrufen der URL für die Server-Versionshinweise. - </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="In Zwischenablage kopieren" name="copy_btn"/> </panel> <panel label="Danksagung" name="credits_panel"> - <text name="linden_intro"> - Second Life wird präsentiert von den Lindens: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - mit Open-Source-Beiträgen von: - </text> - <text_editor name="contrib_names"> - Dummy-Name wird zur Laufzeit ersetzt - </text_editor> - <text name="trans_intro"> - mit Ãœbersetzungen von: - </text> - <text_editor name="trans_names"> - Dummy Name wird zur Laufzeit ersetzt - </text_editor> + <text name="linden_intro">Second Life wird präsentiert von den Lindens +mit Open-Source-Beiträgen von:</text> + <text_editor name="contrib_names">Dummy-Name wird zur Laufzeit ersetzt</text_editor> </panel> <panel label="Lizenzen" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion. + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion. APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg (daniel@haxx.se). @@ -95,8 +37,7 @@ Voice-Serverversion: [VOICE_VERSION] Alle Rechte vorbehalten. Details siehe licenses.txt. - Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_associate_listing.xml b/indra/newview/skins/default/xui/de/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..827b1b0aeab82d26c253f80139d12e0bf328ea01 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="AUFLISTUNG VERKNÃœPFEN"> + <text name="message">Auflistungs-ID:</text> + <line_editor name="listing_id">ID hier eingeben</line_editor> + <button label="OK" name="OK"/> + <button label="Abbrechen" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/de/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..c26f7f367d794c81f902c5b191348b2a296e4f11 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="SCHWEBEHÖHE FESTLEGEN"> + <slider label="Höhe" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml index 7f48105460cff93802ca3a4fb8de84c0918a6ed2..92c038057f6ea43c6f03a9fde43af3629aa6bcc8 100755 --- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="EIGENSCHAFTEN: INVENTAROBJEKT"> - <floater.string name="unknown"> - (unbekannt) - </floater.string> - <floater.string name="public"> - (öffentlich) - </floater.string> - <floater.string name="you_can"> - Sie können: - </floater.string> - <floater.string name="owner_can"> - Eigentümer kann: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Name: - </text> - <text name="LabelItemDescTitle"> - Beschreibung: - </text> - <text name="LabelCreatorTitle"> - Ersteller: - </text> + <floater.string name="unknown">(unbekannt)</floater.string> + <floater.string name="public">(öffentlich)</floater.string> + <floater.string name="you_can">Sie können:</floater.string> + <floater.string name="owner_can">Eigentümer kann:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Name:</text> + <text name="LabelItemDescTitle">Beschreibung:</text> + <text name="LabelCreatorTitle">Ersteller:</text> <button label="Profil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Eigentümer: - </text> + <text name="LabelOwnerTitle">Eigentümer:</text> <button label="Profil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Erworben: - </text> - <text name="LabelAcquiredDate"> - Mittwoch, 24. Mai 2006, 12:50:46 - </text> - <text name="OwnerLabel"> - Sie: - </text> + <text name="LabelAcquiredTitle">Erworben:</text> + <text name="LabelAcquiredDate">Mittwoch, 24. Mai 2006, 12:50:46</text> + <text name="OwnerLabel">Sie:</text> <check_box label="Bearbeiten" name="CheckOwnerModify"/> <check_box label="Kopieren" left_delta="85" name="CheckOwnerCopy"/> <check_box label="Wiederverkaufen" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Jeder: - </text> + <text name="AnyoneLabel">Jeder:</text> <check_box label="Kopieren" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppe: - </text> + <text name="GroupLabel">Gruppe:</text> <check_box label="Teilen" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="150"> - Nächster Eigentümer: - </text> + <text name="NextOwnerLabel" width="150">Nächster Eigentümer:</text> <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> <check_box label="Kopieren" left_delta="55" name="CheckNextOwnerCopy"/> <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/> <check_box label="Zum Verkauf" name="CheckPurchase"/> - <combo_box name="combobox sale copy" left_pad="25"> - <combo_box.item label="Kopieren" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopie" name="Copy"/> + <combo_box.item label="Inhalt" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preis:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_item_properties.xml b/indra/newview/skins/default/xui/de/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb8314ad139b8aae690bc145ac45783d28c4a862 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="OBJEKTEIGENSCHAFTEN"/> diff --git a/indra/newview/skins/default/xui/de/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/de/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd6e2d904f0d7e51f8ae849928d2921cc9f315ca --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="MARKTPLATZ-AUFLISTUNGEN"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Laden...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/de/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..4782b353b4e52d3eb1b83cec5833de109ec6882c --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Marketplace-Auflistungen prüfen"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_openobject.xml b/indra/newview/skins/default/xui/de/floater_openobject.xml index 5aa4477f2e1fa97d8f14b7eb7d972c2ae4224db4..cd7796418c9da4a528ba3f19fe9433b30c87a905 100755 --- a/indra/newview/skins/default/xui/de/floater_openobject.xml +++ b/indra/newview/skins/default/xui/de/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="120"/> - <button label="Kopieren und zum Outfit hinzufügen" label_selected="Kopieren und zum Outfit hinzufügen" left_pad="6" name="copy_and_wear_button" width="136"/> + <text name="border_note"> + In Inventar kopieren und tragen + </text> + <button label="Zum Outfit hinzufügen" label_selected="Zum Outfit hinzufügen" left_pad="6" name="copy_and_wear_button" width="136"/> + <button label="Outfit ersetzen" label_selected="Outfit ersetzen" name="copy_and_replace_button"/> + <button label="Nur in Inventar kopieren" label_selected="Nur in Inventar kopieren" name="copy_to_inventory_button" width="120"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml index a0a622ecbc210fe4413c0c85c3f5fe8eca463b92..1882f5150b523c79ca51663db83f606c4ff0a166 100755 --- a/indra/newview/skins/default/xui/de/floater_pay.xml +++ b/indra/newview/skins/default/xui/de/floater_pay.xml @@ -1,25 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Gruppe bezahlen - </string> - <string name="payee_resident"> - Einwohner bezahlen - </string> - <text name="payee_label" width="130"> - Bezahlen: - </text> - <icon name="icon_person" tool_tip="Person"/> - <text left="130" name="payee_name"> - Extrem langen Namen testen, um zu prüfen, ob er abgeschnitten wird - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text name="amount text"> - oder Betrag auswählen: - </text> - <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> - <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> + <string name="payee_group">Gruppe bezahlen</string> + <string name="payee_resident">Einwohner bezahlen</string> + <text name="paying_text">Sie zahlen:</text> + <text left="130" name="payee_name">Extrem langen Namen testen, um zu prüfen, ob er abgeschnitten wird</text> + <panel label="Suchen" name="PatternsPanel"> + <button label="L$ 1 zahlen" label_selected="L$ 1 zahlen" name="fastpay 1"/> + <button label="L$ 5 zahlen" label_selected="L$ 5 zahlen" name="fastpay 5"/> + <button label="L$ 10 zahlen" label_selected="L$ 10 zahlen" name="fastpay 10"/> + <button label="L$ 20 zahlen" label_selected="L$ 20 zahlen" name="fastpay 20"/> + </panel> + <panel label="Suchen" name="InputPanel"> + <text name="amount text">Anderer Betrag:</text> + <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_pay_object.xml b/indra/newview/skins/default/xui/de/floater_pay_object.xml index 7159bbadb347671837c32ff180e97cf651bf6289..35f3ca032a38be8f05a8823219e972f18a07af23 100755 --- a/indra/newview/skins/default/xui/de/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/de/floater_pay_object.xml @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group" width="105"> - Gruppe bezahlen - </string> - <string name="payee_resident" width="118"> - Einwohner bezahlen - </string> - <icon name="icon_person" tool_tip="Person"/> - <text left="128" name="payee_name" width="168"> - Ericacita Moostopolison - </text> - <text halign="left" name="object_name_label"> - Ãœber Objekt: - </text> + <string name="payee_group" width="105">Gruppe bezahlen</string> + <string name="payee_resident" width="118">Einwohner bezahlen</string> + <text name="paying_text">Sie zahlen:</text> + <text left="128" name="payee_name" width="168">Ericacita Moostopolison</text> + <text halign="left" name="object_name_label">Ãœber Objekt:</text> <icon name="icon_object" tool_tip="Objekte"/> - <text left="105" name="object_name_text"> - ... - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text name="amount text"> - oder Betrag auswählen: - </text> - <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> - <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn" width="76"/> + <text left="105" name="object_name_text">...</text> + <panel label="Suchen" name="PatternsPanel"> + <button label="L$ 1 zahlen" label_selected="L$ 1 zahlen" name="fastpay 1"/> + <button label="L$ 5 zahlen" label_selected="L$ 5 zahlen" name="fastpay 5"/> + <button label="L$ 10 zahlen" label_selected="L$ 10 zahlen" name="fastpay 10"/> + <button label="L$ 20 zahlen" label_selected="L$ 20 zahlen" name="fastpay 20"/> + </panel> + <panel label="Suchen" name="InputPanel"> + <text name="amount text">Anderer Betrag:</text> + <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml index 7888c7b0a119d7e77cf3052f69d62f390eebd180..e0f37b28af7bb9e0a526a76b22b2b58bb6990b1d 100755 --- a/indra/newview/skins/default/xui/de/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mein Aussehen" name="Change Outfit"/> <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/> <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> + <menu_item_call label="Schwebehöhe" name="Hover Height"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml index 022cd8c3caa513a3800021740928ef50d8ed0157..b53f8cd6af9faf038a2f3d7bcb0502a93279b06b 100755 --- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mein Aussehen" name="Chenge Outfit"/> <menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/> <menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/> + <menu_item_call label="Schwebehöhe" name="Hover Height"/> <menu_item_call label="Meine Freunde" name="Friends..."/> <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index d838f736f88ea7b673c848b4b76483f3ab57522b..e1f545adfc22b8884dfd3b7bffcbe463c4153a03 100755 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Auflistung erstellen" name="Marketplace Create Listing"/> + <menu_item_call label="Auflistung verknüpfen" name="Marketplace Associate Listing"/> + <menu_item_call label="Auflistung abrufen (aktualisieren)" name="Marketplace Get Listing"/> + <menu_item_call label="Auf Fehler prüfen" name="Marketplace Check Listing"/> + <menu_item_call label="Auflistung bearbeiten" name="Marketplace Edit Listing"/> + <menu_item_call label="Auflisten" name="Marketplace List"/> + <menu_item_call label="Entfernen" name="Marketplace Unlist"/> + <menu_item_call label="Aktivieren" name="Marketplace Activate"/> + <menu_item_call label="Deaktivieren" name="Marketplace Deactivate"/> <menu_item_call label="Teilen" name="Share"/> <menu_item_call label="Kaufen" name="Task Buy"/> <menu_item_call label="Öffnen" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Hinzufügen" name="Wearable Add"/> <menu_item_call label="Ausziehen" name="Take Off"/> <menu_item_call label="In Händler-Outbox kopieren" name="Merchant Copy"/> - <menu_item_call label="In Marktplatz übertragen" name="Marketplace Send"/> + <menu_item_call label="In Marktplatz-Auflistungen kopieren" name="Marketplace Copy"/> + <menu_item_call label="In Marktplatz-Auflistungen verschieben" name="Marketplace Move"/> <menu_item_call label="--keine Optionen--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_marketplace_view.xml b/indra/newview/skins/default/xui/de/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..41516a1e7c3f28ed06bf1f13b823962b1becced1 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Nach verfügbarer Menge sortieren (niedrig bis hoch)" name="sort_by_stock_amount"/> + <menu_item_check label="Nur Auflistungsordner anzeigen" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index a328ca39f8e6c0a0726c2c4228fc38966faf6dc7..1924ff4ec382a32927c2ceeff10e2f7da1d6a9f9 100755 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/> <menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/> + <menu_item_call label="Marktplatz-Auflistungen..." name="MarketplaceListings"/> <menu_item_call label="Kontoübersicht..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> </menu_item_call> @@ -251,6 +252,7 @@ <menu_item_check label="Textur" name="Texture Console"/> <menu_item_check label="Fehler beseitigen" name="Debug Console"/> <menu_item_call label="Meldungen" name="Notifications"/> + <menu_item_check label="Regions-Debug-Konsole" name="Region Debug Console"/> <menu_item_check label="Schnelle Timer" name="Fast Timers"/> <menu_item_check label="Speicher" name="Memory"/> <menu_item_check label="Szenestatistiken" name="Scene Statistics"/> @@ -354,7 +356,7 @@ <menu_item_check label="Positionen der interpolierten Objekte anfragen" name="Ping Interpolate Object Positions"/> <menu_item_call label="Ein Paket fallenlassen" name="Drop a Packet"/> </menu> - <menu_item_call label="Geskriptete Kamera ausgeben" name="Dump Scripted Camera"/> + <menu_item_call label="Geskriptete Kamera ausgeben" name="Dump Scripted Camera"/> <menu label="Rekorder" name="Recorder"> <menu_item_call label="Wiedergabe starten" name="Start Playback"/> <menu_item_call label="Wiedergabe stoppen" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 09cba36e25a43a7ff2e27207e5fb9609580e32fa..0b1c18cd51c9a59e1d1fef712da1ffb69c2c0b48 100755 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -129,6 +129,88 @@ Aufgrund eines System- oder Netzwerkfehlers wurden keine Ordner an den Marktplat Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschlagen. Versuchen Sie es später erneut. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Kopieren oder Verschieben in Bestandsordner fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Kopieren oder Verschieben von Marktplatz-Auflistungen fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Marktplatztransaktion fehlgeschlagen mit Fehler: + + Grund: „[ERROR_REASON]“ + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Wir konnten dieses Produkt nicht auflisten bzw. den Versionsordner nicht aktivieren. Dies liegt meist an fehlenden Informationen im Formular zur Beschreibung der Auflistung, kann aber auch auf eine falsche Ordnerstruktur zurückzuführen sein. Bearbeiten Sie die Auflistung oder überprüfen Sie den Auflistungsordner auf Fehler. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Auflistung in Marktplatz fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Aktivierung dieses Versionsordners fehlgeschlagen mit Fehler: + + „[ERROR_CODE]“ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Diese Aktion ändert den aktiven Inhalt dieser Auflistung. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Ändern einer aktiven Auflistung im Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Objekte, die ins Marktplatz-Auflistungsfenster gezogen werden, werden verschoben, nicht kopiert. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Verschieben eines Objekts aus dem Inventar in den Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Wenn Sie einen Auflistungsordner verschieben oder löschen, wird Ihre Marktplatz-Auflistung gelöscht. Um die Marktplatz-Auflistung beizubehalten, verschieben oder löschen Sie den Inhalt des Versionsordners, den Sie ändern möchten. Möchten Sie fortfahren? + <usetemplate ignoretext="Bestätigen, bevor ich eine Auflistung aus dem Marktplatz entferne oder verschiebe" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Sie haben keine Berechtigung, eines oder mehrere dieser Objekte in den Marktplatz zu kopieren. Sie können sie verschieben oder zurücklassen. + <usetemplate canceltext="Abbrechen" ignoretext="Vor Kopieren einer Auswahl mit kopiergeschützten Objekten in den Marktplatz bestätigen" name="yesnocancelbuttons" notext="Artikel nicht verschieben" yestext="Artikel verschieben"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Diese Aktion entfernt diese Auflistung. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Entfernen einer aktiven Auflistung aus dem Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Diese Aktion deaktiviert den Versionsordner der aktuellen Auflistung. Möchten Sie fortfahren? + <usetemplate ignoretext="Vor Deaktivieren des Versionsordners einer Auflistung im Marktplatz bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Diese Auflistung konnte nicht aktualisiert werden. +[[URL] Klicken Sie hier], um sie im Marktplatz zu bearbeiten. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Sie können keine Kleidung oder Körperteile tragen, die im Marktplatz-Auflistungsordner enthalten sind + </notification> + <notification name="AlertMerchantListingInvalidID"> + Auflistungs-ID ungültig. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + In dieser Auflistung gibt es mehrere oder keine Versionsordner. Sie müssen später einen auswählen und aktivieren. + <usetemplate ignoretext="Benachrichtung zur Versionsordneraktivierung, wenn ich eine Auflistung mit mehreren Versionsordnern erstelle" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Wir haben Bestandsobjekte unterschiedlicher Typen in separate Bestandsordner gelegt, damit wir Ihren Ordner auflisten können. + <usetemplate ignoretext="Benachrichtigen,wenn Bestandsordner vor dem Auflisten aufgeteilt wird" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Wir haben Ihre Auflistung entfernt, da der Bestandsordner leer ist. Um diese Auflistung wieder zu listen, müssen Sie weitere Einheiten zum Bestandsordner hinzufügen. + <usetemplate ignoretext="Benachrichtigen, wenn Auflistung aufgrund eines leeren Bestandsordners nicht aufgelistet wird" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut. </notification> @@ -480,6 +562,10 @@ Hinweis: Der Cache wird dabei gelöscht/geleert. Änderungen speichern? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/> </notification> + <notification name="DeleteNotecard"> + Notizkarte löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Speichern der Geste fehlgeschlagen. Die Geste besteht aus zu vielen Schritten. @@ -1882,6 +1968,9 @@ Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belas Die Region, die Sie besuchen möchten, enthält Inhalte, die Ihre aktuellen Einstellungen überschreiten. Sie können Ihre Einstellungen unter „Ich“ > „Einstellungen“ > „Allgemein“ ändern. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> Die Region, die Sie besuchen möchten, enthält [REGIONMATURITY]-Inhalte, die nur für Erwachsene zugänglich sind. <url name="url"> @@ -2171,6 +2260,10 @@ Inventarobjekt(e) verschieben? <ignore name="ignore" text="Ich habe die Aktion „Objekt bezahlen" eingestellt, während ich ein Objekt gebaut habe, dass kein Geld()-Skript enthält."/> </form> </notification> + <notification name="PayConfirmation"> + Bestätigen Sie, dass Sie L$ [AMOUNT] an [TARGET] zahlen möchten. + <usetemplate ignoretext="Vor den Bezahlen bestätigen (Summen über L$ 200)" name="okcancelignore" notext="Abbrechen" yestext="Bezahlen"/> + </notification> <notification name="OpenObjectCannotCopy"> Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt. </notification> @@ -3855,9 +3948,11 @@ Warten Sie kurz und versuchen Sie es noch einmal. </notification> <notification name="TeleportedByAttachment"> Sie wurden von einem Anhang an [ITEM_ID] teleportiert + <usetemplate ignoretext="Teleport: Sie wurden von einem Anhang teleportiert" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Sie wurden von Objekt „[OBJECT_NAME]“ auf der Parzelle „[PARCEL_NAME]“ teleportiert + <usetemplate ignoretext="Teleport: Sie wurden von einem Objekt in einer Parzelle teleportiert" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Sie wurden von Objekt „[OBJECT_NAME]“, das [OWNER_ID] gehört, teleportiert @@ -4189,7 +4284,7 @@ Wählen Sie eine kleinere Landfläche aus. <usetemplate ignoretext="Dateien können nicht verschoben werden. Vorheriger Pfad wurde wiederhergestellt." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Die Standardberechtigungen konnten aus folgendem Grund nicht gespeichert werden: [REASON]. Versuchen Sie später, die Standardberechtigungen einzustellen. + Problem beim Speichern der standardmäßigen Objektberechtigungen: [REASON]. Versuchen Sie später, die Standardberechtigungen einzustellen. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml index 816f22178c0fd30c293428af23a7a8e9a6723ddd..32c9598edfe0ac71a94765c7a1040a0e337218a0 100755 --- a/indra/newview/skins/default/xui/de/panel_login.xml +++ b/indra/newview/skins/default/xui/de/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=de - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=de</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Benutzername" name="username_combo" tool_tip="Bei der Registrierung gewählter Benutzername wie „berndschmidt12“ oder „Liebe Sonne“"/> <line_editor label="Kennwort" name="password_edit"/> - <check_box label="Details speichern" name="remember_check"/> - <text name="forgot_password_text"> - Kennwort vergessen - </text> - <button label="Anmelden" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - bei letztem Ort - </text> <combo_box label="Meine Lieblingsorte" name="start_location_combo"> + <combo_box.item label="Mein letzter Standort" name="MyLastLocation"/> <combo_box.item label="Mein Zuhause" name="MyHome"/> </combo_box> - <button label="Anmelden" name="connect_favorite_btn"/> - <line_editor label="Ort eingeben" name="location_edit"/> - <button label="Anmelden" name="connect_location_btn"/> + <button label="Anmelden" name="connect_btn"/> + <check_box label="Details speichern" name="remember_check"/> + <text name="forgot_password_text">Kennwort vergessen</text> <combo_box label="Grid auswählen" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..bc9065e1854b6d87fff9e686a91ff992b860ad0f --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marktplatz" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Anzeige-/Sortieroptionen"/> + <button name="add_btn" tool_tip="Neuen Auflistungsordner erstellen"/> + <button label="Auf Fehler prüfen" name="audit_btn" tool_tip="Marktplatz-Auflistungen überprüfen"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Marktplatz-Auflistungen filtern" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..becf79b0a215c1b7398c8c6ddad2c8c732c10439 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ALLE" name="All Items" tool_tip="Objekte zum Auflisten hier ablegen"/> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..63c4f34bad9abe223e465392cd2f6cf151e9f471 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="AUFGELISTET" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..26908c3e2567850204643052569b099181a48eaf --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NICHT VERKNÃœPFT" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/de/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..00ea1e6fe784347510eb7194a2382b3cf34205dc --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NICHT AUFGELISTET" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml index 14ace0ac3af0d071f3365356a2017bffeacf7360..d3d85de3c3a6fa33577adb594bb6803494e9130e 100755 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Paketverlust - </panel.string> - <panel.string name="bandwidth_tooltip"> - Bandbreite - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - [AMT] L$ - </panel.string> + <panel.string name="packet_loss_tooltip">Paketverlust</panel.string> + <panel.string name="bandwidth_tooltip">Bandbreite</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">[AMT] L$</panel.string> <panel left="-415" name="balance_bg" width="205"> - <text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="20 L$"/> + <text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="L$ ??"/> <button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> <button label="Einkaufen" name="goShop" tool_tip="Second Life-Marktplatz öffnen" width="85"/> </panel> - <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)"> - 24:00 H PST - </text> + <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">24:00 H PST</text> <button name="media_toggle_btn" tool_tip="Alle Medien starten/stoppen (Musik, Video, Webseiten)"/> <button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml index d0bd23138d8c1679029b1f172f84d661c367957e..f7dc265cf45f9a264e21d7f18b23faa76a444798 100755 --- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Ãœbertragen" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> </panel> <check_box label="Zum Verkauf" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopieren" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopie" name="Copy"/> + <combo_box.item label="Inhalt" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preis: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml index 29239033fe97a5f18b087af47d19274d8feaa4ea..c30611c66c09d3f5fcaf39d569a2e8eb3331d56b 100755 --- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Objektprofil"> - <panel.string name="text deed continued"> - Ãœbertragung - </panel.string> - <panel.string name="text deed"> - Ãœbertragung - </panel.string> - <panel.string name="text modify info 1"> - Sie können dieses Objekt bearbeiten. - </panel.string> - <panel.string name="text modify info 2"> - Sie können diese Objekte bearbeiten. - </panel.string> - <panel.string name="text modify info 3"> - Sie können dieses Objekt nicht bearbeiten. - </panel.string> - <panel.string name="text modify info 4"> - Sie können diese Objekte nicht bearbeiten. - </panel.string> - <panel.string name="text modify info 5"> - Dieses Objekt kann nicht über eine Regionsgrenze hinweg geändert werden - </panel.string> - <panel.string name="text modify info 6"> - Diese Objekte können nicht über eine Regionsgrenze hinweg geändert werden - </panel.string> - <panel.string name="text modify warning"> - Diese Objekt verfügt über verknüpfte Teile - </panel.string> - <panel.string name="Cost Default"> - Preis: L$ - </panel.string> - <panel.string name="Cost Total"> - Summe: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Stückpreis: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Mischpreis - </panel.string> - <panel.string name="Sale Mixed"> - Mischverkauf - </panel.string> + <panel.string name="text deed continued">Ãœbertragung</panel.string> + <panel.string name="text deed">Ãœbertragung</panel.string> + <panel.string name="text modify info 1">Sie können dieses Objekt bearbeiten.</panel.string> + <panel.string name="text modify info 2">Sie können diese Objekte bearbeiten.</panel.string> + <panel.string name="text modify info 3">Sie können dieses Objekt nicht bearbeiten.</panel.string> + <panel.string name="text modify info 4">Sie können diese Objekte nicht bearbeiten.</panel.string> + <panel.string name="text modify info 5">Dieses Objekt kann nicht über eine Regionsgrenze hinweg geändert werden</panel.string> + <panel.string name="text modify info 6">Diese Objekte können nicht über eine Regionsgrenze hinweg geändert werden</panel.string> + <panel.string name="text modify warning">Diese Objekt verfügt über verknüpfte Teile</panel.string> + <panel.string name="Cost Default">Preis: L$</panel.string> + <panel.string name="Cost Total">Summenpreis: L$</panel.string> + <panel.string name="Cost Per Unit">Stückpreis: L$</panel.string> + <panel.string name="Cost Mixed">Mischpreis</panel.string> + <panel.string name="Sale Mixed">Mischverkauf</panel.string> <text name="title" value="Objektprofil"/> <text name="where" value="(Inworld)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Name: - </text> - <text name="Description:"> - Beschreibung: - </text> - <text name="CreatorNameLabel"> - Ersteller: - </text> - <text name="Owner:"> - Eigentümer: - </text> - <text name="Group_label"> - Gruppe: - </text> + <text name="Name:">Name:</text> + <text name="Description:">Beschreibung:</text> + <text name="CreatorNameLabel">Ersteller:</text> + <text name="Owner:">Eigentümer:</text> + <text name="Group_label">Gruppe:</text> <button name="button set group" tool_tip="Eine Gruppe auswählen, um die Berechtigungen des Objekts zu teilen."/> <name_box initial_value="Wird geladen..." name="Group Name Proxy"/> <button label="Ãœbertragung" label_selected="Ãœbertragung" name="button deed" tool_tip="Eine Ãœbertragung bedeutet, dass das Objekt mit den Berechtigungen „Nächster Eigentümer“ weitergegeben wird. Mit der Gruppe geteilte Objekte können von einem Gruppen-Officer übertragen werden."/> - <text name="label click action"> - Bei Linksklick: - </text> + <text name="label click action">Bei Linksklick:</text> <combo_box name="clickaction"> <combo_box.item label="Berühren (Standard)" name="Touch/grab(default)"/> <combo_box.item label="Auf Objekt setzen" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoomen" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Sie können dieses Objekt bearbeiten. - </text> - <text name="Anyone can:"> - Jeder: - </text> + <text name="perm_modify">Sie können dieses Objekt bearbeiten.</text> + <text name="Anyone can:">Jeder:</text> <check_box label="Kopieren" name="checkbox allow everyone copy"/> <check_box label="Bewegen" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Gruppe: - </text> + <text name="GroupLabel">Gruppe:</text> <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern, teilen. Sie müssen Ãœbereignen, um Rollenbeschränkungen zu aktivieren."/> - <text name="NextOwnerLabel"> - Nächster Eigentümer: - </text> + <text name="NextOwnerLabel">Nächster Eigentümer:</text> <check_box label="Bearbeiten" name="checkbox next owner can modify"/> <check_box label="Kopieren" name="checkbox next owner can copy"/> <check_box label="Transferieren" name="checkbox next owner can transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Preis: L$" name="Edit Cost"/> <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> - <text name="pathfinding_attributes_label"> - Pathfinding-Attribute: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Pathfinding-Attribute:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Öffnen" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 7cb7b31886a72233060c79c38cdf95546d935ec1..35f5624c134355a61d084d0f980fff7bab1a32bd 100755 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -454,28 +454,46 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. </string> <string name="TooltipPrice" value="[AMOUNT] L$"/> <string name="TooltipOutboxDragToWorld"> - Sie können Artikel nicht in Ihrer Händler-Outbox rezzen + Sie können keine Objekte aus dem Marktplatz-Auflistungsordner rezzen + </string> + <string name="TooltipOutboxWorn"> + Sie können Objekte, die Sie tragen, nicht in den Marktplatz-Auflistungsordner stellen + </string> + <string name="TooltipOutboxFolderLevels"> + Tiefe der verschachtelten Ordner überschreitet [AMOUNT]. Reduzieren Sie die Ordnertiefe. Verpacken Sie ggf. einige Artikel. + </string> + <string name="TooltipOutboxTooManyFolders"> + Anzahl von Unterordnern überschreitet [AMOUNT]. Reduzieren Sie die Anzahl von Ordnern in Ihrer Auflistung. Verpacken Sie ggf. einige Artikel. + </string> + <string name="TooltipOutboxTooManyObjects"> + Anzahl von Objekten überschreitet [AMOUNT]. Um mehr als [AMOUNT] Objekte in einer Auflistung verkaufen zu können, müssen Sie einige davon verpacken. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Anzahl von Bestandsobjekten überschreitet [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Sie können Objekte oder Ordner nur in der Registerkarte „Alle“ ablegen. Wählen Sie diese Registerkarte aus und verschieben Sie Ihre Objekte bzw. Ordner noch einmal. </string> <string name="TooltipOutboxNoTransfer"> - Einer oder mehrere dieser Artikel können nicht verkauft oder übertragen werden. + Mindestens eines dieser Objekte kann nicht verkauft oder übertragen werden </string> <string name="TooltipOutboxNotInInventory"> - Nur Artikel direkt aus Ihrem Inventar können in Ihre Händler-Outbox gelegt werden + Sie können nur Objekte aus Ihrem Inventar in den Marktplatz einstellen </string> - <string name="TooltipOutboxWorn"> - Artikel, die Sie tragen, können nicht in Ihre Händler-Outbox gelegt werden. + <string name="TooltipOutboxLinked"> + Sie können keine verknüpften Objekte oder Ordner in den Marktplatz einstellen </string> <string name="TooltipOutboxCallingCard"> - Sie können keine Visitenkarten in Ihre Händler-Outbox legen + Sie können Visitenkarten nicht in den Marktplatz einstellen </string> - <string name="TooltipOutboxFolderLevels"> - Tiefe der verschachtelten Ordner überschreitet 3 + <string name="TooltipOutboxDragActive"> + Sie können keine gelistete Auflistung entfernen </string> - <string name="TooltipOutboxTooManyFolders"> - Anzahl von Unterordnern im obersten Ordner überschreitet 20 + <string name="TooltipOutboxCannotMoveRoot"> + Der Stammordner mit Marktplatz-Auflistungen kann nicht verschoben werden. </string> - <string name="TooltipOutboxTooManyObjects"> - Anzahl von Artikeln im obersten Ordner überschreitet 200 + <string name="TooltipOutboxMixedStock"> + Alle Objekte in einem Bestandsordner müssen vom gleichen Typ sein und die gleiche Berechtigung haben </string> <string name="TooltipDragOntoOwnChild"> Sie können einen Ordner nicht in einen seiner untergeordneten Ordner verschieben @@ -1063,7 +1081,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="AgentNameSubst"> (Sie) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Beim Verwalten von Grundbesitzzugangslisten Warnhinweise unterdrücken </string> @@ -1130,6 +1148,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="bitmap_image_files"> Bitmap-Bilder </string> + <string name="png_image_files"> + PNG-Bilder + </string> + <string name="save_texture_image_files"> + Targa- oder PNG-Bilder + </string> <string name="avi_movie_file"> AVI-Filmdatei </string> @@ -1379,6 +1403,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="FavoritesNoMatchingItems"> Landmarke hier hin ziehen, um diese hinzuzufügen. </string> + <string name="MarketplaceNoMatchingItems"> + Keine übereinstimmenden Objekte gefunden. Ãœberprüfen Sie die Schreibweise des Suchbegriffs und versuchen Sie es noch einmal. + </string> <string name="InventoryNoTexture"> Sie haben keine Kopie dieser Textur in Ihrem Inventar. </string> @@ -1426,29 +1453,95 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="InventoryOutboxError"> Der [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] gibt Fehler zurück. </string> + <string name="InventoryMarketplaceError"> + Diese Funktion befindet sich in der Betaphase. Wenn Sie teilnehmen möchten, tragen Sie sich in dieses [http://goo.gl/forms/FCQ7UXkakz Google-Formular] ein. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Ihr Ordner mit Marktplatz-Auflistungen ist leer. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Ziehen Sie Ordner in diesen Bereich, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten. + </string> + <string name="Marketplace Validation Warning Stock"> + Bestandsordner müssen in einem Versionsordner gespeichert sein + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Fehler: Alle Objekte in einem Bestandsordner müssen kopiergeschützt und vom gleichen Typ sein. + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Fehler: Bestandsordner kann keine Unterordner enthalten + </string> + <string name="Marketplace Validation Warning Empty"> + : Warnung: Ordner enthält keine Objekte + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Warnung: Bestandsordner wird erstellt + </string> + <string name="Marketplace Validation Warning Create Version"> + : Warnung: Versionsordner wird erstellt + </string> + <string name="Marketplace Validation Warning Move"> + : Warnung: Objekte werden verschoben + </string> + <string name="Marketplace Validation Warning Delete"> + : Warnung: Ordnerinhalte wurden in Bestandsordner übertragen; leerer Ordner wird entfernt + </string> + <string name="Marketplace Validation Error Stock Item"> + : Fehler: Kopiergeschützte Objekte müssen in einem Bestandsordner gespeichert sein + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Warnung: Objekte müssen in einem Versionsordner gespeichert sein + </string> + <string name="Marketplace Validation Error"> + : Fehler: + </string> + <string name="Marketplace Validation Warning"> + : Warnung: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Warnung: Versionsordner muss mindestens 1 Objekt enthalten + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Warnung: Bestandsordner muss mindestens 1 Objekt enthalten + </string> + <string name="Marketplace Validation No Error"> + Keine Fehler oder Warnungen + </string> <string name="Marketplace Error None"> Keine Fehler </string> + <string name="Marketplace Error Prefix"> + Fehler: + </string> <string name="Marketplace Error Not Merchant"> - Fehler: Bevor Sie Artikel in den Marktplatz übertragen können, müssen Sie sich als Händler registrieren (kostenlos). + Bevor Sie Artikel in den Marktplatz übertragen können, müssen Sie sich als Händler registrieren (kostenlos). + </string> + <string name="Marketplace Error Not Accepted"> + Objekt kann nicht in diesen Ordner verschoben werden. </string> - <string name="Marketplace Error Empty Folder"> - Fehler: Dieser Ordner ist leer. + <string name="Marketplace Error Unsellable Item"> + Dieses Objekt kann nicht im Marktplatz verkauft werden. </string> - <string name="Marketplace Error Unassociated Products"> - Fehler: Dieser Artikel konnte nicht hochgeladen werden, da in Ihrem Händlerkonto zu viele Artikel nicht mit Produkten verknüpft sind. Um diesen Fehler zu beheben, melden Sie sich auf der Marktplatz-Website an und reduzieren Sie die Anzahl von Artikeln, die nicht mit Produkten verknüpft sind. + <string name="MarketplaceNoID"> + keine Mkt-ID </string> - <string name="Marketplace Error Object Limit"> - Fehler: Dieser Artikel enthält zu viele Objekte. Beheben Sie diesen Fehler, indem Sie Objekte zusammen in Behältern verpacken, um die Objektanzahl auf unter 200 zu verringern. + <string name="MarketplaceLive"> + aufgelistet </string> - <string name="Marketplace Error Folder Depth"> - Fehler: Dieser Artikel enthält zu viele verschachtelte Ordnerebenen. Organisieren Sie ihn neu, sodass maximal drei verschachtelte Ordnerebenen vorhanden sind. + <string name="MarketplaceActive"> + aktiv </string> - <string name="Marketplace Error Unsellable Item"> - Fehler: Dieser Artikel kann nicht im Marktplatz verkauft werden. + <string name="MarketplaceMax"> + max. </string> - <string name="Marketplace Error Internal Import"> - Fehler: Bei diesem Artikel ist ein Problem aufgetreten. Versuchen Sie es später erneut. + <string name="MarketplaceStock"> + Bestand + </string> + <string name="MarketplaceNoStock"> + ausverkauft + </string> + <string name="MarketplaceUpdating"> + Aktualisierung läuft... </string> <string name="Open landmarks"> Landmarken öffnen @@ -1469,6 +1562,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. Keine Inhalte </string> <string name="WornOnAttachmentPoint" value=" (getragen am [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (aktiviert)"/> <string name="PermYes"> Ja @@ -1739,6 +1833,15 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="Invalid Attachment"> Ungültige Stelle für Anhang </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Fehler: fehlendes Objekt + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Fehler: Basisobjekt fehlt + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Fehler: Objekt ist im aktuellen Outfit, aber nicht angehängt + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] alt </string> @@ -1874,9 +1977,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="CompileQueueUnknownFailure"> Unbekannter Fehler beim Herunterladen </string> - <string name="CompileNoExperiencePerm"> - Skript „[SCRIPT]“ mit Erlebnis „[EXPERIENCE]“ wird übersprungen. - </string> <string name="CompileQueueTitle"> Rekompilierung </string> @@ -1910,6 +2010,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="SaveComplete"> Speichervorgang abgeschlossen. </string> + <string name="UploadFailed"> + Datei-Upload fehlgeschlagen: + </string> <string name="ObjectOutOfRange"> Skript (Objekt außerhalb des Bereichs) </string> @@ -1919,6 +2022,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="GroupsNone"> keine </string> + <string name="CompileNoExperiencePerm"> + Skript „[SCRIPT]“ mit Erlebnis „[EXPERIENCE]“ wird übersprungen. + </string> <string name="Group" value=" (Gruppe)"/> <string name="Unknown"> (unbekannt) @@ -5070,6 +5176,9 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="Command_Marketplace_Label"> Marktplatz </string> + <string name="Command_MarketplaceListings_Label"> + Marktplatz + </string> <string name="Command_MiniMap_Label"> Minikarte </string> @@ -5157,6 +5266,9 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="Command_Marketplace_Tooltip"> Einkaufen gehen </string> + <string name="Command_MarketplaceListings_Tooltip"> + Ihre Kreation verkaufen + </string> <string name="Command_MiniMap_Tooltip"> Leute in der Nähe anzeigen </string> @@ -5268,6 +5380,18 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="UserDictionary"> [Benutzer] </string> + <string name="logging_calls_disabled_log_empty"> + Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ > „Chat“. + </string> + <string name="logging_calls_disabled_log_not_empty"> + Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ > „Chat“. + </string> + <string name="logging_calls_enabled_log_empty"> + Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden. + </string> + <string name="loading_chat_logs"> + Laden... + </string> <string name="experience_tools_experience"> Erlebnis </string> @@ -5349,16 +5473,4 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="ExperiencePermissionShort12"> Berechtigung </string> - <string name="logging_calls_disabled_log_empty"> - Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ > „Chat“. - </string> - <string name="logging_calls_disabled_log_not_empty"> - Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ > „Chat“. - </string> - <string name="logging_calls_enabled_log_empty"> - Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden. - </string> - <string name="loading_chat_logs"> - Laden... - </string> </strings> diff --git a/indra/newview/skins/default/xui/en/floater_associate_listing.xml b/indra/newview/skins/default/xui/en/floater_associate_listing.xml new file mode 100755 index 0000000000000000000000000000000000000000..e019ed58ddbd9aa955f65d7e918384246154f24a --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_associate_listing.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_minimize="false" + height="110" + layout="topleft" + name="associate listing" + help_topic="associate_listing" + title="ASSOCIATE LISTING" + width="375"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifLarge" + height="16" + layout="topleft" + left="10" + top="25" + name="message"> + Listing ID: + </text> + <line_editor + type="string" + length="1" + follows="top|right" + font="SansSerif" + height="20" + layout="topleft" + left_delta="0" + name="listing_id" + top_pad="5" + width="350"> + Type ID here + </line_editor> + <button + follows="bottom|left" + height="23" + label="OK" + layout="topleft" + left="155" + name="OK" + top_pad="10" + width="100" /> + <button + follows="bottom|right" + height="23" + label="Cancel" + layout="topleft" + left_pad="5" + name="Cancel" + width="100" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_item_properties.xml b/indra/newview/skins/default/xui/en/floater_item_properties.xml new file mode 100755 index 0000000000000000000000000000000000000000..0fc54a9c8bee6185c181311be586b6270cbe10f6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_item_properties.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + height="570" + layout="topleft" + name="Item Properties" + help_topic="item+properties" + title="ITEM PROPERTIES" + width="330"> + <panel + follows="all" + layout="topleft" + left="0" + class="sidepanel_item_info" + filename="sidepanel_item_info.xml" + name="item_panel" + top="20" + label="" + height="570" + visible="true" + width="330"> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/en/floater_marketplace_listings.xml new file mode 100755 index 0000000000000000000000000000000000000000..0806a872883d2e4c7a9afb54af485c2697874e17 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_marketplace_listings.xml @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<floater + title="MARKETPLACE LISTINGS" + name="floater_marketplace_listings" + help_topic="floater_marketplace_listings" + positioning="cascading" + width="333" + height="445" + min_width="200" + min_height="300" + can_close="true" + can_resize="true" + save_rect="true" + save_visibility="false" + reuse_instance="true"> + <panel + name="marketplace_listings_panel" + follows="all" + layout="topleft" + left="0" + top="0" + height="440" + width="333"> + <panel + follows="all" + left="10" + height="440" + width="313" + top="0" + bg_opaque_color="InventoryBackgroundColor"> + <panel + name="marketplace_listings_inventory_placeholder_panel" + follows="all" + layout="topleft" + top="0" + left="0" + width="313" + height="440" + bg_opaque_color="InventoryBackgroundColor"> + <text + name="marketplace_listings_inventory_placeholder_title" + type="string" + follows="top|left|right" + layout="topleft" + top="10" + left="0" + width="313" + height="25" + wrap="true" + halign="center" + font="SansSerifBold"> + Loading... + </text> + <text + name="marketplace_listings_inventory_placeholder_text" + type="string" + follows="top|left|right" + layout="topleft" + top="35" + left="0" + width="313" + height="130" + wrap="true" + halign="left" /> + </panel> + <panel + name="panel_marketplace_listing" + filename="panel_marketplace_listings.xml" + class="llpanelmarketplacelistings" + top="0" + follows="all"/> + </panel> + <panel + name="marketplace_panel_status" + follows="bottom|left|right" + layout="topleft" + left="10" + width="313" + height="20"> + <text + name="marketplace_status" + type="string" + follows="bottom|left|right" + layout="topleft" + top="0" + left="5" + width="150" + height="20" + wrap="true" + halign="left" + valign="center" + font="SansSerif"/> + </panel> + <layout_stack name="initialization_progress_indicator" orientation="vertical" left="0" height="440" top="0" width="333" follows="all" visible="false"> + <layout_panel /> + <layout_panel height="24" auto_resize="false"> + <layout_stack orientation="horizontal" left="0" height="24" top="0" width="333" follows="all"> + <layout_panel width="0" /> + <layout_panel width="24" auto_resize="false"> + <loading_indicator + height="24" + layout="topleft" + left="0" + top="0" + width="24" /> + </layout_panel> + <layout_panel width="0" /> + </layout_stack> + </layout_panel> + <layout_panel /> + </layout_stack> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml new file mode 100755 index 0000000000000000000000000000000000000000..9035a7c1619b00675bde9bd1d572e1919864af81 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_marketplace_validation.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + title="Audit Marketplace Listings" + name="floater_marketplace_validation" + help_topic="floater_marketplace_validation" + layout="topleft" + positioning="cascading" + legacy_header_height="18" + width="600" + height="500" + min_width="400" + min_height="200" + can_close="true" + can_resize="true" + can_minimize="true" + save_rect="true" + reuse_instance="true" + save_visibility="false"> + <button + name="OK" + label="OK" + label_selected="OK" + layout="topleft" + follows="right|bottom" + top="465" + width="100" + height="20" + left="484"/> + <text_editor + name="validation_text" + type="string" + font="SansSerif" + length="1" + max_length="65536" + layout="topleft" + follows="all" + bg_readonly_color="TextBgReadOnlyColor" + text_readonly_color="TextFgReadOnlyColor" + top="25" + bottom="455" + left="20" + right="-20" + word_wrap="true"> + MARKETPLACE_VALIDATION_TEXT + </text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 7099db63ab645f08db135c8e0e0612e147964310..91adec0789423238f7497250bcca5161b29e0d27 100755 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -4,6 +4,81 @@ layout="topleft" name="Popup" visible="false"> + <menu_item_call + label="Create listing" + layout="topleft" + name="Marketplace Create Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_create_listing" /> + </menu_item_call> + <menu_item_call + label="Associate listing" + layout="topleft" + name="Marketplace Associate Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_associate_listing" /> + </menu_item_call> + <menu_item_call + label="Get (Refresh) listing" + layout="topleft" + name="Marketplace Get Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_get_listing" /> + </menu_item_call> + <menu_item_call + label="Check for errors" + layout="topleft" + name="Marketplace Check Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_check_listing" /> + </menu_item_call> + <menu_item_call + label="Edit listing" + layout="topleft" + name="Marketplace Edit Listing"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_edit_listing" /> + </menu_item_call> + <menu_item_call + label="List" + layout="topleft" + name="Marketplace List"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_list" /> + </menu_item_call> + <menu_item_call + label="Unlist" + layout="topleft" + name="Marketplace Unlist"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_unlist" /> + </menu_item_call> + <menu_item_call + label="Activate" + layout="topleft" + name="Marketplace Activate"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_activate" /> + </menu_item_call> + <menu_item_call + label="Deactivate" + layout="topleft" + name="Marketplace Deactivate"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="marketplace_deactivate" /> + </menu_item_call> + <menu_item_separator + layout="topleft" + name="Marketplace Listings Separator" /> <menu_item_call label="Share" layout="topleft" @@ -718,12 +793,20 @@ parameter="copy_to_outbox" /> </menu_item_call> <menu_item_call - label="Send to Marketplace" - layout="topleft" - name="Marketplace Send"> + label="Copy to Marketplace Listings" + layout="topleft" + name="Marketplace Copy"> <menu_item_call.on_click - function="Inventory.DoToSelected" - parameter="send_to_marketplace" /> + function="Inventory.DoToSelected" + parameter="copy_to_marketplace_listings" /> + </menu_item_call> + <menu_item_call + label="Move to Marketplace Listings" + layout="topleft" + name="Marketplace Move"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="move_to_marketplace_listings" /> </menu_item_call> <menu_item_call label="--no options--" diff --git a/indra/newview/skins/default/xui/en/menu_marketplace_view.xml b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml new file mode 100755 index 0000000000000000000000000000000000000000..4b3bb8ee1c0280aef36f2e54ea80428411fc32b5 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_marketplace_view.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<toggleable_menu + name="menu_marketplace_sort" + left="0" bottom="0" visible="false" + mouse_opaque="false"> + <menu_item_check + label="Sort by name" + name="sort_by_name"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="sort_by_name" /> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="sort_by_name" /> + </menu_item_check> + <menu_item_check + label="Sort by most recent" + name="sort_by_recent"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="sort_by_recent" /> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="sort_by_recent" /> + </menu_item_check> + <menu_item_check + label="Sort by stock amount (low to high)" + name="sort_by_stock_amount"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="sort_by_stock_amount"/> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="sort_by_stock_amount"/> + </menu_item_check> + <menu_item_separator + layout="topleft" /> + <menu_item_check + label="Show only listing folders" + name="show_only_listing_folders"> + <menu_item_check.on_click + function="Marketplace.ViewSort.Action" + parameter="show_only_listing_folders"/> + <menu_item_check.on_check + function="Marketplace.ViewSort.CheckItem" + parameter="show_only_listing_folders"/> + </menu_item_check> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 68ca55735a3838d01b323c5642c660824b4727df..2463c5f43b79ffdeb1cad7f2b632712631a4dc27 100755 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -180,6 +180,13 @@ function="Floater.ToggleOrBringToFront" parameter="outbox" /> </menu_item_call> + <menu_item_call + label="Marketplace listings..." + name="MarketplaceListings"> + <menu_item_call.on_click + function="Floater.ToggleOrBringToFront" + parameter="marketplace_listings" /> + </menu_item_call> <menu_item_call label="Account dashboard..." name="Manage My Account"> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index cfe56e6a95f6b9c68a68cdb87e704de389713e92..2b01f763d5deae6d1e3d51752281441b5d3726a0 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -308,9 +308,251 @@ Initialization with the Marketplace failed because of a system or network error. name="okbutton" yestext="OK"/> </notification> + + <notification + icon="OutboxStatus_Error" + name="StockPasteFailed" + type="outbox"> + Copy or move to Stock Folder failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantPasteFailed" + type="outbox"> + Copy or move to Marketplace Listings failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantTransactionFailed" + type="outbox"> + The transaction with the Marketplace failed with the following error : + + Reason : '[ERROR_REASON]' + [ERROR_DESCRIPTION] + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + <notification + icon="OutboxStatus_Error" + name="MerchantUnprocessableEntity" + type="outbox"> + We are unable to list this product or activate the version folder. Usually this is caused by missing information in the listing description form, but it may be due to errors in the folder structure. Either edit the listing or check the listing folder for errors. + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> <notification + icon="OutboxStatus_Error" + name="MerchantListingFailed" + type="outbox"> + Listing to Marketplace failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="OutboxStatus_Error" + name="MerchantFolderActivationFailed" + type="outbox"> + Activating this version folder failed with error : + + '[ERROR_CODE]' + + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="MerchantForceValidateListing" + type="alertmodal"> + In order to create your listing, we fixed the hierarchy of your listing contents. + <tag>confirm</tag> + <usetemplate + ignoretext="Warn me that creating a listing fixes the hierarchy of the content" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantActiveChange" + type="alertmodal"> + This action will change the active content of this listing. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I change an active listing on the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantMoveInventory" + type="alertmodal"> + Items dragged to the Marketplace Listings window are moved from their original locations, not copied. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I move an item from the inventory to the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmListingCutOrDelete" + type="alertmodal"> + Moving or deleting a listing folder will delete your Marketplace listing. If you would like to keep the Marketplace listing, move or delete the contents of the version folder you would like to modify. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I move or delete a listing from the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmCopyToMarketplace" + type="alertmodal"> + You don't have permission to copy one or more of these items to the Marketplace. You can move them or leave them behind. + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I try to copy a selection containing no copy items to the marketplace" + name="yesnocancelbuttons" + yestext="Move item(s)" + notext="Don't move item(s)" + canceltext="Cancel"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantUnlist" + type="alertmodal"> + This action will unlist this listing. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I unlist an active listing on the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="ConfirmMerchantClearVersion" + type="alertmodal"> + This action will deactivate the version folder of the current listing. Do you want to continue? + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm before I deactivate the version folder of a listing on the marketplace" + name="okcancelignore" + notext="Cancel" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingNotUpdated" + type="alertmodal"> +This listing could not be updated. +[[URL] Click here] to edit it on the Marketplace. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingCannotWear" + type="alertmodal"> + You cannot wear clothes or body parts that are in the Marketplace Listings folder. + <tag>fail</tag> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingInvalidID" + type="alertmodal"> + Invalid listing ID. + <tag>fail</tag> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantListingActivateRequired" + type="alertmodal"> + There are several or no version folders in this listing. You will need to select and activate one independently later. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert about version folder activation when I create a listing with several version folders" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantStockFolderSplit" + type="alertmodal"> + We have separated stock items of different types into separate stock folders, so your folder is arranged in a way that we can list it. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert when stock folder is being split before being listed" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantStockFolderEmpty" + type="alertmodal"> + We have unlisted your listing because the stock is empty. You need to add more units to the stock folder to list the listing again. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert when a listing is unlisted because stock folder is empty" + name="okignore" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="AlertMerchantVersionFolderEmpty" + type="alertmodal"> + We have unlisted your listing because the version folder is empty. You need to add items to the version folder to list the listing again. + <tag>confirm</tag> + <usetemplate + ignoretext="Alert when a listing is unlisted because version folder is empty" + name="okignore" + yestext="OK"/> + </notification> + + <notification icon="alertmodal.tga" name="CompileQueueSaveText" type="alertmodal"> @@ -4587,6 +4829,13 @@ Are you sure you want to change the Estate Covenant? </notification> <notification + icon="alertmodal.tga" + name="SLM_UPDATE_FOLDER" + type="alertmodal"> + [MESSAGE] + </notification> + + <notification icon="alertmodal.tga" name="RegionEntryAccessBlocked_AdultsOnlyContent" type="alertmodal"> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml new file mode 100755 index 0000000000000000000000000000000000000000..2b17473a84d2cee0de4fd09f7378906ab1b5cc1a --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + label="Marketplace" + name="Marketplace Panel" + follows="all" + layout="topleft" + width="308" + height="440"> + <panel + name="tool_panel" + follows="left|top|right" + layout="topleft" + height="30" + width="308" + top="0" + left="0"> + <menu_button + name="sort_btn" + tool_tip="View/sort options" + layout="topleft" + follows="top|left" + width="31" + height="25" + left="2" + menu_filename="menu_marketplace_view.xml" + image_hover_unselected="Toolbar_Middle_Over" + image_overlay="Conv_toolbar_sort" + image_selected="Toolbar_Middle_Selected" + image_unselected="Toolbar_Middle_Off" + menu_position="bottomleft"/> + <button + name="add_btn" + tool_tip="Create a new listing folder" + layout="topleft" + follows="top|left" + width="31" + height="25" + left_pad="2" + image_hover_unselected="Toolbar_Middle_Over" + image_overlay="Conv_toolbar_plus" + image_selected="Toolbar_Middle_Selected" + image_unselected="Toolbar_Middle_Off"/> + <button + name="audit_btn" + label="Check for Errors" + tool_tip="Check your marketplace listings" + layout="topleft" + follows="top|right" + width="97" + height="26" + left_pad="143"/> + </panel> + <panel + name="tab_container_panel" + follows="all" + layout="topleft" + default_tab_group="1" + width="308" + height="350"> + <filter_editor + text_pad_left="10" + follows="left|top|right" + height="23" + label="Filter Marketplace Listings" + layout="topleft" + left="0" + max_length_chars="300" + name="filter_editor" + top="0" + width="308" /> + <tab_container + name="marketplace_filter_tabs" + follows="all" + layout="topleft" + top="30" + left="0" + top_pad="0" + width="308" + height="320" + halign="center" + tab_height="30" + tab_group="1" + tab_position="top" + tab_min_width="50"> + </tab_container> + </panel> + <panel + name="marketplace_drop_zone" + mouse_opaque="true" + follows="bottom|left|right" + left="2" + width="306" + height="40" + background_visible="true" + background_opaque="true" + bg_alpha_image="none" + bg_alpha_color="EmphasisColor_35" + bg_opaque_image="Marketplace_Dropzone_Background" + border="true" + bevel_style="in" + visible="true"> + <text + type="string" + follows="bottom|left|right" + layout="topleft" + top="13" + height="20" + left="2" + width="306" + halign="center" + font="SansSerifMedium" + font_shadow="hard" + valign="top"> + Drop folders here to create new listings + </text> + </panel> +</panel> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml new file mode 100755 index 0000000000000000000000000000000000000000..8d5fa265e264770251765ab702cdbcdf92c3cf73 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_inventory.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="ALL" + name="All Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + top="16" + left="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + start_folder.type="merchant" + tool_tip="Drag and drop items here to list them" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml new file mode 100755 index 0000000000000000000000000000000000000000..44f507ad84f6bab3b6eee3a68226b416cbaa67ff --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_listed.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="LISTED" + name="Active Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + left_delta="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + allow_drop_on_root="false" + start_folder.type="merchant" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml new file mode 100755 index 0000000000000000000000000000000000000000..871e8773c46bb289f9a58d82398129fd9b130ddd --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="UNASSOCIATED" + name="Unassociated Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + left_delta="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + start_folder.type="merchant" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml new file mode 100755 index 0000000000000000000000000000000000000000..98bef04aa793b8b61eeb58939d5da5a255274cc0 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_panel + label="UNLISTED" + name="Inactive Items" + help_topic="marketplace_tab" + layout="topleft" + follows="all" + width="308" + height="370" + left_delta="0" + start_folder.name="Marketplace listings" + show_empty_message="true" + show_root_folder="false" + use_marketplace_folders="true" + allow_drop_on_root="false" + start_folder.type="merchant" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + border="false" + bevel_style="none" + show_item_link_overlays="true"> + <item allow_wear="false"/> +</inventory_panel> diff --git a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml index c80e5b168a4a5b9ffe236b80341c034ada5ebdfa..b2d8bb874b642b845130c0d444aab27ee63f1589 100755 --- a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml @@ -3,7 +3,6 @@ name="inventory_outbox" start_folder.name="Outbox" show_empty_message="false" - show_load_status="false" start_folder.type="outbox" follows="all" layout="topleft" top="0" left="0" height="165" width="308" @@ -28,5 +27,5 @@ text_pad_right="4" arrow_size="12" max_folder_item_overlap="2"/> - <item allow_open="false"/> + <item allow_wear="false"/> </inventory_panel> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index ca38a9bc3fd6b5b9baf472bfce2470069af5457c..5f6e90b47fec17d267395e7a8e098bf6a2b65acc 100755 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -236,14 +236,20 @@ Please try logging in again in a minute.</string> <string name="TooltipTooManyWearables">You can't wear a folder containing more than [AMOUNT] items. You can change this limit in Advanced > Show Debug Settings > WearFolderLimit.</string> <string name="TooltipPrice" value="L$[AMOUNT]: "/> - <string name="TooltipOutboxDragToWorld">You can not rez items in your merchant outbox</string> - <string name="TooltipOutboxNoTransfer">One or more of these objects cannot be sold or transferred.</string> - <string name="TooltipOutboxNotInInventory">Your merchant outbox can only accept items directly from your inventory</string> - <string name="TooltipOutboxWorn">You can not put items you are wearing into your merchant outbox</string> - <string name="TooltipOutboxCallingCard">You can not put calling cards into your merchant outbox</string> - <string name="TooltipOutboxFolderLevels">Depth of nested folders exceeds 3</string> - <string name="TooltipOutboxTooManyFolders">Subfolder count in top-level folder exceeds 20</string> - <string name="TooltipOutboxTooManyObjects">Item count in top-level folder exceeds 200</string> + <string name="TooltipOutboxDragToWorld">You can't rez items from the Marketplace Listings folder</string> + <string name="TooltipOutboxWorn">You can't put items you are wearing in the Marketplace Listings folder</string> + <string name="TooltipOutboxFolderLevels">Depth of nested folders exceeds [AMOUNT]. Decrease the depth of folders-within-folders; box items if necessary.</string> + <string name="TooltipOutboxTooManyFolders">Subfolder count exceeds [AMOUNT]. Decrease the number of folders in your listing; box items if necessary.</string> + <string name="TooltipOutboxTooManyObjects">Item count exceeds [AMOUNT]. In order to sell more than [AMOUNT] items in one listing, you must box some of them.</string> + <string name="TooltipOutboxTooManyStockItems">Stock items count exceeds [AMOUNT].</string> + <string name="TooltipOutboxCannotDropOnRoot">You can only drop items or folders in the ALL or UNASSOCIATED tabs. Please select one of those tabs and move your item(s) or folder(s) again.</string> + <string name="TooltipOutboxNoTransfer">One or more of these objects cannot be sold or transferred</string> + <string name="TooltipOutboxNotInInventory">You can only put items from your inventory on the marketplace</string> + <string name="TooltipOutboxLinked">You can't put linked items or folders on the marketplace</string> + <string name="TooltipOutboxCallingCard">You can't put calling cards on the marketplace</string> + <string name="TooltipOutboxDragActive">You can't move a listed listing</string> + <string name="TooltipOutboxCannotMoveRoot">You can't move the marketplace listings root folder</string> + <string name="TooltipOutboxMixedStock">All items in a stock folder must have the same type and permission</string> <string name="TooltipDragOntoOwnChild">You can't move a folder into its child</string> <string name="TooltipDragOntoSelf">You can't move a folder into itself</string> @@ -489,7 +495,7 @@ Please try logging in again in a minute.</string> <string name="NotConnected">Not Connected</string> <string name="AgentNameSubst">(You)</string> <!-- Substitution for agent name --> - <string name="JoinAnExperience"></string> <!-- intentionally left blank --> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess">Suppress alerts when managing estate access lists</string> <string name="OverrideYourAnimations">Replace your default animations</string> <string name="ScriptReturnObjects">Return objects on your behalf</string> @@ -520,6 +526,8 @@ Please try logging in again in a minute.</string> <string name="load_file_verb">Load</string> <string name="targa_image_files">Targa Images</string> <string name="bitmap_image_files">Bitmap Images</string> + <string name="png_image_files">PNG Images</string> + <string name="save_texture_image_files">Targa or PNG Images</string> <string name="avi_movie_file">AVI Movie File</string> <string name="xaf_animation_file">XAF Anim File</string> <string name="xml_file">XML File</string> @@ -2254,6 +2262,7 @@ For AI Character: Get the closest navigable point to the point provided. <string name="InventoryNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string> <string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string> <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string> + <string name="MarketplaceNoMatchingItems">No items found. Check the spelling of your search string and try again.</string> <string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string> <string name="InventoryInboxNoItems">Your Marketplace purchases will appear here. You may then drag them into your inventory to use them.</string> <string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string> @@ -2281,16 +2290,45 @@ We are accessing your account on the [[MARKETPLACE_CREATE_STORE_URL] Marketplace <string name="InventoryOutboxError"> The [[MARKETPLACE_CREATE_STORE_URL] Marketplace store] is returning errors. </string> - + <string name="InventoryMarketplaceError"> +This feature is currently in Beta. Please add your name to this [http://goo.gl/forms/FCQ7UXkakz Google form] if you would like to participate. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle">Your Marketplace Listings folder is empty.</string> + <string name="InventoryMarketplaceListingsNoItemsTooltip"></string> + <string name="InventoryMarketplaceListingsNoItems"> + Drag folders to this area to list them for sale on the [[MARKETPLACE_DASHBOARD_URL] Marketplace]. + </string> + + <string name="Marketplace Validation Log"></string> + <string name="Marketplace Validation Warning Stock">stock folder must be contained by a version folder</string> + <string name="Marketplace Validation Error Mixed Stock">: Error: all items in a stock folder must be no-copy and of the same type</string> + <string name="Marketplace Validation Error Subfolder In Stock">: Error: stock folder cannot contain subfolders</string> + <string name="Marketplace Validation Warning Empty">: Warning: folder doesn't contain any items</string> + <string name="Marketplace Validation Warning Create Stock">: Warning: creating stock folder</string> + <string name="Marketplace Validation Warning Create Version">: Warning: creating version folder</string> + <string name="Marketplace Validation Warning Move">: Warning : moving items</string> + <string name="Marketplace Validation Warning Delete">: Warning: folder content transfered to stock folder, removing empty folder</string> + <string name="Marketplace Validation Error Stock Item">: Error: no-copy items must be contained by a stock folder</string> + <string name="Marketplace Validation Warning Unwrapped Item">: Warning: items must be contained by a version folder</string> + <string name="Marketplace Validation Error">: Error: </string> + <string name="Marketplace Validation Warning">: Warning: </string> + <string name="Marketplace Validation Error Empty Version">: Warning: version folder must contain at least 1 item</string> + <string name="Marketplace Validation Error Empty Stock">: Warning: stock folder must contain at least 1 item</string> + + <string name="Marketplace Validation No Error">No errors or warnings to report</string> <string name="Marketplace Error None">No errors</string> - <string name="Marketplace Error Not Merchant">Error: Before sending items to the Marketplace you will need to set yourself up as a merchant (free of charge).</string> - <string name="Marketplace Error Empty Folder">Error: This folder has no contents.</string> - <string name="Marketplace Error Unassociated Products">Error: This item failed to upload because your merchant account has too many items unassociated with products. To fix this error, log in to the marketplace website and reduce your unassociated item count.</string> - - <string name="Marketplace Error Object Limit">Error: This item contains too many objects. Fix this error by placing objects together in boxes to reduce the total count to less than 200.</string> - <string name="Marketplace Error Folder Depth">Error: This item contains too many levels of nested folders. Reorganize it to a maximum of 3 levels of nested folders.</string> - <string name="Marketplace Error Unsellable Item">Error: This item can not be sold on the marketplace.</string> - <string name="Marketplace Error Internal Import">Error: There was a problem with this item. Try again later.</string> + <string name="Marketplace Error Prefix">Error: </string> + <string name="Marketplace Error Not Merchant">Before sending items to the Marketplace you will need to set yourself up as a merchant (free of charge).</string> + <string name="Marketplace Error Not Accepted">Cannot move item in that folder.</string> + <string name="Marketplace Error Unsellable Item">This item cannot be sold on the Marketplace.</string> + + <string name="MarketplaceNoID">no Mkt ID</string> + <string name="MarketplaceLive">listed</string> + <string name="MarketplaceActive">active</string> + <string name="MarketplaceMax">max</string> + <string name="MarketplaceStock">stock</string> + <string name="MarketplaceNoStock">out of stock</string> + <string name="MarketplaceUpdating">updating...</string> <string name="Open landmarks">Open landmarks</string> <string name="Unconstrained">Unconstrained</string> @@ -2497,8 +2535,8 @@ The [[MARKETPLACE_CREATE_STORE_URL] Marketplace store] is returning errors. <string name="CompileQueueProblemDownloading">Problem downloading</string> <string name="CompileQueueInsufficientPermDownload">Insufficient permissions to download a script.</string> <string name="CompileQueueInsufficientPermFor">Insufficient permissions for</string> - <string name="CompileQueueUnknownFailure">Unknown failure to download</string> - <string name="CompileNoExperiencePerm">Skipping script [SCRIPT] with Experience [EXPERIENCE].</string> + <string name="CompileQueueUnknownFailure">Unknown failure to download</string> + <string name="CompileNoExperiencePerm">Skipping script [SCRIPT] with Experience [EXPERIENCE].</string> <string name="CompileQueueTitle">Recompilation Progress</string> <string name="CompileQueueStart">recompile</string> <string name="ResetQueueTitle">Reset Progress</string> @@ -3954,6 +3992,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Inventory_Label">Inventory</string> <string name="Command_Map_Label">Map</string> <string name="Command_Marketplace_Label">Marketplace</string> + <string name="Command_MarketplaceListings_Label">Marketplace</string> <string name="Command_MiniMap_Label">Mini-map</string> <string name="Command_Move_Label">Walk / run / fly</string> <string name="Command_Outbox_Label">Merchant outbox</string> @@ -3984,6 +4023,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Inventory_Tooltip">View and use your belongings</string> <string name="Command_Map_Tooltip">Map of the world</string> <string name="Command_Marketplace_Tooltip">Go shopping</string> + <string name="Command_MarketplaceListings_Tooltip">Sell your creation</string> <string name="Command_MiniMap_Tooltip">Show nearby people</string> <string name="Command_Move_Tooltip">Moving your avatar</string> <string name="Command_Outbox_Tooltip">Transfer items to your marketplace for sale</string> diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml index d5b10e7f51b42f8f2750606bc4bf9cd67463ca28..92f815d4bfe61ba1f3745562d8b8fad217aecddf 100755 --- a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml @@ -1,3 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<inbox_inventory_panel show_load_status="false" - start_folder.type="inbox"/> +<inbox_inventory_panel start_folder.type="inbox"/> diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml index eaf148c5e49c846aba227756fd7e3ecf86602559..d5efd723c4c75ba4033d13fa43a88aabd843ef6e 100755 --- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -3,7 +3,6 @@ bg_opaque_color="InventoryBackgroundColor" background_visible="true" background_opaque="true" - show_load_status="true" accepts_drag_and_drop="true" > <scroll diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index e0a2375067f21460501b91ff6f363346916de98a..9bf485ce40f8484342f1da21f5027ce6ab3de486 100755 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -1,82 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="ACERCA DE [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Compilado con [COMPILER], versión [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] de [REGION], alojada en <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(coordenadas globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Memoria: [MEMORY_MB] MB -Versión del Sistema Operativo: [OS_VERSION] -Fabricante de la tarjeta gráfica: [GRAPHICS_CARD_VENDOR] -Tarjeta gráfica: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Versión de OpenGL: [OPENGL_VERSION] - -Versión de libcurl: [LIBCURL_VERSION] -Versión de J2C Decoder: [J2C_VERSION] -Versión de Audio Driver: [AUDIO_DRIVER_VERSION] -Versión de Qt Webkit: [QT_WEBKIT_VERSION] -Versión del servidor de voz: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (no hay) - </floater.string> - <floater.string name="AboutTraffic"> - Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Error al obtener la URL de las notas de la versión del servidor. - </floater.string> <tab_container name="about_tab"> <panel label="Información" name="support_panel"> <button label="Copiar al portapapeles" name="copy_btn" width="165"/> </panel> <panel label="Créditos" name="credits_panel"> - <text name="linden_intro"> - Second Life ofrecido por los Lindens: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - con contribuciones de código abierto de: - </text> - <text_editor name="contrib_names"> - Dummy Name sustituido durante la ejecución - </text_editor> - <text name="trans_intro"> - y traducido por: - </text> - <text_editor name="trans_names"> - Dummy Name sustituido durante la ejecución - </text_editor> + <text name="linden_intro">Second Life ofrecido por los Lindens, +con contribuciones de código abierto de:</text> + <text_editor name="contrib_names">Dummy Name sustituido durante la ejecución</text_editor> </panel> <panel label="Licencias" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. + FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm y Werner Lemberg. GL Copyright (C) 1999-2004 Brian Paul. - GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. + GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University y David Luebke, Brenden Schubert, University of Virginia. google-perftools Copyright (c) 2005, Google Inc. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) @@ -87,7 +29,7 @@ Versión del servidor de voz: [VOICE_VERSION] SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + zlib Copyright (C) 1995-2012 Jean-loup Gailly y Mark Adler. El visor de Second Life usa Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (y sus licenciadores). Reservados todos los derechos. Vea los detalles en www.havok.com. @@ -95,8 +37,7 @@ Versión del servidor de voz: [VOICE_VERSION] Reservados todos los derechos. Consulte los detalles en licenses.txt. - Codificación del audio del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codificación del audio del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_associate_listing.xml b/indra/newview/skins/default/xui/es/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..128382b277e722d17152ff4d6347528b13013387 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASOCIAR ARTÃCULOS"> + <text name="message">Id. de artÃculos:</text> + <line_editor name="listing_id">Escribe aquà el Id.</line_editor> + <button label="OK" name="OK"/> + <button label="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/es/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..d2130228bc64309818eefc698bd1fc9fd0aad7e2 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="CONFIGURAR ALTURA DEL AVATAR"> + <slider label="Altura" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml index bf84c3d8087f9b72d6bfc112a0b793d7f4d5e6b7..a8a3ad08f8d92ed60859a8af919528a821c7e3ea 100755 --- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPIEDADES DEL ÃTEM DEL INVENTARIO"> - <floater.string name="unknown"> - (desconocido) - </floater.string> - <floater.string name="public"> - (público) - </floater.string> - <floater.string name="you_can"> - Usted puede: - </floater.string> - <floater.string name="owner_can"> - El propietario puede: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nombre: - </text> - <text name="LabelItemDescTitle"> - Descripción: - </text> - <text name="LabelCreatorTitle"> - Creador: - </text> + <floater.string name="unknown">(desconocido)</floater.string> + <floater.string name="public">(público)</floater.string> + <floater.string name="you_can">Usted puede:</floater.string> + <floater.string name="owner_can">El propietario puede:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nombre:</text> + <text name="LabelItemDescTitle">Descripción:</text> + <text name="LabelCreatorTitle">Creador:</text> <button label="Perfil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Propietario: - </text> + <text name="LabelOwnerTitle">Propietario:</text> <button label="Perfil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Adquirido: - </text> - <text name="LabelAcquiredDate"> - May Mié 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Tú: - </text> + <text name="LabelAcquiredTitle">Adquirido:</text> + <text name="LabelAcquiredDate">May Mié 24 12:50:46 2006</text> + <text name="OwnerLabel">Tú:</text> <check_box label="Editar" name="CheckOwnerModify"/> <check_box label="Copiarlo" left_delta="88" name="CheckOwnerCopy"/> <check_box label="Revender" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Cualquiera: - </text> + <text name="AnyoneLabel">Cualquiera:</text> <check_box label="Copiar" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartir" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="230"> - Próximo propietario: - </text> + <text name="NextOwnerLabel" width="230">Próximo propietario:</text> <check_box label="Editar" name="CheckNextOwnerModify"/> <check_box label="Copiarlo" left_delta="88" name="CheckNextOwnerCopy"/> <check_box label="Revender" name="CheckNextOwnerTransfer"/> <check_box label="En venta" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Copia" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Contenidos" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Precio:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_item_properties.xml b/indra/newview/skins/default/xui/es/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5fd595c2402dcac1fa3f486046675f629e7db7b --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="PROPIEDADES DEL ARTÃCULO"/> diff --git a/indra/newview/skins/default/xui/es/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/es/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..2869af87f34028ad6d51f8e2159a509c4699b839 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="ARTÃCULOS DEL MERCADO"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Cargando...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/es/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..aab4b223dc24103b80b44930fb20d8cfc9008f1c --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Auditar artÃculos del Mercado"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_openobject.xml b/indra/newview/skins/default/xui/es/floater_openobject.xml index e350479e01ba23f6a0f37a7b326e2befcbb4dff2..ab5bec33015b81db7f73200a1410ad9a8e78cde7 100755 --- a/indra/newview/skins/default/xui/es/floater_openobject.xml +++ b/indra/newview/skins/default/xui/es/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copiar en el inventario" label_selected="Copiar en el inventario" name="copy_to_inventory_button"/> - <button label="Copiar y añadir al vestuario" label_selected="Copiar y añadir al vestuario" name="copy_and_wear_button"/> + <text name="border_note"> + Copiar en el inventario y vestir + </text> + <button label="Añadir a vestuario" label_selected="Añadir a vestuario" name="copy_and_wear_button"/> + <button label="Reemplazar vestuario" label_selected="Reemplazar vestuario" name="copy_and_replace_button"/> + <button label="Solo copiar en el inventario" label_selected="Solo copiar en el inventario" name="copy_to_inventory_button"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_pay.xml b/indra/newview/skins/default/xui/es/floater_pay.xml index ad9a43ad719429948d4f06939e1092c407a55732..567f980446123c61417d2c5d527f95c1584df7d4 100755 --- a/indra/newview/skins/default/xui/es/floater_pay.xml +++ b/indra/newview/skins/default/xui/es/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Pagar al grupo - </string> - <string name="payee_resident"> - Pagar al residente - </string> - <text left="5" name="payee_label" width="105"> - Pagar: - </text> - <icon name="icon_person" tool_tip="Persona"/> - <text left="115" name="payee_name"> - Nombre de prueba demasiado largo para comprobar la función de recorte - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text left="4" name="amount text"> - O elige cuánto: - </text> - <line_editor left="60" name="amount" width="55"/> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <string name="payee_group">Pagar al grupo</string> + <string name="payee_resident">Pagar al residente</string> + <text name="paying_text">Vas a pagar:</text> + <text left="115" name="payee_name">Nombre de prueba demasiado largo para comprobar la función de recorte</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar 1 L$" label_selected="Pagar 1 L$" name="fastpay 1"/> + <button label="Pagar 5 L$" label_selected="Pagar 5 L$" name="fastpay 5"/> + <button label="Pagar 10 L$" label_selected="Pagar 10 L$" name="fastpay 10"/> + <button label="Pagar 20 L$" label_selected="Pagar 20 L$" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Otra cantidad:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_pay_object.xml b/indra/newview/skins/default/xui/es/floater_pay_object.xml index 4767f4dfa0b9e0fe8a22392782125af4bf22c4c0..8a5b02892736d2e702b70d8eb76d972833f50514 100755 --- a/indra/newview/skins/default/xui/es/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/es/floater_pay_object.xml @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string left="5" name="payee_group" width="110"> - Pagar al grupo - </string> - <string left="5" name="payee_resident" width="110"> - Pagar al residente - </string> - <icon name="icon_person" tool_tip="Persona"/> - <text left="120" name="payee_name" width="180"> - Ericacita Moostopolison - </text> - <text left="5" name="object_name_label" width="110"> - A través del objeto: - </text> + <string left="5" name="payee_group" width="110">Pagar al grupo</string> + <string left="5" name="payee_resident" width="110">Pagar al residente</string> + <text name="paying_text">Vas a pagar:</text> + <text left="120" name="payee_name" width="180">Ericacita Moostopolison</text> + <text left="5" name="object_name_label" width="110">A través del objeto:</text> <icon name="icon_object" tool_tip="Objetos"/> - <text left="120" name="object_name_text" width="180"> - El muy largo nombre de mi objeto - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text name="amount text"> - O elige cuánto: - </text> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <text left="120" name="object_name_text" width="180">El muy largo nombre de mi objeto</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar 1 L$" label_selected="Pagar 1 L$" name="fastpay 1"/> + <button label="Pagar 5 L$" label_selected="Pagar 5 L$" name="fastpay 5"/> + <button label="Pagar 10 L$" label_selected="Pagar 10 L$" name="fastpay 10"/> + <button label="Pagar 20 L$" label_selected="Pagar 20 L$" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Otra cantidad:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml index 5acd0c327a3842d5f782e43208a5fb4af0cadec7..02819e6816d40847e75394b7f5827153879fd9a6 100755 --- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mi apariencia" name="Change Outfit"/> <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/> <menu_item_call label="Editar mi anatomÃa" name="Edit My Shape"/> + <menu_item_call label="Altura del avatar" name="Hover Height"/> <menu_item_call label="Mis amigos" name="Friends..."/> <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml index 717b46ac744cb0a5295b5ca9afa93cff376045b9..d60a3434cf30b79f92ddb216246baf5f254432aa 100755 --- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mi apariencia" name="Chenge Outfit"/> <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/> <menu_item_call label="Editar mi anatomÃa" name="Edit My Shape"/> + <menu_item_call label="Altura del avatar" name="Hover Height"/> <menu_item_call label="Mis amigos" name="Friends..."/> <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml index cd5bc7917de889f126678c9668f933e7bc25e80b..5d108abf67a95e915196c9065abfeae77e02be86 100755 --- a/indra/newview/skins/default/xui/es/menu_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Crear artÃculos" name="Marketplace Create Listing"/> + <menu_item_call label="Asociar artÃculos" name="Marketplace Associate Listing"/> + <menu_item_call label="Obtener (actualizar) artÃculos" name="Marketplace Get Listing"/> + <menu_item_call label="Comprobar errores" name="Marketplace Check Listing"/> + <menu_item_call label="Editar artÃculos" name="Marketplace Edit Listing"/> + <menu_item_call label="Incluir en la lista" name="Marketplace List"/> + <menu_item_call label="Retirar de la lista" name="Marketplace Unlist"/> + <menu_item_call label="Activar" name="Marketplace Activate"/> + <menu_item_call label="Desactivar" name="Marketplace Deactivate"/> <menu_item_call label="Compartir" name="Share"/> <menu_item_call label="Comprar" name="Task Buy"/> <menu_item_call label="Abrir" name="Task Open"/> @@ -86,6 +95,7 @@ <menu_item_call label="Añadir" name="Wearable Add"/> <menu_item_call label="Quitarse" name="Take Off"/> <menu_item_call label="Copiar al Buzón de salida de comerciante" name="Merchant Copy"/> - <menu_item_call label="Enviar al Mercado" name="Marketplace Send"/> + <menu_item_call label="Copiar en artÃculos del Mercado" name="Marketplace Copy"/> + <menu_item_call label="Mover a artÃculos del Mercado" name="Marketplace Move"/> <menu_item_call label="--sin opciones--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_marketplace_view.xml b/indra/newview/skins/default/xui/es/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..c46a9f490e60a72462d9e83dd65b38593c970909 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Ordenar por cantidad en stock (de baja a alta)" name="sort_by_stock_amount"/> + <menu_item_check label="Mostrar solamente las carpetas de artÃculos" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 797cf303879d53285e00a38c48cbc9478c1e92b7..5118171d80f0229a9439a740563192a95098152b 100755 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -22,6 +22,7 @@ <menu_item_check label="No molestar" name="Do Not Disturb"/> </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> + <menu_item_call label="ArtÃculos del Mercado..." name="MarketplaceListings"/> <menu_item_call label="Panel de control de la cuenta..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/> </menu_item_call> @@ -249,6 +250,7 @@ <menu_item_check label="Texture Console" name="Texture Console"/> <menu_item_check label="Debug Console" name="Debug Console"/> <menu_item_call label="Notifications Console" name="Notifications"/> + <menu_item_check label="Consola de depuración de región" name="Region Debug Console"/> <menu_item_check label="Fast Timers" name="Fast Timers"/> <menu_item_check label="Memory" name="Memory"/> <menu_item_check label="Datos de la escena" name="Scene Statistics"/> @@ -324,7 +326,7 @@ <menu label="Red" name="Network"> <menu_item_check label="Pause Avatar" name="AgentPause"/> <menu_item_call label="Drop a Packet" name="Drop a Packet"/> - </menu> + </menu> <menu label="Mundo virtual" name="DevelopWorld"> <menu_item_check label="Anular el sol del Sim" name="Sim Sun Override"/> <menu_item_check label="MeteorologÃa fija" name="Fixed Weather"/> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index cc0d46bfe04fbb625791401c1d96171288f5cec5..9578e1b863894817f8b3a59ac4552c553b6833c6 100755 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -129,6 +129,88 @@ No se han enviado carpetas al Mercado a causa de un error del sistema o de la re La inicialización del mercado ha fallado por un error del sistema o de la red. Vuelve a intentarlo más tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Ha ocurrido el siguiente error al copiar o mover a la carpeta de stock: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Ha ocurrido el siguiente error al copiar o mover a artÃculos del Mercado: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + La transacción con el Mercado ha fallado por el siguiente error: + + Motivo: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + No hemos podido incluir este producto en tus artÃculos o activar la carpeta de versión. Normalmente esto ocurre porque falta información en el formulario de descripción de los artÃculos, aunque también puede deberse a errores en la estructura de carpetas. Puedes editar los artÃculos o comprobar si la carpeta de artÃculos tiene algún error. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Ha ocurrido el siguiente error en la lista de artÃculos del Mercado: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Ha ocurrido el siguiente error al activar esta carpeta de versión: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Esta acción cambiará el contenido activo de esta lista de artÃculos. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que cambie una lista de artÃculos activa en el Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Los artÃculos arrastrados a la ventana ArtÃculos del mercado se mueven desde sus ubicaciones originales, no se copian. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de mover un artÃculo desde el inventario al Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Al mover o eliminar una carpeta de artÃculos, se eliminarán tus artÃculos del Mercado. Si deseas conservar los artÃculos del Mercado, mueve o elimina el contenido de la carpeta de versión que desees modificar. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que mueva o elimine una lista de artÃculos del Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + No tienes permiso para copiar uno o varios de estos artÃculos en el Mercado. Puedes moverlos o dejártelos. + <usetemplate canceltext="Cancelar" ignoretext="Confirmar cuando intente copiar una selección que contiene artÃculos que no se pueden copiar en el Mercado" name="yesnocancelbuttons" notext="No mover objeto(s)" yestext="Mover objeto(s)"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Esta acción retirará esta lista de artÃculos. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que retire una lista de artÃculos activa en el Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Esta acción desactivará la carpeta de versión de la lista de artÃculos actual. ¿Quieres continuar? + <usetemplate ignoretext="Confirmar antes de que desactive la carpeta de versión de una lista de artÃculos del Mercado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + No se ha podido actualizar esta lista de artÃculos. +[[URL] Haz clic aquÃ] para editarla en el Mercado. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + No puedes ponerte prendas ni partes del cuerpo que se encuentren en la carpeta ArtÃculos del mercado. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Id. de lista de artÃculos no válida + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Esta lista de artÃculos contiene varias carpetas de versión o ninguna. Tendrás que seleccionar y activar una por tu cuenta más tarde. + <usetemplate ignoretext="Mostrar una alerta de la activación de la carpeta de versión cuando cree una lista de artÃculos con varias carpetas de versión" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Hemos separado los artÃculos en stock de diferentes tipos en carpetas distintas, para que tu carpeta esté organizada de tal forma que podamos incluirla en el Mercado. + <usetemplate ignoretext="Mostrar alerta cuando la carpeta de stock se divida antes de incluirla en la lista" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Hemos retirado tu lista de artÃculos porque el stock está vacÃo. Para volver a publicar tus artÃculos, añade más unidades a la carpeta de stock. + <usetemplate ignoretext="Mostrar alerta cuando una lista de artÃculos se retire porque la carpeta de stock está vacÃa" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtalo más tarde. </notification> @@ -468,6 +550,10 @@ o hacer una puja? ¿Guardar los cambios? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardar" yestext="Guardar"/> </notification> + <notification name="DeleteNotecard"> + ¿Deseas borrar la nota? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Fallo al guardar el gesto. Este gesto tiene demasiados pasos. @@ -1877,6 +1963,9 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se Tus preferencias de contenido actuales te impiden visitar la región que has seleccionado. Puedes cambiar las preferencias en Yo > Preferencias > General. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> La región que intentas visitar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos. <url name="url"> @@ -2165,6 +2254,10 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u <ignore name="ignore" text="He establecido la acción 'Pagar al objeto' cuando construyo uno sin un script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Confirma que deseas pagar L$[AMOUNT] a [TARGET]. + <usetemplate ignoretext="Confirmar antes de pagar (sumas mayores de 200 L$)" name="okcancelignore" notext="Cancelar" yestext="Pagar"/> + </notification> <notification name="OpenObjectCannotCopy"> En este objeto, no hay Ãtems que estés autorizado a copiar. </notification> @@ -3840,9 +3933,11 @@ Prueba otra vez dentro de un minuto. </notification> <notification name="TeleportedByAttachment"> Has sido teleportado por un anexo de [ITEM_ID] + <usetemplate ignoretext="Teleportarme: has sido teleportado por un anexo" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Has sido teleportado por el objeto '[OBJECT_NAME]' de la parcela '[PARCEL_NAME]' + <usetemplate ignoretext="Teleportarme: has sido teleportado por un objeto de una parcela" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Has sido teleportado por el objeto '[OBJECT_NAME]' que es propiedad de [OWNER_ID] @@ -4174,7 +4269,7 @@ Prueba a seleccionar un terreno más pequeño. <usetemplate ignoretext="No se pueden mover los archivos. Ruta anterior restaurada." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Ha ocurrido un problema al guardar los permisos predeterminados por el siguiente motivo: [REASON]. Intenta configurar los permisos predeterminados más adelante. + Ha ocurrido un problema al guardar los permisos de objeto predeterminados: [REASON]. Intenta configurar los permisos predeterminados más adelante. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml index 253d0800e177620da412859701737869a626d5cb..5300fce153171b3eccbd31263bae4863d9fcba26 100755 --- a/indra/newview/skins/default/xui/es/panel_login.xml +++ b/indra/newview/skins/default/xui/es/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=es - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=es</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nombre de usuario" name="username_combo" tool_tip="El nombre de usuario que elegiste al registrarte, como bobsmith12 o Steller Sunshine"/> <line_editor label="Contraseña" name="password_edit"/> - <check_box label="Recordarme" name="remember_check"/> - <text name="forgot_password_text"> - Contraseña olvidada - </text> - <button label="Iniciar sesión" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - en mi última posición - </text> <combo_box label="Mis lugares favoritos" name="start_location_combo"> + <combo_box.item label="Mi última posición" name="MyLastLocation"/> <combo_box.item label="Mi Base" name="MyHome"/> </combo_box> - <button label="Iniciar sesión" name="connect_favorite_btn"/> - <line_editor label="Especifica una ubicación" name="location_edit"/> - <button label="Iniciar sesión" name="connect_location_btn"/> + <button label="Iniciar sesión" name="connect_btn"/> + <check_box label="Recordarme" name="remember_check"/> + <text name="forgot_password_text">Contraseña olvidada</text> <combo_box label="Seleccionar cuadrÃcula" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d9cd93b349aa8dfca3116bdcc9953b148aea414e --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Mercado" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Opciones de vista/orden"/> + <button name="add_btn" tool_tip="Crear una carpeta de artÃculos nueva"/> + <button label="Comprobar errores" name="audit_btn" tool_tip="Comprobar tus artÃculos del Mercado"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtrar artÃculos del Mercado" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..77540aee39d1fff127ff2dba0388ef1445b73ab0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TODOS" name="All Items" tool_tip="Arrastra y suelta aquà los artÃculos para incluirlos en la lista de artÃculos"/> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..ca8ff6aea9b55d6f603ff6a23769f8dd0598ae7c --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="INCLUIDOS EN LA LISTA" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..2606e035cd796d91a84e77567d84f7328eef64e0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="SIN ASOCIAR" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/es/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..ea568cab8a6b67a120a3b82409cc4284b73f6813 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="RETIRADOS DE LA LISTA" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml index 7eead3bc184ddb340d1d18590c79931fc3598f5c..8ea56c52628f9811025f4750017c5be7b759a05b 100755 --- a/indra/newview/skins/default/xui/es/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Pérdida de paquetes - </panel.string> - <panel.string name="bandwidth_tooltip"> - Ancho de banda - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - [AMT] L$ - </panel.string> + <panel.string name="packet_loss_tooltip">Pérdida de paquetes</panel.string> + <panel.string name="bandwidth_tooltip">Ancho de banda</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">[AMT] L$</panel.string> <panel left="-410" name="balance_bg" width="200"> - <text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="20 L$"/> + <text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="L$??"/> <button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/> <button label="Comprar" name="goShop" tool_tip="Abrir el mercado de Second Life" width="80"/> </panel> - <text name="TimeText" tool_tip="Hora actual (PacÃfico)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Hora actual (PacÃfico)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Iniciar/Parar todos los media (música, vÃdeo, páginas web)"/> <button name="volume_btn" tool_tip="Control general del volumen"/> </panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml index 94c8011768b6b3523d31f0c8c5f7993104639d3c..8132bbdb1bfba73c4256dbd27dff336a3addf4ff 100755 --- a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> </panel> <check_box label="En venta" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Contenidos" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Precio: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml index cb061796e7917ced1ffe92cbe658635311bd8a42..b9c8139f1615b1176632cd328127127af4985c43 100755 --- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Perfil del objeto"> - <panel.string name="text deed continued"> - Transferir - </panel.string> - <panel.string name="text deed"> - Transferir - </panel.string> - <panel.string name="text modify info 1"> - Puedes modificar este objeto - </panel.string> - <panel.string name="text modify info 2"> - Puedes modificar estos objetos - </panel.string> - <panel.string name="text modify info 3"> - No puedes modificar este objeto - </panel.string> - <panel.string name="text modify info 4"> - No puedes modificar estos objetos - </panel.string> - <panel.string name="text modify info 5"> - No se puede modificar este objeto a través del lÃmite de una región - </panel.string> - <panel.string name="text modify info 6"> - No se pueden modificar estos objetos a través del lÃmite de una región - </panel.string> - <panel.string name="text modify warning"> - Este objeto tiene partes enlazadas - </panel.string> - <panel.string name="Cost Default"> - Precio: L$ - </panel.string> - <panel.string name="Cost Total"> - Precio total: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Price Per: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Mixed Price - </panel.string> - <panel.string name="Sale Mixed"> - Mixed Sale - </panel.string> + <panel.string name="text deed continued">Transferir</panel.string> + <panel.string name="text deed">Transferir</panel.string> + <panel.string name="text modify info 1">Puedes modificar este objeto</panel.string> + <panel.string name="text modify info 2">Puedes modificar estos objetos</panel.string> + <panel.string name="text modify info 3">No puedes modificar este objeto</panel.string> + <panel.string name="text modify info 4">No puedes modificar estos objetos</panel.string> + <panel.string name="text modify info 5">No se puede modificar este objeto a través del lÃmite de una región</panel.string> + <panel.string name="text modify info 6">No se pueden modificar estos objetos a través del lÃmite de una región</panel.string> + <panel.string name="text modify warning">Este objeto tiene partes enlazadas</panel.string> + <panel.string name="Cost Default">Precio: L$</panel.string> + <panel.string name="Cost Total">Precio total: L$</panel.string> + <panel.string name="Cost Per Unit">Price Per: L$</panel.string> + <panel.string name="Cost Mixed">Mixed Price</panel.string> + <panel.string name="Sale Mixed">Mixed Sale</panel.string> <text name="title" value="Perfil del objeto"/> <text name="where" value="(En el mundo)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nombre: - </text> - <text name="Description:"> - Descripción: - </text> - <text name="CreatorNameLabel"> - Creador: - </text> - <text name="Owner:"> - Propietario: - </text> - <text name="Group_label"> - Grupo: - </text> + <text name="Name:">Nombre:</text> + <text name="Description:">Descripción:</text> + <text name="CreatorNameLabel">Creador:</text> + <text name="Owner:">Propietario:</text> + <text name="Group_label">Grupo:</text> <button name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/> <name_box initial_value="Cargando..." name="Group Name Proxy"/> <button label="Transferir" label_selected="Transferir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/> - <text name="label click action"> - Pulsa para: - </text> + <text name="label click action">Pulsa para:</text> <combo_box name="clickaction"> <combo_box.item label="Tocarlo (por defecto)" name="Touch/grab(default)"/> <combo_box.item label="Sentarme en el objeto" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Puedes modificar este objeto - </text> - <text name="Anyone can:"> - Cualquiera: - </text> + <text name="perm_modify">Puedes modificar este objeto</text> + <text name="Anyone can:">Cualquiera:</text> <check_box label="Copiar" name="checkbox allow everyone copy"/> <check_box label="Mover" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación de este objeto. Debes transferirlo para activar las restricciones según los roles."/> - <text name="NextOwnerLabel"> - Próximo propietario: - </text> + <text name="NextOwnerLabel">Próximo propietario:</text> <check_box label="Modificar" name="checkbox next owner can modify"/> <check_box label="Copiar" name="checkbox next owner can copy"/> <check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Precio: L$" name="Edit Cost"/> <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Permitir que la gente vea este objeto en los resultados de la búsqueda"/> - <text name="pathfinding_attributes_label"> - Atributos de pathfinding: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Atributos de pathfinding:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Abrir" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index cabb5ee67b00877388f17aad1b083013b13266de..404aa1e60e3b3babbb65feef0a91eda6933ed9b1 100755 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -445,28 +445,46 @@ Intenta iniciar sesión de nuevo en unos instantes. </string> <string name="TooltipPrice" value="[AMOUNT] L$:"/> <string name="TooltipOutboxDragToWorld"> - No puedes colocar objetos en tu buzón de salida de comerciante + No se pueden mostrar artÃculos desde la carpeta ArtÃculos del mercado + </string> + <string name="TooltipOutboxWorn"> + Los artÃculos que tienes puestos no se pueden colocar en la carpeta ArtÃculos del mercado + </string> + <string name="TooltipOutboxFolderLevels"> + La profundidad de carpetas anidadas excede de [AMOUNT]. Disminuye la profundidad de las carpetas anidadas; si es necesario, agrupa los artÃculos. + </string> + <string name="TooltipOutboxTooManyFolders"> + La cantidad de subcarpetas excede de [AMOUNT]. Disminuye la cantidad de carpetas de tu lista de artÃculos; si es necesario, agrupa los artÃculos. + </string> + <string name="TooltipOutboxTooManyObjects"> + La cantidad de artÃculos excede de [AMOUNT]. Para vender más de [AMOUNT] artÃculos en la misma lista, debes agrupar algunos. + </string> + <string name="TooltipOutboxTooManyStockItems"> + La cantidad de artÃculos en stock excede de [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Solo se pueden soltar artÃculos o carpetas en la pestaña TODOS. Selecciona esta pestaña y mueve otra vez los artÃculos o carpetas. </string> <string name="TooltipOutboxNoTransfer"> - Uno o varios de estos objetos no se pueden vender o transferir. + Uno o varios de estos objetos no se pueden vender o transferir </string> <string name="TooltipOutboxNotInInventory"> - Tu buzón de salida de comerciante sólo puede aceptar objetos procedentes directamente de tu inventario + Solo puedes colocar en el mercado artÃculos de tu inventario </string> - <string name="TooltipOutboxWorn"> - No puedes poner artÃculos que llevas puestos en el buzón de salida de comerciante + <string name="TooltipOutboxLinked"> + No puedes poner carpetas o artÃculos vinculados en el Mercado </string> <string name="TooltipOutboxCallingCard"> - No puedes poner tarjetas de visita en tu buzón de salida de comerciante + No puedes colocar tarjetas de visita en el Mercado </string> - <string name="TooltipOutboxFolderLevels"> - La profundidad de carpetas anidadas excede de 3 + <string name="TooltipOutboxDragActive"> + No se puede mover una lista de artÃculos publicada </string> - <string name="TooltipOutboxTooManyFolders"> - El número de subcarpetas de la carpeta de nivel superior excede de 20 + <string name="TooltipOutboxCannotMoveRoot"> + No se puede mover la carpeta raÃz de artÃculos del Mercado </string> - <string name="TooltipOutboxTooManyObjects"> - El número de elementos de la carpeta de nivel superior excede de 200 + <string name="TooltipOutboxMixedStock"> + Todos los artÃculos de una carpeta de stock deben tener el mismo tipo y permiso </string> <string name="TooltipDragOntoOwnChild"> No puedes mover una carpeta a su carpeta secundaria @@ -1045,7 +1063,7 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="AgentNameSubst"> (Tú) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Suprimir alertas al gestionar las listas de acceso a un estado </string> @@ -1112,6 +1130,12 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="bitmap_image_files"> Imágenes de mapa de bits </string> + <string name="png_image_files"> + Imágenes PNG + </string> + <string name="save_texture_image_files"> + Imágenes Targa o PNG + </string> <string name="avi_movie_file"> Archivo de pelÃcula AVI </string> @@ -1361,6 +1385,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="FavoritesNoMatchingItems"> Arrastra aquà un hito para tenerlo en tus favoritos. </string> + <string name="MarketplaceNoMatchingItems"> + No se han encontrado artÃculos. Comprueba si has escrito correctamente la cadena de búsqueda y vuelve a intentarlo. + </string> <string name="InventoryNoTexture"> No tienes en tu inventario una copia de esta textura </string> @@ -1408,29 +1435,95 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="InventoryOutboxError"> La [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado] devuelve errores. </string> + <string name="InventoryMarketplaceError"> + Esta función está actualmente en versión beta. Si quieres participar, añade tu nombre a este [http://goo.gl/forms/FCQ7UXkakz Formulario de Google]. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Tu carpeta ArtÃculos del mercado está vacÃa. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Arrastra carpetas a esta sección para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado]. + </string> + <string name="Marketplace Validation Warning Stock"> + La carpeta de stock debe estar contenida en una carpeta de versión + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Error: todos los artÃculos de una carpeta de stock deben ser del mismo tipo y que no se puedan copiar + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Error: la carpeta de stock no puede contener subcarpetas + </string> + <string name="Marketplace Validation Warning Empty"> + : Atención: la carpeta no contiene ningún artÃculo + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Atención: creando carpeta de stock + </string> + <string name="Marketplace Validation Warning Create Version"> + : Atención: creando la carpeta de versión + </string> + <string name="Marketplace Validation Warning Move"> + : Atención: moviendo artÃculos + </string> + <string name="Marketplace Validation Warning Delete"> + : Atención: se ha transferido el contenido de la carpeta a la carpeta de stock, y se eliminará la carpeta vacÃa + </string> + <string name="Marketplace Validation Error Stock Item"> + : Error: los artÃculos que no se pueden copiar deben estar contenidos en una carpeta de stock + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Atención: los artÃculos deben estar contenidos en una carpeta de versión + </string> + <string name="Marketplace Validation Error"> + : Error: + </string> + <string name="Marketplace Validation Warning"> + : Atención: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Atención: la carpeta de versión debe contener al menos un artÃculo + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Atención: la carpeta de stock debe contener al menos un artÃculo + </string> + <string name="Marketplace Validation No Error"> + No se han producido errores ni advertencias + </string> <string name="Marketplace Error None"> Sin errores </string> + <string name="Marketplace Error Prefix"> + Error: + </string> <string name="Marketplace Error Not Merchant"> - Error: Para poder enviar objetos al mercado, debes registrarte como comerciante (es gratis). + Para poder enviar objetos al mercado, debes registrarte como comerciante (es gratis). + </string> + <string name="Marketplace Error Not Accepted"> + No se puede mover el artÃculo a esa carpeta. </string> - <string name="Marketplace Error Empty Folder"> - Error: Esta carpeta está vacÃa. + <string name="Marketplace Error Unsellable Item"> + Este artÃculo no se puede vender en el Mercado. </string> - <string name="Marketplace Error Unassociated Products"> - Error: Este objeto no se pudo subir porque tu cuenta de comerciante tiene demasiados objetos que no están asociados a productos. Para corregirlo, inicia sesión en la página web del mercado y asocia más objetos. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Object Limit"> - Error: Este elemento contiene demasiados objetos. Para corregir el error, guarda objetos en cajas de forma que el total de objetos sea menor que 200. + <string name="MarketplaceLive"> + en la lista </string> - <string name="Marketplace Error Folder Depth"> - Error: Este objeto contiene demasiados niveles de carpetas anidadas. ReorganÃzalo de forma que tenga como máximo 3 niveles de carpetas anidadas. + <string name="MarketplaceActive"> + activa </string> - <string name="Marketplace Error Unsellable Item"> - Error: Este objeto no se puede vender en el mercado. + <string name="MarketplaceMax"> + máx. </string> - <string name="Marketplace Error Internal Import"> - Error: Este objeto tiene un problema. Vuelve a intentarlo más tarde. + <string name="MarketplaceStock"> + stock + </string> + <string name="MarketplaceNoStock"> + existencias agotadas + </string> + <string name="MarketplaceUpdating"> + actualizando... </string> <string name="Open landmarks"> Abrir hitos @@ -1451,6 +1544,7 @@ Intenta iniciar sesión de nuevo en unos instantes. No hay contenido </string> <string name="WornOnAttachmentPoint" value="(lo llevas en: [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (activo)"/> <string name="Chat Message" value="Chat:"/> <string name="Sound" value="Sonido :"/> @@ -1715,6 +1809,15 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="Invalid Attachment"> Punto de colocación no válido </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Error: falta un artÃculo + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Error: falta el artÃculo de base + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Error: el objeto se encuentra en el vestuario actual, pero no está anexado + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] de edad </string> @@ -1850,9 +1953,6 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="CompileQueueUnknownFailure"> Fallo desconocido en la descarga </string> - <string name="CompileNoExperiencePerm"> - Omitiendo el script [SCRIPT] con la experiencia [EXPERIENCE]. - </string> <string name="CompileQueueTitle"> Recompilando </string> @@ -1886,6 +1986,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="SaveComplete"> Guardado. </string> + <string name="UploadFailed"> + Error al subir el archivo: + </string> <string name="ObjectOutOfRange"> Script (objeto fuera de rango) </string> @@ -1895,6 +1998,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="GroupsNone"> ninguno </string> + <string name="CompileNoExperiencePerm"> + Omitiendo el script [SCRIPT] con la experiencia [EXPERIENCE]. + </string> <string name="Group" value="(grupo)"/> <string name="Unknown"> (Desconocido) @@ -4980,6 +5086,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="Command_Marketplace_Label"> Mercado </string> + <string name="Command_MarketplaceListings_Label"> + Mercado + </string> <string name="Command_MiniMap_Label"> Minimapa </string> @@ -5067,6 +5176,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="Command_Marketplace_Tooltip"> Ir de compras </string> + <string name="Command_MarketplaceListings_Tooltip"> + Vende tu creación + </string> <string name="Command_MiniMap_Tooltip"> Mostrar la gente que está cerca </string> @@ -5178,6 +5290,18 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="UserDictionary"> [Usuario] </string> + <string name="logging_calls_disabled_log_empty"> + No se están registrando las conversaciones. Para empezar a grabar un registro, elige "Guardar: Solo registro" o "Guardar: Registro y transcripciones" en Preferencias > Chat. + </string> + <string name="logging_calls_disabled_log_not_empty"> + No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige "Guardar: Solo registro" o "Guardar: Registro y transcripciones" en Preferencias > Chat. + </string> + <string name="logging_calls_enabled_log_empty"> + No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquà se mostrará una entrada de registro. + </string> + <string name="loading_chat_logs"> + Cargando... + </string> <string name="experience_tools_experience"> Experiencia </string> @@ -5259,16 +5383,4 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="ExperiencePermissionShort12"> Otorgar permisos </string> - <string name="logging_calls_disabled_log_empty"> - No se están registrando las conversaciones. Para empezar a grabar un registro, elige "Guardar: Solo registro" o "Guardar: Registro y transcripciones" en Preferencias > Chat. - </string> - <string name="logging_calls_disabled_log_not_empty"> - No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige "Guardar: Solo registro" o "Guardar: Registro y transcripciones" en Preferencias > Chat. - </string> - <string name="logging_calls_enabled_log_empty"> - No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquà se mostrará una entrada de registro. - </string> - <string name="loading_chat_logs"> - Cargando... - </string> </strings> diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index 384966354e5fd6dae2127f93b9f53e5da3fda815..08f26e60b47fc262bc926f1c4277ab60e5b5ef46 100755 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -1,74 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="À PROPOS DE [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Compilé avec [COMPILER] version [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Vous êtes à [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] dans [REGION], se trouvant à <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL : <nolink>[SLURL]</nolink> -(coordonnées globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU : [CPU] -Mémoire : [MEMORY_MB] Mo -Version OS : [OS_VERSION] -Distributeur de cartes graphiques : [GRAPHICS_CARD_VENDOR] -Cartes graphiques : [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Version OpenGL : [OPENGL_VERSION] - -Version libcurl : [LIBCURL_VERSION] -Version J2C Decoder : [J2C_VERSION] -Version Audio Driver : [AUDIO_DRIVER_VERSION] -Version Qt Webkit : [QT_WEBKIT_VERSION] -Version serveur vocal : [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (aucun) - </floater.string> - <floater.string name="AboutTraffic"> - Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Erreur lors de la récupération de l'URL des notes de version du serveur. - </floater.string> <tab_container name="about_tab"> <panel label="Infos" name="support_panel"> <button label="Copier dans le presse-papiers" name="copy_btn"/> </panel> <panel label="Remerciements" name="credits_panel"> - <text name="linden_intro"> - Second Life vous est proposé par les Linden : - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - Contributions Open Source : - </text> - <text_editor name="contrib_names"> - Dummy Name remplacé au moment de l'exécution - </text_editor> - <text name="trans_intro"> - Participation aux traductions : - </text> - <text_editor name="trans_names"> - Dummy Name remplacé au moment de l'exécution - </text_editor> + <text name="linden_intro">Second Life vous est proposé par les Linden, +avec les contributions Open Source de :</text> + <text_editor name="contrib_names">Dummy Name remplacé au moment de l'exécution</text_editor> </panel> <panel label="Licences" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -95,8 +37,7 @@ Version serveur vocal : [VOICE_VERSION] Tous droits réservés. Voir licenses.txt pour plus d'informations. - Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_associate_listing.xml b/indra/newview/skins/default/xui/fr/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c61cfe4ca65940c11d7f0cd6378706e5ab939fc --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASSOCIER L'ANNONCE"> + <text name="message">ID d'annonce :</text> + <line_editor name="listing_id">Saisir l'ID ici</line_editor> + <button label="OK" name="OK"/> + <button label="Annuler" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/fr/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..28e7e87193d3a4b576678d4adc60dd4a25295edf --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="DÉFINIR LA HAUTEUR DE SUSTENTATION"> + <slider label="Hauteur" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml index f2eb3cb6bc59ed51f65a0a0508f8d880f3d7bbe4..1d4e7c818fe192e8b66a71423fecfa557aaa372b 100755 --- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPRIÉTÉS DES ARTICLES DE L'INVENTAIRE"> - <floater.string name="unknown"> - (inconnu) - </floater.string> - <floater.string name="public"> - (public) - </floater.string> - <floater.string name="you_can"> - Vous pouvez : - </floater.string> - <floater.string name="owner_can"> - Le propriétaire peut : - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nom : - </text> - <text name="LabelItemDescTitle"> - Description : - </text> - <text name="LabelCreatorTitle"> - Créateur : - </text> + <floater.string name="unknown">(inconnu)</floater.string> + <floater.string name="public">(public)</floater.string> + <floater.string name="you_can">Vous pouvez :</floater.string> + <floater.string name="owner_can">Le propriétaire peut :</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nom :</text> + <text name="LabelItemDescTitle">Description :</text> + <text name="LabelCreatorTitle">Créateur :</text> <button label="Profil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Propriétaire : - </text> + <text name="LabelOwnerTitle">Propriétaire :</text> <button label="Profil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Acquis : - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Vous : - </text> + <text name="LabelAcquiredTitle">Acquis :</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">Vous :</text> <check_box label="Modifier" name="CheckOwnerModify"/> <check_box label="Copier" name="CheckOwnerCopy"/> <check_box label="Revendre" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel" width="80"> - N'importe qui : - </text> + <text name="AnyoneLabel" width="80">N'importe qui :</text> <check_box label="Copier" name="CheckEveryoneCopy"/> - <text name="GroupLabel" width="80"> - Groupe : - </text> + <text name="GroupLabel" width="80">Groupe :</text> <check_box label="Partager" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="192"> - Le prochain propriétaire : - </text> + <text name="NextOwnerLabel" width="192">Le prochain propriétaire :</text> <check_box label="Modifier" name="CheckNextOwnerModify"/> <check_box label="Copier" name="CheckNextOwnerCopy"/> <check_box label="Revendre" name="CheckNextOwnerTransfer"/> <check_box label="À vendre" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copier" name="Copy"/> + <combo_box.item label="Contenu" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Prix :" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..5301e759eed63a994507113c6fca51db2a4a0efb --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="PROPRIÉTÉS DE L'ARTICLE"/> diff --git a/indra/newview/skins/default/xui/fr/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/fr/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..8488d17d00b18f6d3b62d64bfe8fa64a8c981e31 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="ANNONCES DE LA PLACE DU MARCHÉ"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Chargement…</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/fr/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..01527800acf56fcf84157b1ed8be1358811a8eac --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Auditer les annonces de la Place du marché"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_openobject.xml b/indra/newview/skins/default/xui/fr/floater_openobject.xml index ee969169d2888766e96801dabef11b2252d31df2..54edf92379c0a9e1afdb0fef0f746f0800cb1ea9 100755 --- a/indra/newview/skins/default/xui/fr/floater_openobject.xml +++ b/indra/newview/skins/default/xui/fr/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copier dans l'inventaire" label_selected="Copier dans l'inventaire" name="copy_to_inventory_button" width="132"/> - <button label="Copier et ajouter à la tenue" label_selected="Copier et ajouter à la tenue" left="152" name="copy_and_wear_button"/> + <text name="border_note"> + Copier dans l'inventaire et porter + </text> + <button label="Ajouter à la tenue" label_selected="Ajouter à la tenue" left="152" name="copy_and_wear_button"/> + <button label="Remplacer la tenue" label_selected="Remplacer la tenue" name="copy_and_replace_button"/> + <button label="Copier uniquement dans l'inventaire" label_selected="Copier uniquement dans l'inventaire" name="copy_to_inventory_button" width="132"/> + <button label="Annuler" label_selected="Annuler" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml index 397436876dfea0a31ec623c95a633026187bc84c..bbd20e868cafd16ee5078a233e2ca6da32d25bf5 100755 --- a/indra/newview/skins/default/xui/fr/floater_pay.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Payer le groupe - </string> - <string name="payee_resident"> - Payer le résident - </string> - <text left="5" name="payee_label"> - Payer : - </text> - <icon name="icon_person" tool_tip="Résident"/> - <text name="payee_name"> - Test Name That Is Extremely Long To Check Clipping - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text left="4" name="amount text"> - Ou choisir un montant : - </text> - <line_editor left="60" name="amount" width="55"/> - <button label="Payer" label_selected="Payer" name="pay btn"/> - <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + <string name="payee_group">Payer le groupe</string> + <string name="payee_resident">Payer le résident</string> + <text name="paying_text">Vous payez :</text> + <text name="payee_name">Test Name That Is Extremely Long To Check Clipping</text> + <panel label="Rechercher" name="PatternsPanel"> + <button label="Payer 1 L$" label_selected="Payer 1 L$" name="fastpay 1"/> + <button label="Payer 5 L$" label_selected="Payer 5 L$" name="fastpay 5"/> + <button label="Payer 10 L$" label_selected="Payer 10 L$" name="fastpay 10"/> + <button label="Payer 20 L$" label_selected="Payer 20 L$" name="fastpay 20"/> + </panel> + <panel label="Rechercher" name="InputPanel"> + <text name="amount text">Autre montant :</text> + <button label="Payer" label_selected="Payer" name="pay btn"/> + <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_pay_object.xml b/indra/newview/skins/default/xui/fr/floater_pay_object.xml index 966fa3b8a69f8c42bb0a6b23fad29b27e9ba52a3..c98d2f7c0ce228c97ff8571822c3a5060f41cadd 100755 --- a/indra/newview/skins/default/xui/fr/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group" width="95"> - Payer le groupe - </string> - <string halign="left" name="payee_resident" width="100"> - Payer le résident - </string> - <icon name="icon_person" tool_tip="Résident"/> - <text left="105" name="payee_name"> - Ericacita Moostopolison - </text> - <text left="25" name="object_name_label"> - Via un objet : - </text> + <string name="payee_group" width="95">Payer le groupe</string> + <string halign="left" name="payee_resident" width="100">Payer le résident</string> + <text name="paying_text">Vous payez :</text> + <text left="105" name="payee_name">Ericacita Moostopolison</text> + <text left="25" name="object_name_label">Via un objet :</text> <icon name="icon_object" tool_tip="Objets"/> - <text left="105" name="object_name_text"> - ... - </text> - <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <text halign="left" left="5" name="amount text"> - Ou choisir un montant : - </text> - <line_editor left="65" name="amount" width="50"/> - <button label="Payer" label_selected="Payer" name="pay btn"/> - <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + <text left="105" name="object_name_text">...</text> + <panel label="Rechercher" name="PatternsPanel"> + <button label="Payer 1 L$" label_selected="Payer 1 L$" name="fastpay 1"/> + <button label="Payer 5 L$" label_selected="Payer 5 L$" name="fastpay 5"/> + <button label="Payer 10 L$" label_selected="Payer 10 L$" name="fastpay 10"/> + <button label="Payer 20 L$" label_selected="Payer 20 L$" name="fastpay 20"/> + </panel> + <panel label="Rechercher" name="InputPanel"> + <text name="amount text">Autre montant :</text> + <button label="Payer" label_selected="Payer" name="pay btn"/> + <button label="Annuler" label_selected="Annuler" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml index f2e7928c24ce92cb64870bcd2ce2128da5642213..1ccba0809915c342171cf303b5b2687a7c35fe96 100755 --- a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mon apparence" name="Change Outfit"/> <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/> <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/> + <menu_item_call label="Hauteur de sustentation" name="Hover Height"/> <menu_item_call label="Mes amis" name="Friends..."/> <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml index 4815ad06763bb8bae42c3e531d2fd5d93bfeb4b1..1c768a078c82a3c5af2e1a3c1565e37cd38f000e 100755 --- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mon apparence" name="Chenge Outfit"/> <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/> <menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/> + <menu_item_call label="Hauteur de sustentation" name="Hover Height"/> <menu_item_call label="Mes amis" name="Friends..."/> <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml index 87b11bdaa5747bf3d89ddb189c266cb11d9b2e22..c0808f11391792913462acbec1a59d7d92df17aa 100755 --- a/indra/newview/skins/default/xui/fr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Créer une annonce" name="Marketplace Create Listing"/> + <menu_item_call label="Associer l'annonce" name="Marketplace Associate Listing"/> + <menu_item_call label="Obtenir (actualiser) l'annonce" name="Marketplace Get Listing"/> + <menu_item_call label="Consultez les erreurs" name="Marketplace Check Listing"/> + <menu_item_call label="Modifier l'annonce" name="Marketplace Edit Listing"/> + <menu_item_call label="Publier" name="Marketplace List"/> + <menu_item_call label="Ne plus publier" name="Marketplace Unlist"/> + <menu_item_call label="Activer" name="Marketplace Activate"/> + <menu_item_call label="Désactiver" name="Marketplace Deactivate"/> <menu_item_call label="Partager" name="Share"/> <menu_item_call label="Acheter" name="Task Buy"/> <menu_item_call label="Ouvrir" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Ajouter" name="Wearable Add"/> <menu_item_call label="Enlever" name="Take Off"/> <menu_item_call label="Copier vers la boîte d'envoi vendeur" name="Merchant Copy"/> - <menu_item_call label="Envoyer vers la Place du marché" name="Marketplace Send"/> + <menu_item_call label="Copier dans les annonces Place du marché" name="Marketplace Copy"/> + <menu_item_call label="Déplacer dans les annonces Place du marché" name="Marketplace Move"/> <menu_item_call label="--aucune option--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_marketplace_view.xml b/indra/newview/skins/default/xui/fr/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..a63e2082b7c3ba8eacab426b0dc2252634e71f71 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Trier par volume de stock (de bas à élevé)" name="sort_by_stock_amount"/> + <menu_item_check label="Afficher uniquement les dossiers d'annonces" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 9a4d721bc37add783c837d6b27c855d6216e2f8b..33b2ba69828883bcb79ec4dc7f7cbb3f43785320 100755 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/> <menu_item_call label="Boîte d'envoi vendeur..." name="MerchantOutbox"/> + <menu_item_call label="Annonces de Place du marché..." name="MarketplaceListings"/> <menu_item_call label="Page d'accueil du compte..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/> </menu_item_call> @@ -251,6 +252,7 @@ <menu_item_check label="Console de textures" name="Texture Console"/> <menu_item_check label="Console de débogage" name="Debug Console"/> <menu_item_call label="Console de notifications" name="Notifications"/> + <menu_item_check label="Console de débogage de région" name="Region Debug Console"/> <menu_item_check label="Chronos" name="Fast Timers"/> <menu_item_check label="Mémoire" name="Memory"/> <menu_item_check label="Statistiques de la scène" name="Scene Statistics"/> @@ -354,7 +356,7 @@ <menu_item_check label="Interpolation ping des positions des objets" name="Ping Interpolate Object Positions"/> <menu_item_call label="Abandonner un paquet" name="Drop a Packet"/> </menu> - <menu_item_call label="Dump caméra scriptée" name="Dump Scripted Camera"/> + <menu_item_call label="Dump caméra scriptée" name="Dump Scripted Camera"/> <menu label="Enregistreur" name="Recorder"> <menu_item_call label="Commencer la lecture" name="Start Playback"/> <menu_item_call label="Arrêter la lecture" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 28689a93d69f2cd36f54cec004a0b5234598905c..f13a80fe61e1506ac5a257e0f81ecd8dd1bb9749 100755 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -129,6 +129,88 @@ Aucun dossier n'a été envoyé vers la Place du marché en raison d'u L'initialisation de la Place du marché a échoué en raison d'une erreur système ou réseau. Réessayez ultérieurement. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Échec de la copie ou du déplacement vers le dossier de stock. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Échec de la copie ou du déplacement vers les annonces Place du marché. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + La transaction avec la Place du marché a échoué en raison de l'erreur suivante : + + Motif : '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Nous ne pouvons pas publier ce produit ni activer le dossier de version. Cela est en général dû à des informations manquantes dans le formulaire de description de l'annonce, mais parfois à cause d'erreurs dans la structure du dossier. Modifiez l'annonce ou consultez les erreurs du dossier de l'annonce. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Échec de la publication d'une annonce sur la Place du marché. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Échec de l'activation de ce dossier de version. Erreur : + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Cette action va modifier le contenu actif de cette annonce. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je ne modifie une annonce active sur la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Les articles glissés vers la fenêtre Annonces de la Place du marché sont déplacés de leur emplacement d'origine, et non copiés. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je ne déplace un article de l'inventaire vers la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Le déplacement ou la suppression d'un dossier d'annonces supprimera votre annonce de la Place du marché. Si vous souhaitez conserver l'annonce de la Place du marché, déplacez ou supprimez le contenu du dossier de version que vous souhaitez modifier. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je déplace ou supprime une annonce de la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Vous n'êtes pas autorisé à copier un ou plusieurs de ces articles vers la Place du marché. Vous pouvez les déplacer ou les laisser. + <usetemplate canceltext="Annuler" ignoretext="Confirmer avant que je ne copie une sélection contenant des articles non reproductibles vers la Place du marché" name="yesnocancelbuttons" notext="Ne pas déplacer les articles" yestext="Déplacer les articles"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Cette action va annuler cette annonce. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que j'annule une annonce active sur la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Cette action va désactiver le dossier de version de l'annonce active. Voulez-vous continuer ? + <usetemplate ignoretext="Confirmer avant que je ne désactive le dossier de version d'une annonce de la Place du marché" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Impossible de mettre à jour cette annonce. +[[URL] Cliquez ici] pour la modifier sur la Place du marché. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Vous ne pouvez pas porter de vêtements ou des parties du corps se trouvant dans le dossier Annonces de la Place du marché. + </notification> + <notification name="AlertMerchantListingInvalidID"> + ID d'annonce non valide. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Il y a plusieurs dossiers de version (ou aucun) dans cette liste. Vous devrez en sélectionner et activer un indépendamment plus tard. + <usetemplate ignoretext="Alerter en cas d'activation du dossier de version lorsque je crée une annonce avec plusieurs dossiers de version" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Nous avons classé les articles du stock de types différents dans des dossiers de stocks distincts ; votre dossier est organisé de telle façon que nous pouvons le répertorier. + <usetemplate ignoretext="Alerter lorsque le dossier de stock est divisé avant publication" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Nous avons retiré votre annonce car le stock est vide. Vous devez ajouter plus d'unités au dossier de stock pour publier à nouveau l'annonce. + <usetemplate ignoretext="Alerter lorsqu'une annonce n'est pas publiée parce que le dossier de stock est vide" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Une erreur est survenue lors du chargement du texte pour un script, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement. </notification> @@ -472,6 +554,10 @@ Remarque : cela videra le cache. Enregistrer les changements ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/> </notification> + <notification name="DeleteNotecard"> + Supprimer la note ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> L'enregistrement du geste a échoué. Il y a trop d'étapes dans ce geste. @@ -1867,6 +1953,9 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po La région que vous essayez de visiter comporte du contenu dont le niveau dépasse celui de vos préférences actuelles. Vous pouvez modifier vos préférences en accédant à Moi > Préférences > Général. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes. <url name="url"> @@ -2155,6 +2244,10 @@ Déplacer les objets de l'inventaire ? <ignore name="ignore" text="Je définis l'action du clic Payer l'objet lorsque je construis un objet sans le script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Confirmez que vous voulez payer [AMOUNT] L$ à [TARGET]. + <usetemplate ignoretext="Confirmez avant de payer (sommes supérieures à 200 L$)" name="okcancelignore" notext="Annuler" yestext="Payer"/> + </notification> <notification name="OpenObjectCannotCopy"> Vous n'êtes autorisé à copier aucun élément dans cet objet. </notification> @@ -3841,9 +3934,11 @@ Veuillez réessayer dans une minute. </notification> <notification name="TeleportedByAttachment"> Vous avez été téléporté par un élément sur [ITEM_ID] + <usetemplate ignoretext="Téléportation : vous avez été téléporté par un attachement." name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Vous avez été téléporté par l'objet [OBJECT_NAME] sur la parcelle [PARCEL_NAME]. + <usetemplate ignoretext="Téléportation : vous avez été téléporté par un objet sur une parcelle" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Vous avez été téléporté par l'objet [OBJECT_NAME] appartenant à [OWNER_ID]. @@ -4175,7 +4270,7 @@ Veuillez sélectionner un terrain plus petit. <usetemplate ignoretext="Impossible de déplacer les fichiers. Chemin précédent rétabli." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Une erreur est survenue lors de l'enregistrement des droits par défaut, suite au problème suivant : [REASON]. Réessayez de définir les droits par défaut ultérieurement. + Problème lors de l'enregistrement des droits d'objet par défaut : [REASON]. Réessayez de définir les droits par défaut ultérieurement. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml index b39920fe139e646526c96d9fbd21fa8b4db55942..54c857fdc866df6a213ae19d42466429b5e534d9 100755 --- a/indra/newview/skins/default/xui/fr/panel_login.xml +++ b/indra/newview/skins/default/xui/fr/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=fr - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=fr</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nom d'utilisateur" name="username_combo" tool_tip="Nom d'utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/> <line_editor label="Mot de passe" name="password_edit"/> - <check_box label="Mémoriser mes informations" name="remember_check"/> - <text name="forgot_password_text"> - Mot de passe oublié - </text> - <button label="Connexion" name="connect_btn"/> - <text name="At_My_Last_Location_Label" font="SansSerifSmall" width="140"> - au dernier emplacement - </text> <combo_box label="Mes lieux préférés" name="start_location_combo"> + <combo_box.item label="Dernier emplacement" name="MyLastLocation"/> <combo_box.item label="Domicile" name="MyHome"/> </combo_box> - <button label="Connexion" name="connect_favorite_btn"/> - <line_editor label="Tapez un emplacement" name="location_edit"/> - <button label="Connexion" name="connect_location_btn"/> + <button label="Connexion" name="connect_btn"/> + <check_box label="Mémoriser mes informations" name="remember_check"/> + <text name="forgot_password_text">Mot de passe oublié</text> <combo_box label="Sélectionner la grille" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..46578182dab4a0ef019cac2d8fcb202c8f290ff1 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Place du marché" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Options d'affichage/de tri"/> + <button name="add_btn" tool_tip="Créer un nouveau dossier d'annonces"/> + <button label="Consulter les erreurs" name="audit_btn" tool_tip="Consulter vos annonces de Place du marché"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtrer les annonces de Place du marché" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..fdee447a299e5d7dfa1d8aca10335b0b7314a23e --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TOUT" name="All Items" tool_tip="Faire glisser les objets et les déposer ici pour les publier"/> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..d3d476af6ee5c5818095a212b43d6765564cbd94 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="PUBLIÉS" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..95018e339f317dd01dcfe980e554c3b94cd593b4 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="DÉSASSOCIÉE" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..5d811af914410066f8304112e0b910e6ba0c47a6 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NON PUBLIÉS" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml index ba36a7d2991f5f49f344a32bd45a51848422d851..e2f05a525e53840ceff92fb4d8c99720c5fe19bd 100755 --- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Perte de paquets - </panel.string> - <panel.string name="bandwidth_tooltip"> - Bande passante - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - [AMT] L$ - </panel.string> + <panel.string name="packet_loss_tooltip">Perte de paquets</panel.string> + <panel.string name="bandwidth_tooltip">Bande passante</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">[AMT] L$</panel.string> <panel left="-405" name="balance_bg" width="195"> - <text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="20 L$"/> + <text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="L$ ??"/> <button label="Acheter L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$."/> <button label="Achats" name="goShop" tool_tip="Ouvrir la Place du marché Second Life." width="75"/> </panel> - <text name="TimeText" tool_tip="Heure actuelle (Pacifique)"> - 00h00 PST - </text> + <text name="TimeText" tool_tip="Heure actuelle (Pacifique)">00h00 PST</text> <button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)."/> <button name="volume_btn" tool_tip="Régler le volume global."/> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml index 502dc919b19ebd045b97b93dd16ae5e3c2b84225..ede5ec08afe5bdd22943619f3dda969fbef0a7db 100755 --- a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet."/> </panel> <check_box label="À vendre" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copier" name="Copy"/> + <combo_box.item label="Contenu" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Prix : L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml index 896dd932e38b4828a8c00c4587ccb91427f3490b..f6b4f2804678cd833d8d745a2ef7337a9b0bc60f 100755 --- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Profil de l'objet"> - <panel.string name="text deed continued"> - Céder - </panel.string> - <panel.string name="text deed"> - Céder - </panel.string> - <panel.string name="text modify info 1"> - Vous pouvez modifier cet objet - </panel.string> - <panel.string name="text modify info 2"> - Vous pouvez modifier ces objets - </panel.string> - <panel.string name="text modify info 3"> - Vous ne pouvez pas modifier cet objet - </panel.string> - <panel.string name="text modify info 4"> - Vous ne pouvez pas modifier ces objets - </panel.string> - <panel.string name="text modify info 5"> - Impossible de modifier cet objet au-delà de la frontière d'une région - </panel.string> - <panel.string name="text modify info 6"> - Impossible de modifier ces objets au-delà de la frontière d'une région - </panel.string> - <panel.string name="text modify warning"> - Cet objet comprend des parties liées - </panel.string> - <panel.string name="Cost Default"> - Prix : L$ - </panel.string> - <panel.string name="Cost Total"> - Prix total : L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Prix par : L$ - </panel.string> - <panel.string name="Cost Mixed"> - Prix mixte - </panel.string> - <panel.string name="Sale Mixed"> - Vente mixte - </panel.string> + <panel.string name="text deed continued">Céder</panel.string> + <panel.string name="text deed">Céder</panel.string> + <panel.string name="text modify info 1">Vous pouvez modifier cet objet</panel.string> + <panel.string name="text modify info 2">Vous pouvez modifier ces objets</panel.string> + <panel.string name="text modify info 3">Vous ne pouvez pas modifier cet objet</panel.string> + <panel.string name="text modify info 4">Vous ne pouvez pas modifier ces objets</panel.string> + <panel.string name="text modify info 5">Impossible de modifier cet objet au-delà de la frontière d'une région</panel.string> + <panel.string name="text modify info 6">Impossible de modifier ces objets au-delà de la frontière d'une région</panel.string> + <panel.string name="text modify warning">Cet objet comprend des parties liées</panel.string> + <panel.string name="Cost Default">Prix : L$</panel.string> + <panel.string name="Cost Total">Prix total : L$</panel.string> + <panel.string name="Cost Per Unit">Prix par : L$</panel.string> + <panel.string name="Cost Mixed">Prix mixte</panel.string> + <panel.string name="Sale Mixed">Vente mixte</panel.string> <text name="title" value="Profil de l'objet"/> <text name="where" value="(dans Second Life)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nom : - </text> - <text name="Description:"> - Description : - </text> - <text name="CreatorNameLabel"> - Créateur : - </text> - <text name="Owner:"> - Propriétaire : - </text> - <text name="Group_label"> - Groupe : - </text> + <text name="Name:">Nom :</text> + <text name="Description:">Description :</text> + <text name="CreatorNameLabel">Créateur :</text> + <text name="Owner:">Propriétaire :</text> + <text name="Group_label">Groupe :</text> <button name="button set group" tool_tip="Choisir un groupe pour partager les droits relatifs à cet objet"/> <name_box initial_value="Chargement…" name="Group Name Proxy"/> <button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les droits au prochain propriétaire. Seul un officier peut céder les objets partagés d'un groupe."/> - <text name="label click action"> - Cliquer pour : - </text> + <text name="label click action">Cliquer pour :</text> <combo_box name="clickaction"> <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/> <combo_box.item label="S'asseoir sur l'objet" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Vous pouvez modifier cet objet - </text> - <text name="Anyone can:"> - N'importe qui : - </text> + <text name="perm_modify">Vous pouvez modifier cet objet</text> + <text name="Anyone can:">N'importe qui :</text> <check_box label="Copier" name="checkbox allow everyone copy"/> <check_box label="Bouger" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Groupe : - </text> + <text name="GroupLabel">Groupe :</text> <check_box label="Partager" name="checkbox share with group" tool_tip="Autoriser tous les membres du groupe choisi à partager vos droits de modification pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Céder."/> - <text name="NextOwnerLabel"> - Le prochain propriétaire : - </text> + <text name="NextOwnerLabel">Le prochain propriétaire :</text> <check_box label="Modifier" name="checkbox next owner can modify"/> <check_box label="Copier" name="checkbox next owner can copy"/> <check_box label="Transférer" name="checkbox next owner can transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Prix : L$" name="Edit Cost"/> <check_box label="Afficher avec la recherche" name="search_check" tool_tip="Permettre aux autres résidents de voir cet objet dans les résultats de recherche"/> - <text name="pathfinding_attributes_label"> - Attributs de recherche de chemin : - </text> - <text name="B:"> - B : - </text> - <text name="O:"> - O : - </text> - <text name="G:"> - G : - </text> - <text name="E:"> - E : - </text> - <text name="N:"> - N : - </text> - <text name="F:"> - F : - </text> + <text name="pathfinding_attributes_label">Attributs de recherche de chemin :</text> + <text name="B:">B :</text> + <text name="O:">O :</text> + <text name="G:">G :</text> + <text name="E:">E :</text> + <text name="N:">N :</text> + <text name="F:">F :</text> </panel> <panel name="button_panel"> <button label="Ouvrir" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 8df13b2661625b27b99af3f553a464a82f88dbcd..e462b805e38631e7686cea9c0e694aff8dea990d 100755 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -454,28 +454,46 @@ Veuillez réessayer de vous connecter dans une minute. </string> <string name="TooltipPrice" value="[AMOUNT] L$ :"/> <string name="TooltipOutboxDragToWorld"> - Impossible de rezzer des articles dans la boîte d'envoi vendeur + Vous ne pouvez pas rezzer (charger) des articles du dossier Annonces de la Place de marché + </string> + <string name="TooltipOutboxWorn"> + Vous ne pouvez pas mettre d'articles que vous portez dans le dossier Annonces de la Place du marché + </string> + <string name="TooltipOutboxFolderLevels"> + Le niveau de dossiers imbriqués dépasse [AMOUNT]. Diminuez le nombre de niveaux de dossiers imbriqués dans d'autres dossiers. Si nécessaire, placez certains articles dans une boîte. + </string> + <string name="TooltipOutboxTooManyFolders"> + Le nombre de sous-dossiers dépasse [AMOUNT]. Diminuez le nombre de sous-dossiers dans votre annonce. Si nécessaire, placez certains articles dans une boîte. + </string> + <string name="TooltipOutboxTooManyObjects"> + Le nombre d'articles dépasse [AMOUNT]. Pour pouvoir vendre plus de [AMOUNT] articles au sein d'une même annonce, vous devez placer certains de ces articles dans une boîte. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Le nombre d'articles de stock dépasse [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Vous ne pouvez déposer des articles ou des dossiers que dans l'onglet TOUT. Veuillez activer cet onglet et déplacer à nouveau article(s) et dossier(s). </string> <string name="TooltipOutboxNoTransfer"> - Impossible de vendre ou de transférer un ou plusieurs de ces objets. + Impossible de vendre ou de transférer un ou plusieurs de ces objets </string> <string name="TooltipOutboxNotInInventory"> - La boîte d'envoi vendeur n'accepte que les articles directement issus de votre inventaire. + Vous ne pouvez mettre sur la Place du marché que des articles de votre inventaire </string> - <string name="TooltipOutboxWorn"> - Impossible de placer des articles que vous portez dans votre boîte d'envoi vendeur + <string name="TooltipOutboxLinked"> + Vous ne pouvez pas mettre des articles ou dossiers liés sur la Place du marché </string> <string name="TooltipOutboxCallingCard"> - Impossible de placer des cartes de visite dans votre boîte d'envoi vendeur + Vous ne pouvez pas mettre des cartes de visite sur la Place du marché </string> - <string name="TooltipOutboxFolderLevels"> - Il existe plus de 3 niveaux de dossiers imbriqués. + <string name="TooltipOutboxDragActive"> + vous ne pouvez pas déplacer une annonce publiée </string> - <string name="TooltipOutboxTooManyFolders"> - Le dossier de niveau supérieur contient plus de 20 sous-dossiers. + <string name="TooltipOutboxCannotMoveRoot"> + Vous ne pouvez pas déplacer le dossier racine des annonces de la Place du marché </string> - <string name="TooltipOutboxTooManyObjects"> - Le dossier de niveau supérieur contient plus de 200 articles. + <string name="TooltipOutboxMixedStock"> + tous les articles d'un dossier de stock doivent avoir le même type et droit </string> <string name="TooltipDragOntoOwnChild"> Impossible de déplacer un dossier vers son enfant @@ -1063,7 +1081,7 @@ Veuillez réessayer de vous connecter dans une minute. <string name="AgentNameSubst"> (Vous) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Supprimer les alertes lors de la gestion des listes d'accès aux domaines </string> @@ -1130,6 +1148,12 @@ Veuillez réessayer de vous connecter dans une minute. <string name="bitmap_image_files"> Images Bitmap </string> + <string name="png_image_files"> + Images PNG + </string> + <string name="save_texture_image_files"> + Images Targa ou PNG + </string> <string name="avi_movie_file"> Fichier de film AVI </string> @@ -1379,6 +1403,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="FavoritesNoMatchingItems"> Faites glisser un repère ici pour l'ajouter à vos Favoris. </string> + <string name="MarketplaceNoMatchingItems"> + Aucun article trouvé. Vérifiez l'orthographe de votre chaîne de recherche et réessayez. + </string> <string name="InventoryNoTexture"> Vous n'avez pas de copie de cette texture dans votre inventaire </string> @@ -1426,29 +1453,95 @@ Veuillez réessayer de vous connecter dans une minute. <string name="InventoryOutboxError"> La [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché] renvoie des erreurs. </string> + <string name="InventoryMarketplaceError"> + Cette fonctionnalité est en version bêta. Veuillez ajouter votre nom à ce [http://goo.gl/forms/FCQ7UXkakz formulaire Google] si vous souhaitez participer. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Votre dossier Annonces de la Place du marché est vide. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone. + </string> + <string name="Marketplace Validation Warning Stock"> + le dossier de stock doit être contenu dans un dossier de version + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Erreur : tous les articles d'un dossier de stock doivent être non reproductibles et de même type + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Erreur : un dossier de stock ne peut pas contenir de sous-dossiers + </string> + <string name="Marketplace Validation Warning Empty"> + : Avertissement : le dossier ne contient aucun article + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Avertissement : création du dossier de stock + </string> + <string name="Marketplace Validation Warning Create Version"> + : Avertissement : création du dossier de version + </string> + <string name="Marketplace Validation Warning Move"> + : Avertissement : déplacement d'articles + </string> + <string name="Marketplace Validation Warning Delete"> + : Avertissement : contenu du dossier transféré vers le dossier de stock, suppression du dossier vide + </string> + <string name="Marketplace Validation Error Stock Item"> + : Erreur : les articles non reproductibles doivent être contenus dans un dossier de stock + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Avertissement : les articles doivent être contenus dans un dossier de version + </string> + <string name="Marketplace Validation Error"> + : Erreur : + </string> + <string name="Marketplace Validation Warning"> + : Avertissement : + </string> + <string name="Marketplace Validation Error Empty Version"> + : Avertissement : le dossier de version doit contenir au moins 1 article + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Avertissement : le dossier de stock doit contenir au moins 1 article + </string> + <string name="Marketplace Validation No Error"> + Pas d'erreur ni d'avertissement à signaler + </string> <string name="Marketplace Error None"> Aucune erreur </string> + <string name="Marketplace Error Prefix"> + Erreur : + </string> <string name="Marketplace Error Not Merchant"> - Erreur : avant d'envoyer des articles vers la Place du marché, vous devez vous configurer comme vendeur (gratuit). + Avant d'envoyer des articles vers la Place du marché, vous devez vous configurer comme vendeur (gratuit). + </string> + <string name="Marketplace Error Not Accepted"> + Impossible de déplacer l'article dans ce dossier. </string> - <string name="Marketplace Error Empty Folder"> - Erreur : ce dossier est vide. + <string name="Marketplace Error Unsellable Item"> + Cet article ne peut pas être vendu sur la Place du marché. </string> - <string name="Marketplace Error Unassociated Products"> - Erreur : le chargement de cet article a échoué en raison d'un nombre trop important d'articles non associés à des produits au niveau de votre compte de vendeur. Pour résoudre ce problème, connectez-vous au site Web de la Place du marché et réduisez le nombre d'articles non associés. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Object Limit"> - Erreur : cet article contient trop d'objets. Pour résoudre le problème, regroupez des objets dans des paquets afin de réduire le nombre total à moins de 200. + <string name="MarketplaceLive"> + publié </string> - <string name="Marketplace Error Folder Depth"> - Erreur : trop de niveaux de dossiers imbriqués concernant cet article. Réorganisez le tout afin qu'un maximum de 3 niveaux soit utilisé. + <string name="MarketplaceActive"> + actif </string> - <string name="Marketplace Error Unsellable Item"> - Erreur : cet article ne peut pas être vendu sur la Place du marché. + <string name="MarketplaceMax"> + max. </string> - <string name="Marketplace Error Internal Import"> - Erreur : un problème est survenu concernant cet article. Veuillez réessayer ultérieurement. + <string name="MarketplaceStock"> + stock + </string> + <string name="MarketplaceNoStock"> + rupture de stock + </string> + <string name="MarketplaceUpdating"> + mise à jour... </string> <string name="Open landmarks"> Ouvrir les repères @@ -1469,6 +1562,7 @@ Veuillez réessayer de vous connecter dans une minute. Aucun contenu </string> <string name="WornOnAttachmentPoint" value=" (porté sur [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (actif)"/> <string name="PermYes"> Oui @@ -1739,6 +1833,15 @@ Veuillez réessayer de vous connecter dans une minute. <string name="Invalid Attachment"> Point d'attache non valide </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Erreur : article manquant + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Erreur : article de base manquant + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Erreur : l'objet est dans une tenue actuelle, mais il n'est pas attaché + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1874,9 +1977,6 @@ Veuillez réessayer de vous connecter dans une minute. <string name="CompileQueueUnknownFailure"> Échec du téléchargement, erreur inconnue </string> - <string name="CompileNoExperiencePerm"> - En train d'ignorer le script [SCRIPT] avec l'expérience [EXPERIENCE]. - </string> <string name="CompileQueueTitle"> Recompilation - progrès </string> @@ -1910,6 +2010,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="SaveComplete"> Enregistrement terminé. </string> + <string name="UploadFailed"> + Échec du chargement de fichier : + </string> <string name="ObjectOutOfRange"> Script (objet hors de portée) </string> @@ -1919,6 +2022,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="GroupsNone"> aucun </string> + <string name="CompileNoExperiencePerm"> + En train d'ignorer le script [SCRIPT] avec l'expérience [EXPERIENCE]. + </string> <string name="Group" value=" (groupe)"/> <string name="Unknown"> (Inconnu) @@ -5070,6 +5176,9 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="Command_Marketplace_Label"> Place du marché </string> + <string name="Command_MarketplaceListings_Label"> + Place du marché + </string> <string name="Command_MiniMap_Label"> Mini-carte </string> @@ -5157,6 +5266,9 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="Command_Marketplace_Tooltip"> Faire du shopping </string> + <string name="Command_MarketplaceListings_Tooltip"> + Vendez votre création + </string> <string name="Command_MiniMap_Tooltip"> Afficher les personnes près de vous </string> @@ -5268,6 +5380,18 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="UserDictionary"> [User] </string> + <string name="logging_calls_disabled_log_empty"> + Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences > Chat. + </string> + <string name="logging_calls_disabled_log_not_empty"> + Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences > Chat. + </string> + <string name="logging_calls_enabled_log_empty"> + Il n'y a aucune conversation enregistrée. Quand quelqu'un vous contacte ou quand vous contactez quelqu'un, une entrée de journal s'affiche ici. + </string> + <string name="loading_chat_logs"> + Chargement... + </string> <string name="experience_tools_experience"> Expérience </string> @@ -5349,16 +5473,4 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="ExperiencePermissionShort12"> Permission </string> - <string name="logging_calls_disabled_log_empty"> - Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences > Chat. - </string> - <string name="logging_calls_disabled_log_not_empty"> - Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences > Chat. - </string> - <string name="logging_calls_enabled_log_empty"> - Il n'y a aucune conversation enregistrée. Quand quelqu'un vous contacte ou quand vous contactez quelqu'un, une entrée de journal s'affiche ici. - </string> - <string name="loading_chat_logs"> - Chargement... - </string> </strings> diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index 6f09eca90c4eb09703fbc9a34967798a815707c5..f3b7effdaa9781aa8dd13988cbb68fcbda0e867b 100755 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -1,82 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="INFO [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Generato con [COMPILER] versione [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Tu sei a [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(coordinate globali [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Memoria: [MEMORY_MB] MB -Versione sistema operativo: [OS_VERSION] -Venditore scheda grafica: [GRAPHICS_CARD_VENDOR] -Scheda grafica: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Versione driver Windows per grafica: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Versione OpenGL: [OPENGL_VERSION] - -Versione libcurl: [LIBCURL_VERSION] -Versione J2C Decoder: [J2C_VERSION] -Versione Driver audio: [AUDIO_DRIVER_VERSION] -Versione Qt Webkit: [QT_WEBKIT_VERSION] -Versione Server voice: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (nessuno) - </floater.string> - <floater.string name="AboutTraffic"> - Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) Informazioni - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Errore nel recupero URL note rilascio versione - </floater.string> <tab_container name="about_tab"> <panel label="Informazioni" name="support_panel"> <button label="Copia negli appunti" name="copy_btn"/> </panel> <panel label="Ringraziamenti" name="credits_panel"> - <text name="linden_intro"> - Second Life vi è offerto dai Linden: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - con contributi open source da: - </text> - <text_editor name="contrib_names"> - Dummy Name sostituito all'avvio - </text_editor> - <text name="trans_intro"> - e le traduzioni da: - </text> - <text_editor name="trans_names"> - Dummy Name sostituito all'avvio - </text_editor> + <text name="linden_intro">Second Life vi è offerto dai Linden, +con contributi open source da:</text> + <text_editor name="contrib_names">Dummy Name sostituito all'avvio</text_editor> </panel> <panel label="Licenze" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. + FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm e Werner Lemberg. GL Copyright (C) 1999-2004 Brian Paul. - GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. + GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University e David Luebke, Brenden Schubert, University of Virginia. google-perftools Copyright (c) 2005, Google Inc. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) @@ -87,7 +29,7 @@ Versione Server voice: [VOICE_VERSION] SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + zlib Copyright (C) 1995-2012 Jean-loup Gailly e Mark Adler. Il Viewer Second Life utilizza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e licenziatari). Tutti i diritti riservati. Per informazioni dettagliate, vedere www.havok.com. @@ -95,8 +37,7 @@ Versione Server voice: [VOICE_VERSION] Tutti i diritti riservati. Per informazioni dettagliate, vedere licenses.txt. - Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_associate_listing.xml b/indra/newview/skins/default/xui/it/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d7e1f9d3b7a62ac5d9332db2a637fabd3f7bc23 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASSOCIA ANNUNCIO"> + <text name="message">ID annuncio:</text> + <line_editor name="listing_id">Digita qui l'ID</line_editor> + <button label="OK" name="OK"/> + <button label="Annulla" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/it/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..a395b247ed1e56168e1c81b2732a7c5b05573dfe --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="IMPOSTA ALTEZZA DI VOLO"> + <slider label="Altezza" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml index 7ed3486b9b67cea009a7b00f1d22fe476cef6dd2..8cf680b3f0010186a95a35cb9b8142f4d9d08745 100755 --- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="CARATTERISTICHE DELL'ARTICOLO IN INVENTARIO"> - <floater.string name="unknown"> - (sconosciuto) - </floater.string> - <floater.string name="public"> - (pubblico) - </floater.string> - <floater.string name="you_can"> - Tu puoi: - </floater.string> - <floater.string name="owner_can"> - Il proprietario può: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nome: - </text> - <text name="LabelItemDescTitle"> - Descrizione: - </text> - <text name="LabelCreatorTitle"> - Creatore: - </text> + <floater.string name="unknown">(sconosciuto)</floater.string> + <floater.string name="public">(pubblico)</floater.string> + <floater.string name="you_can">Tu puoi:</floater.string> + <floater.string name="owner_can">Il proprietario può:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nome:</text> + <text name="LabelItemDescTitle">Descrizione:</text> + <text name="LabelCreatorTitle">Creatore:</text> <button label="Profilo..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - proprietario: - </text> + <text name="LabelOwnerTitle">proprietario:</text> <button label="Profilo..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Acquisito: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Tu: - </text> + <text name="LabelAcquiredTitle">Acquisito:</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">Tu:</text> <check_box label="Modifica" name="CheckOwnerModify"/> <check_box label="Copiare" left_delta="88" name="CheckOwnerCopy"/> <check_box label="Rivendi" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Chiunque: - </text> + <text name="AnyoneLabel">Chiunque:</text> <check_box label="Copia" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppo: - </text> + <text name="GroupLabel">Gruppo:</text> <check_box label="Condividi" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="230"> - Proprietario successivo: - </text> + <text name="NextOwnerLabel" width="230">Proprietario successivo:</text> <check_box label="Modifica" name="CheckNextOwnerModify"/> <check_box label="Copiare" left_delta="88" name="CheckNextOwnerCopy"/> <check_box label="Rivendi" name="CheckNextOwnerTransfer"/> <check_box label="In vendita" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Contenuti" name="Contents"/> <combo_box.item label="Originale" name="Original"/> </combo_box> <spinner label="Prezzo:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_item_properties.xml b/indra/newview/skins/default/xui/it/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba57e27b45d8680c1975ee54a50eb700e75338df --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="CARATTERISTICHE DELL'ARTICOLO"/> diff --git a/indra/newview/skins/default/xui/it/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/it/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..bff5189ea4fd1872544cfeb09d91e74b2d0cf108 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="ANNUNCI NEL MARKETPLACE"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Caricamento in corso...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/it/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..45805a3232361433963ce0aaf1642d3c27c0e11d --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Verifica annunci Marketplace"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_openobject.xml b/indra/newview/skins/default/xui/it/floater_openobject.xml index 9b04c230c8e6aa84d670be898efcd4450a843ed7..0d313602b5401712306d8607e181ea7a9ca34614 100755 --- a/indra/newview/skins/default/xui/it/floater_openobject.xml +++ b/indra/newview/skins/default/xui/it/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copia nell'Inventario" label_selected="Copia nell'Inventario" name="copy_to_inventory_button"/> - <button label="Copia e aggiungi al vestiario" label_selected="Copia e aggiungi al vestiario" name="copy_and_wear_button"/> + <text name="border_note"> + Copia nell'inventario e indossa + </text> + <button label="Aggiungi al vestiario" label_selected="Aggiungi al vestiario" name="copy_and_wear_button"/> + <button label="Sostituisci vestiario" label_selected="Sostituisci vestiario" name="copy_and_replace_button"/> + <button label="Crea solo la copia nell'inventario" label_selected="Crea solo la copia nell'inventario" name="copy_to_inventory_button"/> + <button label="Annulla" label_selected="Annulla" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay.xml b/indra/newview/skins/default/xui/it/floater_pay.xml index 5753c8c765854bb27a1c882217f3e7b324239d24..ef24fc850d6c6e463269e75d4288d03c91d25a36 100755 --- a/indra/newview/skins/default/xui/it/floater_pay.xml +++ b/indra/newview/skins/default/xui/it/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Paga gruppo - </string> - <string name="payee_resident"> - Paga residente - </string> - <text left="5" name="payee_label" width="105"> - Paga: - </text> - <icon name="icon_person" tool_tip="Persona"/> - <text left="115" name="payee_name"> - Nome di test che è troppo lungo per controllare il taglio - </text> - <button label="1 L$" label_selected="1 L$" left="118" name="fastpay 1" width="80"/> - <button label="5 L$" label_selected="5 L$" left="210" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" left="118" name="fastpay 10" width="80"/> - <button label="20 L$" label_selected="20 L$" left="210" name="fastpay 20"/> - <text left="4" name="amount text"> - Oppure, scegli importo: - </text> - <line_editor left="70" name="amount" width="49"/> - <button label="Paga" label_selected="Paga" left="127" name="pay btn"/> - <button label="Annulla" label_selected="Annulla" left="210" name="cancel btn"/> + <string name="payee_group">Paga gruppo</string> + <string name="payee_resident">Paga residente</string> + <text name="paying_text">Stai pagando:</text> + <text left="115" name="payee_name">Nome di test che è troppo lungo per controllare il taglio</text> + <panel label="Cerca" name="PatternsPanel"> + <button label="Paga 1 L$" label_selected="Paga 1 L$" name="fastpay 1"/> + <button label="Paga 5 L$" label_selected="Paga 5 L$" name="fastpay 5"/> + <button label="Paga 10 L$" label_selected="Paga 10 L$" name="fastpay 10"/> + <button label="Paga 20 L$" label_selected="Paga 20 L$" name="fastpay 20"/> + </panel> + <panel label="Cerca" name="InputPanel"> + <text name="amount text">Altro importo:</text> + <button label="Paga" label_selected="Paga" name="pay btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_pay_object.xml b/indra/newview/skins/default/xui/it/floater_pay_object.xml index 8805f3208e726c88dbae5c5867e6738a9e4a350d..8e6fd37c2d68bbf419e48fec30134978aa2afd8c 100755 --- a/indra/newview/skins/default/xui/it/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/it/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string halign="left" name="payee_group" width="100"> - Paga gruppo - </string> - <string halign="left" name="payee_resident" width="120"> - Paga residente - </string> - <icon name="icon_person" tool_tip="Persona"/> - <text left="120" name="payee_name"> - Ericacita Moostopolison - </text> - <text halign="left" left="5" name="object_name_label" width="110"> - Mediante l'oggetto: - </text> + <string halign="left" name="payee_group" width="100">Paga gruppo</string> + <string halign="left" name="payee_resident" width="120">Paga residente</string> + <text name="paying_text">Stai pagando:</text> + <text left="120" name="payee_name">Ericacita Moostopolison</text> + <text halign="left" left="5" name="object_name_label" width="110">Mediante l'oggetto:</text> <icon name="icon_object" tool_tip="Oggetti"/> - <text left="120" name="object_name_text"> - Il mio oggetto con un nome veramente lungo - </text> - <button label="1 L$" label_selected="1 L$" left="125" name="fastpay 1" width="70"/> - <button label="5 L$" label_selected="5 L$" left="200" name="fastpay 5" width="70"/> - <button label="10 L$" label_selected="10 L$" left="125" name="fastpay 10" width="70"/> - <button label="20 L$" label_selected="20 L$" left="200" name="fastpay 20" width="70"/> - <text halign="left" left="5" name="amount text"> - Oppure, scegli importo: - </text> - <line_editor left="74" name="amount" width="50"/> - <button label="Paga" label_selected="Paga" name="pay btn"/> - <button label="Cancella" label_selected="Cancella" name="cancel btn"/> + <text left="120" name="object_name_text">Il mio oggetto con un nome veramente lungo</text> + <panel label="Cerca" name="PatternsPanel"> + <button label="Paga 1 L$" label_selected="Paga 1 L$" name="fastpay 1"/> + <button label="Paga 5 L$" label_selected="Paga 5 L$" name="fastpay 5"/> + <button label="Paga 10 L$" label_selected="Paga 10 L$" name="fastpay 10"/> + <button label="Paga 20 L$" label_selected="Paga 20 L$" name="fastpay 20"/> + </panel> + <panel label="Cerca" name="InputPanel"> + <text name="amount text">Altro importo:</text> + <button label="Paga" label_selected="Paga" name="pay btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml index b28137262fa27547e39e8d9c054fe7d20351f377..1539fbafa19a6c31148b4c4f389874d18f65f27b 100755 --- a/indra/newview/skins/default/xui/it/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Il mio aspetto" name="Change Outfit"/> <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/> <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/> + <menu_item_call label="Altezza di volo" name="Hover Height"/> <menu_item_call label="I miei amici..." name="Friends..."/> <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml index 36665710652ea73da387ce4eac2331e85acf23f5..0c9663fd4c6bbcf23944fabb261abca7b6c23363 100755 --- a/indra/newview/skins/default/xui/it/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Il mio aspetto" name="Chenge Outfit"/> <menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/> <menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/> + <menu_item_call label="Altezza di volo" name="Hover Height"/> <menu_item_call label="I miei amici..." name="Friends..."/> <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index c8042f4253a1e67304323e872bdf5e1584265417..2cd0d2c078eccd7935b30b2c933228e398eefdd4 100755 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Crea annuncio" name="Marketplace Create Listing"/> + <menu_item_call label="Associa annuncio" name="Marketplace Associate Listing"/> + <menu_item_call label="Visualizza (aggiorna) annuncio" name="Marketplace Get Listing"/> + <menu_item_call label="Controlla che non ci siano errori" name="Marketplace Check Listing"/> + <menu_item_call label="Modifica annuncio" name="Marketplace Edit Listing"/> + <menu_item_call label="Elenca" name="Marketplace List"/> + <menu_item_call label="Rimuovi annuncio" name="Marketplace Unlist"/> + <menu_item_call label="Attiva" name="Marketplace Activate"/> + <menu_item_call label="Disattiva" name="Marketplace Deactivate"/> <menu_item_call label="Condividi" name="Share"/> <menu_item_call label="Compra" name="Task Buy"/> <menu_item_call label="Apri" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Aggiungi" name="Wearable Add"/> <menu_item_call label="Togli" name="Take Off"/> <menu_item_call label="Copia nella casella venditore in uscita" name="Merchant Copy"/> - <menu_item_call label="Invia a Marketplace" name="Marketplace Send"/> + <menu_item_call label="Copia negli annunci Marketplace" name="Marketplace Copy"/> + <menu_item_call label="Sposta negli annunci Marketplace" name="Marketplace Move"/> <menu_item_call label="--nessuna opzione--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_marketplace_view.xml b/indra/newview/skins/default/xui/it/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..63f0b7fc5059eb0576978f3e6cf23257ac353ca3 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Ordina per quantità in magazzino (da bassa ad alta)" name="sort_by_stock_amount"/> + <menu_item_check label="Mostra solo cartelle annunci" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 275315b455c40bbdadc57efcfbfe58f7b464dcb6..3f4c370ccd200fd3eb4696ef4b045c43b1bcb5ef 100755 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="Acquista L$..." name="Buy and Sell L$"/> <menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/> + <menu_item_call label="Annunci Marketplace..." name="MarketplaceListings"/> <menu_item_call label="Dashboard dell'account..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/> </menu_item_call> @@ -250,6 +251,7 @@ <menu_item_check label="Console texture" name="Texture Console"/> <menu_item_check label="Console di Debug" name="Debug Console"/> <menu_item_call label="Console notifiche" name="Notifications"/> + <menu_item_check label="Console di debug regione" name="Region Debug Console"/> <menu_item_check label="Timer veloci" name="Fast Timers"/> <menu_item_check label="Memoria" name="Memory"/> <menu_item_check label="Statistiche scena" name="Scene Statistics"/> @@ -325,7 +327,7 @@ <menu label="Rete" name="Network"> <menu_item_check label="Metti in pausa" name="AgentPause"/> <menu_item_call label="Lascia un pacchetto" name="Drop a Packet"/> - </menu> + </menu> <menu label="Mondo" name="DevelopWorld"> <menu_item_check label="Esclusione al sole della simulazione" name="Sim Sun Override"/> <menu_item_check label="Clima fisso" name="Fixed Weather"/> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index fe53dd18ddac09737bf7a076dfdb3fa84cf8810b..06f2b70dcf2842fb343df8c5f88196067cdd2014 100755 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -129,6 +129,88 @@ Nessuna cartella è stata inviata a Marketplace, a causa di un errore di sistema L'inizializzazione con il Marketplace non ha avuto successo a causa di un errore di sistema o di rete. Riprova più tardi. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Impossibile copiare o spostare la cartella di magazzino a causa dell'errore seguente: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Impossibile copiare o spostare gli annunci Marketplace a causa dell'errore seguente: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + La transazione in Marketplace non è riuscita a causa dell'errore seguente: + + Motivo: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Non siamo in grado di creare un annuncio per questo prodotto o di attivare la cartella di versione. Di solito la causa è la mancanza di informazioni nel modulo di descrizione dell'annuncio, ma potrebbero esserci errori nella struttura delle cartelle. Modifica l'annuncio oppure verifica che non ci siano problemi legati alla cartella dell'annuncio. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Aggiunta annuncio a Marketplace non riuscita a causa dell'errore seguente: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + L'attivazione di questa cartella di versione non è riuscita a causa dell'errore: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Questa azione cambierà il contenuto attivo di questo annuncio. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di modificare un annuncio attivo su Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Gli articoli trascinati nella finestra degli annunci di Marketplace vengono spostati dalle posizioni iniziali e non vengono copiati. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di spostare un articolo dall'inventario a Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Se sposti o elimini la cartella dell'annuncio, l'annuncio su Marketplace verrà eliminato. Per mantenere l'annuncio su Marketplace, sposta o elimina i contenuti della cartella di versione da modificare. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di spostare o eliminare un annuncio da Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Non hai l'autorizzazione necessaria per copiare uno o più di questi articoli su Marketplace. Puoi spostarli o lasciarli dove si trovano. + <usetemplate canceltext="Annulla" ignoretext="Conferma prima di copiare nel Marketplace una selezione che contiene articoli per i quali non è consentita la copia" name="yesnocancelbuttons" notext="Non spostare gli articoli" yestext="Sposta articoli"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Questa azione causa la rimozione dell'annuncio. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di rimuovere un annuncio attivo da Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Questa azione disattiverà la cartella di versione per l'annuncio corrente. Vuoi continuare? + <usetemplate ignoretext="Conferma prima di disattivare la cartella di versione di un annuncio su Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Impossibile aggiornare l'annuncio. +[[URL] Fai clic qui] per modificarlo in Marketplace. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Non puoi indossare vestiario o parti del corpo che sono nella cartella degli annunci di Marketplace. + </notification> + <notification name="AlertMerchantListingInvalidID"> + ID annuncio non valido. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Ci sono svariate cartelle di versione oppure nessuna cartella di versione in questo annuncio. In seguito dovrai selezionarne e attivarne una separatamente. + <usetemplate ignoretext="Avvisa riguardo all'attivazione della cartella di versione quando creo un annuncio con varie cartelle di versione" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Abbiamo diviso gli articoli in magazzino di tipo diverso in cartelle di magazzino separate. In questo modo la tua cartella è ordinata per la pubblicazione nell'annuncio. + <usetemplate ignoretext="Avverti quando la cartella di magazzino viene suddivisa prima della pubblicazione dell'annuncio" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + L'annuncio è stato rimosso perché il magazzino è esaurito. Aggiungi altre unità alla cartella di magazzino prima di pubblicare nuovamente l'annuncio. + <usetemplate ignoretext="Avverti quando un annuncio viene rimosso perché la cartella di magazzino è vuota" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> C'è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi. </notification> @@ -470,6 +552,10 @@ Nota: questa operazione cancellerà la cache. Salva le modifiche? <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/> </notification> + <notification name="DeleteNotecard"> + Vuoi eliminare il biglietto? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Il salvataggio della Gesture è fallito. La gesture ha troppi passi. @@ -1872,6 +1958,9 @@ Cambierà migliaia di regioni e produrrà seri problemi ai vari server. La regione che cerchi di visitare include contenuti che non corripondono al livello selezionato nelle preferenze. Per cambiare le preferenze seleziona Io > Preferenze > Generale. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> La regione che cerchi di visitare include contenuti [REGIONMATURITY] accessibili solo ad adulti. <url name="url"> @@ -2161,6 +2250,10 @@ Trasferisci gli elementi nell'inventario? <ignore name="ignore" text="Ho impostato l'azione Paga oggetto costruendo un oggetto senza uno script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Conferma che desideri pagare [AMOUNT] L$ a [TARGET]. + <usetemplate ignoretext="Conferma prima di pagare (somme superiori a 200 L$)" name="okcancelignore" notext="Annulla" yestext="Paga"/> + </notification> <notification name="OpenObjectCannotCopy"> Non ci sono elementi in questo oggetto che tu possa copiare. </notification> @@ -3847,9 +3940,11 @@ Riprova tra un minuto. </notification> <notification name="TeleportedByAttachment"> Sei stato teletrasportato da un elemento collegato a [ITEM_ID] + <usetemplate ignoretext="Teleport: sei stato teleportato da un elemento accessorio" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Sei stato teleportato dall'oggetto '[OBJECT_NAME]' sul lotto '[PARCEL_NAME]' + <usetemplate ignoretext="Teleport: sei stato teleportato su un lotto da un oggetto" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Sei stato teleportato dall'oggetto '[OBJECT_NAME]' di proprietà di [OWNER_ID] @@ -4181,7 +4276,7 @@ Prova a selezionare un pezzo di terreno più piccolo. <usetemplate ignoretext="Impossibile spostare i file. Il percorso precedente è stato ripristinato." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Si è verificato un problema nel salvare i diritti predefiniti per il motivo seguente: [REASON]. Riprova più tardi. + Si è verificato un problema nel salvare le autorizzazioni predefinite dell'oggetto: [REASON]. Riprova più tardi. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml index 1ce38ac40c2d0eb9a5d5d00daab4e8bea833b055..6c1777163cd56f860498fd45fa99d27db64faf4b 100755 --- a/indra/newview/skins/default/xui/it/panel_login.xml +++ b/indra/newview/skins/default/xui/it/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=it - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=it</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nome utente" name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come roby12 o Stella Solare"/> <line_editor label="Password" name="password_edit"/> - <check_box label="Ricordami" name="remember_check"/> - <text name="forgot_password_text"> - Password dimenticata - </text> - <button label="Accedi" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - all'ultima ubicazione - </text> <combo_box label="I miei luoghi preferiti" name="start_location_combo"> + <combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/> <combo_box.item label="Casa mia" name="MyHome"/> </combo_box> - <button label="Accedi" name="connect_favorite_btn"/> - <line_editor label="Digita un'ubicazione" name="location_edit"/> - <button label="Accedi" name="connect_location_btn"/> + <button label="Accedi" name="connect_btn"/> + <check_box label="Ricordami" name="remember_check"/> + <text name="forgot_password_text">Password dimenticata</text> <combo_box label="Seleziona griglia" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..d28dfadf4560da1efcf5b0a419841b356493272d --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Visualizza/ordina opzioni"/> + <button name="add_btn" tool_tip="Crea una nuova cartella annunci"/> + <button label="Controlla che non ci siano errori" name="audit_btn" tool_tip="Controlla i tuoi annunci su Marketplace"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtra annunci Marketplace" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..4902442d2b0baa061c1b890c37cafcf18e262e2b --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TUTTO" name="All Items" tool_tip="Trascina e rilascia qui gli articoli da elencare"/> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..3fb0d5645c8166ba0e5311cb229084fb29cc93eb --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="IN ELENCO" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac6b2952fc8e57c4e8b84fbe63c4e916219aced1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NON ASSOCIATO" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/it/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c9fae7ddca2688b8193524501e80fe21dc970cc --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="RIMOSSI" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index 0aaf89d8c89d8788645d40ddb59183d925bb41b2..83d2ae5babfe68e07d5ae7bbd48ebc83c7fc1eb7 100755 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Perdita di pacchetti - </panel.string> - <panel.string name="bandwidth_tooltip"> - Larghezza di banda - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Perdita di pacchetti</panel.string> + <panel.string name="bandwidth_tooltip">Larghezza di banda</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-405" name="balance_bg" width="195"> - <text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ 20"/> + <text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ ??"/> <button label="Acquista L$" name="buyL" tool_tip="Clicca per acquistare più L$"/> <button label="Acquisti" name="goShop" tool_tip="Apri Mercato Second Life" width="75"/> </panel> - <text name="TimeText" tool_tip="Orario attuale (Pacifico)"> - 24:00, ora del Pacifico - </text> + <text name="TimeText" tool_tip="Orario attuale (Pacifico)">24:00, ora del Pacifico</text> <button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/> <button name="volume_btn" tool_tip="Regolazione del volume globale"/> </panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml index 422f15e3cfdc879494ee75bc656255a49ac5889e..14c1c43816115e387b49cbb256f80981cb0d4be1 100755 --- a/indra/newview/skins/default/xui/it/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Trasferisci" name="CheckNextOwnerTransfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/> </panel> <check_box label="In vendita" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Contenuti" name="Contents"/> <combo_box.item label="Originale" name="Original"/> </combo_box> <spinner label="Prezzo: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml index 5f912dd126e3e92511ca5ec0ddb9994542825c6d..aabefd7d3c97bbe4ce31e7a267cecddc6ec60204 100755 --- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Profilo dell'oggetto"> - <panel.string name="text deed continued"> - Cessione - </panel.string> - <panel.string name="text deed"> - Cessione - </panel.string> - <panel.string name="text modify info 1"> - Tu puoi modificare questo oggetto - </panel.string> - <panel.string name="text modify info 2"> - Tu puoi modificare questi oggetti - </panel.string> - <panel.string name="text modify info 3"> - Non puoi modificare questo oggetto - </panel.string> - <panel.string name="text modify info 4"> - Non puoi modificare questi oggetti - </panel.string> - <panel.string name="text modify info 5"> - Questo oggetto non può essere modificato attraverso il confine di una regione - </panel.string> - <panel.string name="text modify info 6"> - Questi oggetti non possono essere modificati attraverso il confine di una regione - </panel.string> - <panel.string name="text modify warning"> - Questo oggetto ha parti collegate - </panel.string> - <panel.string name="Cost Default"> - Prezzo: L$ - </panel.string> - <panel.string name="Cost Total"> - Prezzo totale: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Prezzo per: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Prezzo misto - </panel.string> - <panel.string name="Sale Mixed"> - Vendita mista - </panel.string> + <panel.string name="text deed continued">Cessione</panel.string> + <panel.string name="text deed">Cessione</panel.string> + <panel.string name="text modify info 1">Tu puoi modificare questo oggetto</panel.string> + <panel.string name="text modify info 2">Tu puoi modificare questi oggetti</panel.string> + <panel.string name="text modify info 3">Non puoi modificare questo oggetto</panel.string> + <panel.string name="text modify info 4">Non puoi modificare questi oggetti</panel.string> + <panel.string name="text modify info 5">Questo oggetto non può essere modificato attraverso il confine di una regione</panel.string> + <panel.string name="text modify info 6">Questi oggetti non possono essere modificati attraverso il confine di una regione</panel.string> + <panel.string name="text modify warning">Questo oggetto ha parti collegate</panel.string> + <panel.string name="Cost Default">Prezzo: L$</panel.string> + <panel.string name="Cost Total">Prezzo totale: L$</panel.string> + <panel.string name="Cost Per Unit">Prezzo per: L$</panel.string> + <panel.string name="Cost Mixed">Prezzo misto</panel.string> + <panel.string name="Sale Mixed">Vendita mista</panel.string> <text name="title" value="Profilo dell'oggetto"/> <text name="where" value="(in Second Life)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nome: - </text> - <text name="Description:"> - Descrizione: - </text> - <text name="CreatorNameLabel"> - Ideatore: - </text> - <text name="Owner:"> - Proprietario: - </text> - <text name="Group_label"> - Gruppo: - </text> + <text name="Name:">Nome:</text> + <text name="Description:">Descrizione:</text> + <text name="CreatorNameLabel">Ideatore:</text> + <text name="Owner:">Proprietario:</text> + <text name="Group_label">Gruppo:</text> <button name="button set group" tool_tip="Scegli un gruppo con cui condividere i diritti relativi all'oggetto"/> <name_box initial_value="Caricamento in corso..." name="Group Name Proxy"/> <button label="Cessione" label_selected="Cessione" name="button deed" tool_tip="Con una cessione si trasferisce il bene con i diritti al proprietario successivo Gli oggetti in proprietà condivisa di gruppo possono essere ceduti soltanto da un funzionario del gruppo."/> - <text name="label click action"> - Fai clic per: - </text> + <text name="label click action">Fai clic per:</text> <combo_box name="clickaction"> <combo_box.item label="Tocca (predefinito)" name="Touch/grab(default)"/> <combo_box.item label="Siediti sull'oggetto" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Ingrandisci" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Tu puoi modificare questo oggetto - </text> - <text name="Anyone can:"> - Chiunque: - </text> + <text name="perm_modify">Tu puoi modificare questo oggetto</text> + <text name="Anyone can:">Chiunque:</text> <check_box label="Copia" name="checkbox allow everyone copy"/> <check_box label="Sposta" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Gruppo: - </text> + <text name="GroupLabel">Gruppo:</text> <check_box label="Condividi" name="checkbox share with group" tool_tip="Consenti a tutti i membri del gruppo selezionato di condividere i tuoi diritti di modifica di questo oggetto. Per attivare le restrizioni per ruolo devi prima effettuare la cessione."/> - <text name="NextOwnerLabel"> - Proprietario successivo: - </text> + <text name="NextOwnerLabel">Proprietario successivo:</text> <check_box label="Modifica" name="checkbox next owner can modify"/> <check_box label="Copia" name="checkbox next owner can copy"/> <check_box label="Trasferisci" name="checkbox next owner can transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Prezzo: L$" name="Edit Cost"/> <check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti alle persone di vedere questo oggetto nei risultati della ricerca"/> - <text name="pathfinding_attributes_label"> - Attributi pathfinding: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Attributi pathfinding:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Apri" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 25c784975ee0184125996ca1e8af90ac1e9e40c2..b9a87a1527ea766e797b271cdb72ac30e25b4f81 100755 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -451,28 +451,46 @@ Prova ad accedere nuovamente tra un minuto. </string> <string name="TooltipPrice" value="L$ [AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - Non puoi rezzare elementi nella tua casella in uscita del rivenditore + Non puoi rezzare articoli dalla cartella degli annunci di Marketplace + </string> + <string name="TooltipOutboxWorn"> + Non puoi inserire nella cartella degli annunci in Marketplace gli articoli che indossi + </string> + <string name="TooltipOutboxFolderLevels"> + La profondità delle caselle nidificate è maggiore di [AMOUNT]. Diminuisci la profondità delle cartelle nidificate; se necessario, raggruppa gli articoli. + </string> + <string name="TooltipOutboxTooManyFolders"> + Il numero di sottocartelle è maggiore di [AMOUNT]. Diminuisci il numero delle cartelle nel tuo annuncio; se necessario, raggruppa gli articoli. + </string> + <string name="TooltipOutboxTooManyObjects"> + Il numero di articoli è maggiore di [AMOUNT]. Per vendere più di [AMOUNT] articoli in un annuncio, devi raggruppare alcuni di essi. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Il numero di articoli in magazzino è maggiore di [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Puoi trascinare articoli o cartelle solo nella scheda TUTTI. Seleziona la scheda e sposta nuovamente gli articoli o le cartelle. </string> <string name="TooltipOutboxNoTransfer"> - Almeno uno di questi oggetti non può essere venduto o trasferito. + Almeno uno di questi oggetti non può essere venduto o trasferito </string> <string name="TooltipOutboxNotInInventory"> - La tua casella in uscita del rivenditore può accettare solo elementi provenienti dal tuo inventario + Puoi aggiungere a Marketplace solo gli articoli nel tuo inventario </string> - <string name="TooltipOutboxWorn"> - Non puoi mettere gli elementi che indossi nella casella in uscita del rivenditore + <string name="TooltipOutboxLinked"> + Non puoi inserire cartelle o articoli collegati tramite link nel Marketplace </string> <string name="TooltipOutboxCallingCard"> - Non puoi inserire il tuo biglietto da visita nella tua casella in uscita del rivenditore + Non puoi inserire biglietti da visita in Marketplace </string> - <string name="TooltipOutboxFolderLevels"> - La profondità delle caselle nidificate è maggiore di 3 + <string name="TooltipOutboxDragActive"> + non puoi muovere un annuncio attivo </string> - <string name="TooltipOutboxTooManyFolders"> - Il numero di sottocartelle nella cartella al livello più alto è maggiore di 20 + <string name="TooltipOutboxCannotMoveRoot"> + Non puoi spostare la cartella principale degli annunci di Marketplace </string> - <string name="TooltipOutboxTooManyObjects"> - Il numero di elementi nella cartella al livello più alto è maggiore di 200 + <string name="TooltipOutboxMixedStock"> + Tutti gli articoli in una cartella di magazzino devono essere dello stesso tipo e con le stesse autorizzazioni </string> <string name="TooltipDragOntoOwnChild"> Non puoi spostare una cartella nella relativa cartella secondaria @@ -1054,7 +1072,7 @@ Prova ad accedere nuovamente tra un minuto. <string name="AgentNameSubst"> (Tu) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Omette gli avvisi durante la gestione degli elenchi di accesso alle proprietà immobiliari </string> @@ -1121,6 +1139,12 @@ Prova ad accedere nuovamente tra un minuto. <string name="bitmap_image_files"> Immagini Bitmap </string> + <string name="png_image_files"> + Immagini PNG + </string> + <string name="save_texture_image_files"> + Immagini Targa o PNG + </string> <string name="avi_movie_file"> File video AVI </string> @@ -1370,6 +1394,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="FavoritesNoMatchingItems"> Trascina qui un punto di riferimento per aggiungerlo ai Preferiti. </string> + <string name="MarketplaceNoMatchingItems"> + Nessun articolo trovato. Controlla di aver digitato la stringa di ricerca correttamente e riprova. + </string> <string name="InventoryNoTexture"> Non hai una copia di questa texture nel tuo inventario </string> @@ -1417,29 +1444,95 @@ Prova ad accedere nuovamente tra un minuto. <string name="InventoryOutboxError"> Il [[MARKETPLACE_CREATE_STORE_URL] negozio nel Marketplace] ha riportato errori. </string> + <string name="InventoryMarketplaceError"> + Questa funzione è al momento in versione beta. Per partecipare, aggiungi il tuo nome a questo [http://goo.gl/forms/FCQ7UXkakz modulo Google]. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + La cartella degli annunci di Marketplace è vuota. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Trascina le cartelle in questa area per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace]. + </string> + <string name="Marketplace Validation Warning Stock"> + la cartella di magazzino deve essere inclusa in una cartella di versione + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Errore: tutti gli articoli un una cartella di magazzino devono essere non copiabili e dello stesso tipo + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Errore: la cartella di magazzino non può contenere sottocartelle + </string> + <string name="Marketplace Validation Warning Empty"> + : Avviso: la cartella non contiene alcun articolo + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Avviso: creazione cartella di magazzino in corso + </string> + <string name="Marketplace Validation Warning Create Version"> + : Avviso: creazione cartella di versione in corso + </string> + <string name="Marketplace Validation Warning Move"> + : Avviso: spostamento articoli in corso + </string> + <string name="Marketplace Validation Warning Delete"> + : Avviso: il contenuto della cartella è stato trasferito alla cartella di magazzino e la cartella vuota sta per essere rimossa + </string> + <string name="Marketplace Validation Error Stock Item"> + : Errore: gli articoli di cui non è permessa la copia devono essere all'interno di una cartella di magazzino + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Avviso: gli articoli devono essere inclusi in una cartella di versione + </string> + <string name="Marketplace Validation Error"> + : Errore: + </string> + <string name="Marketplace Validation Warning"> + : Avviso: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Avviso: la cartella di versione deve contenere almeno 1 articolo + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Avviso: la cartella di magazzino deve contenere almeno 1 articolo + </string> + <string name="Marketplace Validation No Error"> + Nessun errore o avviso da segnalare + </string> <string name="Marketplace Error None"> Nessun errore </string> + <string name="Marketplace Error Prefix"> + Errore: + </string> <string name="Marketplace Error Not Merchant"> - Errore: Prima di inviare elementi al Marketplace devi essere impostato come rivenditore (gratis). + Prima di inviare gli articoli al Marketplace devi essere impostato come rivenditore (gratis). + </string> + <string name="Marketplace Error Not Accepted"> + L'articolo non può essere spostato in quella cartella. </string> - <string name="Marketplace Error Empty Folder"> - Errore: questa cartella non include alcun contenuto. + <string name="Marketplace Error Unsellable Item"> + Questo articolo non può essere venduto nel Marketplace. </string> - <string name="Marketplace Error Unassociated Products"> - Errore: Oggetto non caricato perché il tuo account venditore ha troppi oggetti che non sono associati con dei prodotti. Per risolvere questo errore, esegui l'accesso al sito di Marketplace e riduci il numero di oggetti non associati. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Object Limit"> - Errore: questo elemento contiene troppi oggetti. Per risolvere questo problema, inserisci più oggetti insieme in una scatola per ridurre a meno di 200 il numero totale di oggetti. + <string name="MarketplaceLive"> + in elenco </string> - <string name="Marketplace Error Folder Depth"> - Errore: questo elemento contiene troppi livelli di cartelle nidificate. Riorganizzalo per ottenere un massimo di 3 livelli di cartelle nidificate. + <string name="MarketplaceActive"> + attivi </string> - <string name="Marketplace Error Unsellable Item"> - Errore: Questo elemento non può essere venduto nel Marketplace. + <string name="MarketplaceMax"> + massimo </string> - <string name="Marketplace Error Internal Import"> - Errore: problema con questo elemento. Riprova più tardi. + <string name="MarketplaceStock"> + magazzino + </string> + <string name="MarketplaceNoStock"> + non in magazzino + </string> + <string name="MarketplaceUpdating"> + in aggiornamento... </string> <string name="Open landmarks"> Apri luoghi di riferimento @@ -1460,6 +1553,7 @@ Prova ad accedere nuovamente tra un minuto. Nessun contenuto </string> <string name="WornOnAttachmentPoint" value="(indossato su [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (attivo)"/> <string name="Chat Message" value="Chat:"/> <string name="Sound" value="Suono :"/> @@ -1724,6 +1818,15 @@ Prova ad accedere nuovamente tra un minuto. <string name="Invalid Attachment"> Punto di collegamento non valido </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Errore: articolo mancante + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Errore: articolo di base mancante + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Errore: l'oggetto è nel vestiario corrente ma non è collegato + </string> <string name="YearsMonthsOld"> Nato da [AGEYEARS] [AGEMONTHS] </string> @@ -1859,9 +1962,6 @@ Prova ad accedere nuovamente tra un minuto. <string name="CompileQueueUnknownFailure"> Errore di dowload sconosciuto </string> - <string name="CompileNoExperiencePerm"> - Saltato lo script [SCRIPT] con l'esperienza [EXPERIENCE]. - </string> <string name="CompileQueueTitle"> Avanzamento ricompilazione </string> @@ -1895,6 +1995,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="SaveComplete"> Salvataggio completato. </string> + <string name="UploadFailed"> + Caricamento file non riuscito: + </string> <string name="ObjectOutOfRange"> Script (oggetto fuori portata) </string> @@ -1904,6 +2007,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="GroupsNone"> nessuno </string> + <string name="CompileNoExperiencePerm"> + Saltato lo script [SCRIPT] con l'esperienza [EXPERIENCE]. + </string> <string name="Group" value="(gruppo)"/> <string name="Unknown"> (Sconosciuto) @@ -4983,6 +5089,9 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="Command_Marketplace_Label"> Mercato </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> <string name="Command_MiniMap_Label"> Mini mappa </string> @@ -5070,6 +5179,9 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="Command_Marketplace_Tooltip"> Vai allo shopping </string> + <string name="Command_MarketplaceListings_Tooltip"> + Vendi le tue creazioni + </string> <string name="Command_MiniMap_Tooltip"> Mostra le persone vicine </string> @@ -5181,6 +5293,18 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="UserDictionary"> [User] </string> + <string name="logging_calls_disabled_log_empty"> + Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona "Salva: Solo registro" oppure "Salva: Registri e trascrizioni" in Preferenze > Chat. + </string> + <string name="logging_calls_disabled_log_not_empty"> + Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona "Salva: Solo registro" oppure "Salva: Registri e trascrizioni" in Preferenze > Chat. + </string> + <string name="logging_calls_enabled_log_empty"> + Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui. + </string> + <string name="loading_chat_logs"> + Caricamento in corso... + </string> <string name="experience_tools_experience"> Esperienza </string> @@ -5262,16 +5386,4 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="ExperiencePermissionShort12"> Autorizzazione </string> - <string name="logging_calls_disabled_log_empty"> - Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona "Salva: Solo registro" oppure "Salva: Registri e trascrizioni" in Preferenze > Chat. - </string> - <string name="logging_calls_disabled_log_not_empty"> - Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona "Salva: Solo registro" oppure "Salva: Registri e trascrizioni" in Preferenze > Chat. - </string> - <string name="logging_calls_enabled_log_empty"> - Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui. - </string> - <string name="loading_chat_logs"> - Caricamento in corso... - </string> </strings> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index 63a4e69c102a7dfa4a0fa7fbd8bd2e98556b0ea5..91a61ab2256ff38375f1c93a92c8e472e7cf23d1 100755 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -1,74 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="[CAPITALIZED_APP_NAME] ã«ã¤ã„ã¦"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - コンパイラー [COMPILER] [COMPILER_VERSION] ãƒãƒ¼ã‚¸ãƒ§ãƒ³ - </floater.string> - <floater.string name="AboutPosition"> - ã‚ãªãŸã®ç¾åœ¨åœ°ã¯ã€[POSITION_LOCAL_0,number,1]ã€[POSITION_LOCAL_1,number,1]ã€[POSITION_LOCAL_2,number,1] ã® [REGION] ã§ã™ã€‚ä½ç½®ã¯ <nolink>[HOSTNAME]</nolink> ã§ã™ã€‚([HOSTIP]) -SLURL:<nolink>[SLURL]</nolink> -(ã‚°ãƒãƒ¼ãƒãƒ«åº§æ¨™ [POSITION_0,number,1]ã€[POSITION_1,number,1]ã€[POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -メモリ: [MEMORY_MB] MB -OS ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [OS_VERSION] -ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ã‚«ãƒ¼ãƒ‰è£½é€ å…ƒï¼š [GRAPHICS_CARD_VENDOR] -グラフィックカード: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows グラフィックドライãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [OPENGL_VERSION] - -libcurl ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [LIBCURL_VERSION] -J2C デコーダãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [J2C_VERSION] -オーディオドライãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [AUDIO_DRIVER_VERSION] -Qt Webkit ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [QT_WEBKIT_VERSION] -ボイスサーãƒãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (ãªã—) - </floater.string> - <floater.string name="AboutTraffic"> - パケットãƒã‚¹ï¼š [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - サーãƒãƒ¼ã®ãƒªãƒªãƒ¼ã‚¹ãƒŽãƒ¼ãƒˆã® URL ã‚’å–å¾—ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ - </floater.string> <tab_container name="about_tab"> <panel label="æƒ…å ±" name="support_panel"> <button label="クリップボードã«ã‚³ãƒ”ー" name="copy_btn"/> </panel> <panel label="クレジット" name="credits_panel"> - <text name="linden_intro"> - Second Life ã®æ供元: Lindens ã®ï¼š - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - オープンソースã®æ供: - </text> - <text_editor name="contrib_names"> - Dummy Name ã¯å®Ÿè¡Œæ™‚é–“ã«ç½®ãæ›ãˆ - </text_editor> - <text name="trans_intro"> - 翻訳会社: - </text> - <text_editor name="trans_names"> - Dummy Name ã¯å®Ÿè¡Œæ™‚é–“ã«ç½®ãæ›ãˆ - </text_editor> + <text name="linden_intro">Second Life ã®æ供元: Lindens ã®ã€ +オープンソースã®æ供:</text> + <text_editor name="contrib_names">Dummy Name ã¯å®Ÿè¡Œæ™‚é–“ã«ç½®ãæ›ãˆ</text_editor> </panel> <panel label="ライセンス" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -95,8 +37,7 @@ Second Life ビューワã§ã¯ Havok (TM) Physics ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚ ç„¡æ–複写・複製・転載をç¦ã˜ã¾ã™ã€‚詳細ã«ã¤ã„ã¦ã¯ licenses.txt ã‚’ã”å‚ç…§ãã ã•ã„。 -ボイスãƒãƒ£ãƒƒãƒˆã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ï¼šPolycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C) - </text_editor> +ボイスãƒãƒ£ãƒƒãƒˆã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ï¼šPolycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_associate_listing.xml b/indra/newview/skins/default/xui/ja/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b106750a6f677895f040adabe2b3afe0bb9ace0a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="リストを関連付ã‘ã‚‹"> + <text name="message">リスト ID:</text> + <line_editor name="listing_id">ã“ã“ã« ID を入力</line_editor> + <button label="OK" name="OK"/> + <button label="å–り消ã—" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/ja/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac5b2839d17f489cf1b1ed83570de5adbf7f9cf0 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="ホãƒãƒ¼é«˜ã•ã®è¨å®š"> + <slider label="高ã•" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml index c01c46211ec323c51780c404f5c9e2f1c96e60ed..8d3a655a06ce7296802b8c8f5e268df042894d61 100755 --- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="インベントリアイテムã®ãƒ—ãƒãƒ‘ティ"> - <floater.string name="unknown"> - (ä¸æ˜Žï¼‰ - </floater.string> - <floater.string name="public"> - (公共) - </floater.string> - <floater.string name="you_can"> - ã§ãã‚‹ã“ã¨ï¼š - </floater.string> - <floater.string name="owner_can"> - オーナーã¯æ¬¡ã®ã“ã¨ãŒã§ãã¾ã™ï¼š - </floater.string> - <floater.string name="acquiredDate"> - [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - åå‰ï¼š - </text> - <text name="LabelItemDescTitle"> - 説明: - </text> - <text name="LabelCreatorTitle"> - クリエーター - </text> + <floater.string name="unknown">(ä¸æ˜Žï¼‰</floater.string> + <floater.string name="public">(公共)</floater.string> + <floater.string name="you_can">ã§ãã‚‹ã“ã¨ï¼š</floater.string> + <floater.string name="owner_can">オーナーã¯æ¬¡ã®ã“ã¨ãŒã§ãã¾ã™ï¼š</floater.string> + <floater.string name="acquiredDate">[year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]</floater.string> + <text name="LabelItemNameTitle">åå‰ï¼š</text> + <text name="LabelItemDescTitle">説明:</text> + <text name="LabelCreatorTitle">クリエーター</text> <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - オーナー: - </text> + <text name="LabelOwnerTitle">オーナー:</text> <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - 入手日時: - </text> - <text name="LabelAcquiredDate"> - 2006å¹´5月24日水曜日12:50:46 - </text> - <text name="OwnerLabel"> - ã‚ãªãŸï¼š - </text> + <text name="LabelAcquiredTitle">入手日時:</text> + <text name="LabelAcquiredDate">2006å¹´5月24日水曜日12:50:46</text> + <text name="OwnerLabel">ã‚ãªãŸï¼š</text> <check_box label="編集" name="CheckOwnerModify"/> <check_box label="コピー" name="CheckOwnerCopy"/> <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - 全員: - </text> + <text name="AnyoneLabel">全員:</text> <check_box label="コピー" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - グループ: - </text> + <text name="GroupLabel">グループ:</text> <check_box label="共有" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="158"> - 次ã®æ‰€æœ‰è€…: - </text> + <text name="NextOwnerLabel" width="158">次ã®æ‰€æœ‰è€…:</text> <check_box label="編集" name="CheckNextOwnerModify"/> <check_box label="コピー" name="CheckNextOwnerCopy"/> <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckNextOwnerTransfer"/> <check_box label="売り出ã—ä¸" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="コピー" name="Copy"/> + <combo_box.item label="コンテンツ" name="Contents"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> <spinner label="ä¾¡æ ¼ï¼š" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..c8648503d7bad87b5c8797bed20c185406f62b9a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="アイテムã®ãƒ—ãƒãƒ‘ティ"/> diff --git a/indra/newview/skins/default/xui/ja/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/ja/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6b8e2928e2dc30d505c75617e19878acaa29878 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="マーケットプレイスã®ãƒªã‚¹ãƒˆ"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">ãƒãƒ¼ãƒ‰ä¸...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/ja/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..164864ed4ea256a97cebc6c875196cc16ac84b75 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="マーケットプレイスã®ãƒªã‚¹ãƒˆã®ç›£æŸ»"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_openobject.xml b/indra/newview/skins/default/xui/ja/floater_openobject.xml index 7bdd1e498037ebcf2ffd395a6c97938630685411..3f2f71511b903393c1244ece979be6358e1d0244 100755 --- a/indra/newview/skins/default/xui/ja/floater_openobject.xml +++ b/indra/newview/skins/default/xui/ja/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="æŒã¡ç‰©ã«ã‚³ãƒ”ー" label_selected="æŒã¡ç‰©ã«ã‚³ãƒ”ー" name="copy_to_inventory_button"/> - <button label="コピーã—ã¦ã‚¢ã‚¦ãƒˆãƒ•ã‚£ãƒƒãƒˆã«è¿½åŠ " label_selected="コピーã—ã¦ã‚¢ã‚¦ãƒˆãƒ•ã‚£ãƒƒãƒˆã«è¿½åŠ " name="copy_and_wear_button"/> + <text name="border_note"> + インベントリãŠã‚ˆã³ã‚¦ã‚§ã‚¢ã«ã‚³ãƒ”ー + </text> + <button label="アウトフィットã«è¿½åŠ " label_selected="アウトフィットã«è¿½åŠ " name="copy_and_wear_button"/> + <button label="アウトフィットを交æ›" label_selected="アウトフィットを交æ›" name="copy_and_replace_button"/> + <button label="インベントリã«ã‚³ãƒ”ーã™ã‚‹ã ã‘" label_selected="インベントリã«ã‚³ãƒ”ーã™ã‚‹ã ã‘" name="copy_to_inventory_button"/> + <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_pay.xml b/indra/newview/skins/default/xui/ja/floater_pay.xml index 17965fb60a444b69360c36339d1fdbf3bbe63d18..0ca0990bd43fe24a0e1f2dc48cbcacce65cb34ad 100755 --- a/indra/newview/skins/default/xui/ja/floater_pay.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay.xml @@ -1,25 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - グループã«æ”¯æ‰•ã† - </string> - <string name="payee_resident"> - ä½äººã«æ”¯æ‰•ã† - </string> - <text name="payee_label"> - 支払ã†ï¼š - </text> - <icon name="icon_person" tool_tip="ä½äºº"/> - <text name="payee_name"> - éžå¸¸ã«é•·ã„åå‰ãŒé€”ä¸ã§åˆ‡ã‚Œã¦ã„ãªã„ã‹ã‚’テストã—ã¦ç¢ºèª - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 金é¡ã‚’指定: - </text> - <button label="支払ã†" label_selected="支払ã†" name="pay btn"/> - <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel btn"/> + <string name="payee_group">グループã«æ”¯æ‰•ã†</string> + <string name="payee_resident">ä½äººã«æ”¯æ‰•ã†</string> + <text name="paying_text">支払ä¸:</text> + <text name="payee_name">éžå¸¸ã«é•·ã„åå‰ãŒé€”ä¸ã§åˆ‡ã‚Œã¦ã„ãªã„ã‹ã‚’テストã—ã¦ç¢ºèª</text> + <panel label="検索" name="PatternsPanel"> + <button label="L$ 1 支払ã†" label_selected="L$ 1 支払ã†" name="fastpay 1"/> + <button label="L$ 5 支払ã†" label_selected="L$ 5 支払ã†" name="fastpay 5"/> + <button label="L$ 10 支払ã†" label_selected="L$ 10 支払ã†" name="fastpay 10"/> + <button label="L$ 20 支払ã†" label_selected="L$ 20 支払ã†" name="fastpay 20"/> + </panel> + <panel label="検索" name="InputPanel"> + <text name="amount text">ãã®ä»–ã®é‡‘é¡:</text> + <button label="支払ã„" label_selected="支払ã„" name="pay btn"/> + <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_pay_object.xml b/indra/newview/skins/default/xui/ja/floater_pay_object.xml index 637ad496efab8d712e9a32e44caea39e3853dd5c..3331cee0e0e32a42cdee518f78aea11f42c32609 100755 --- a/indra/newview/skins/default/xui/ja/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay_object.xml @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - グループã«æ”¯æ‰•ã† - </string> - <string name="payee_resident"> - ä½äººã«æ”¯æ‰•ã† - </string> - <icon name="icon_person" tool_tip="ä½äºº"/> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - オブジェクトを介ã—ã¦ï¼š - </text> + <string name="payee_group">グループã«æ”¯æ‰•ã†</string> + <string name="payee_resident">ä½äººã«æ”¯æ‰•ã†</string> + <text name="paying_text">支払ä¸:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">オブジェクトを介ã—ã¦ï¼š</text> <icon name="icon_object" tool_tip="オブジェクト"/> - <text name="object_name_text"> - ... - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 金é¡ã‚’指定: - </text> - <button label="支払ã„" label_selected="支払ã„" name="pay btn"/> - <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel btn"/> + <text name="object_name_text">...</text> + <panel label="検索" name="PatternsPanel"> + <button label="L$ 1 支払ã†" label_selected="L$ 1 支払ã†" name="fastpay 1"/> + <button label="L$ 5 支払ã†" label_selected="L$ 5 支払ã†" name="fastpay 5"/> + <button label="L$ 10 支払ã†" label_selected="L$ 10 支払ã†" name="fastpay 10"/> + <button label="L$ 20 支払ã†" label_selected="L$ 20 支払ã†" name="fastpay 20"/> + </panel> + <panel label="検索" name="InputPanel"> + <text name="amount text">ãã®ä»–ã®é‡‘é¡:</text> + <button label="支払ã„" label_selected="支払ã„" name="pay btn"/> + <button label="å–り消ã—" label_selected="å–り消ã—" name="cancel btn"/> + </panel> </floater> 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 d87ef8e2a08edcd7369ebe34bb7e86cf05646f1d..e7aa3cfc301783cae87fc22e340705322a306b84 100755 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="容姿" name="Change Outfit"/> <menu_item_call label="アウトフィットã®ç·¨é›†" name="Edit Outfit"/> <menu_item_call label="シェイプã®ç·¨é›†" name="Edit My Shape"/> + <menu_item_call label="ホãƒãƒ¼é«˜ã•" name="Hover Height"/> <menu_item_call label="フレンド" name="Friends..."/> <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="Profile..."/> 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 eb8e98059a9427bb9201db7b509b5ffce06771bd..a14cfd58767bc4e9b6948725e85ae391149db52c 100755 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="容姿" name="Chenge Outfit"/> <menu_item_call label="アウトフィットを編集" name="Edit Outfit"/> <menu_item_call label="シェイプを編集" name="Edit My Shape"/> + <menu_item_call label="ホãƒãƒ¼é«˜ã•" name="Hover Height"/> <menu_item_call label="フレンド" name="Friends..."/> <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 8d6c983aa72d3834a2413ec210a86330730f879b..9a68ed8a6b2a0d464f34ec1b9f693ed6f97b3ab9 100755 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="リストを作æˆ" name="Marketplace Create Listing"/> + <menu_item_call label="リストを関連付ã‘" name="Marketplace Associate Listing"/> + <menu_item_call label="リストをå–å¾— (æ›´æ–°)" name="Marketplace Get Listing"/> + <menu_item_call label="エラーを確èª" name="Marketplace Check Listing"/> + <menu_item_call label="リストを編集" name="Marketplace Edit Listing"/> + <menu_item_call label="リスト" name="Marketplace List"/> + <menu_item_call label="リストã‹ã‚‰å–り除ã" name="Marketplace Unlist"/> + <menu_item_call label="有効ã«ã™ã‚‹" name="Marketplace Activate"/> + <menu_item_call label="無効ã«ã™ã‚‹" name="Marketplace Deactivate"/> <menu_item_call label="共有" name="Share"/> <menu_item_call label="購入" name="Task Buy"/> <menu_item_call label="é–‹ã" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="è¿½åŠ " name="Wearable Add"/> <menu_item_call label="å–り外ã™" name="Take Off"/> <menu_item_call label="マーãƒãƒ£ãƒ³ãƒˆã®ã‚¢ã‚¦ãƒˆãƒœãƒƒã‚¯ã‚¹ã«ã‚³ãƒ”ー" name="Merchant Copy"/> - <menu_item_call label="マーケットプレイスã«é€ä¿¡" name="Marketplace Send"/> + <menu_item_call label="マーケットプレイスã®ãƒªã‚¹ãƒˆã«ã‚³ãƒ”ー" name="Marketplace Copy"/> + <menu_item_call label="マーケットプレイスã®ãƒªã‚¹ãƒˆã«ç§»å‹•" name="Marketplace Move"/> <menu_item_call label="ï¼ï¼ã‚ªãƒ—ションãªã—ï¼ï¼" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad36aa3f77c2816f1220607d8047f6788659da04 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="åœ¨åº«é«˜é †ã«ä¸¦ã¹æ›¿ãˆ (低ã‹ã‚‰é«˜ã¸)" name="sort_by_stock_amount"/> + <menu_item_check label="リストフォルダã®ã¿è¡¨ç¤º" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 40002b4f3346f16ebb92ee75312044545f2d90d2..3f756c5f9418f1c272def573e7b34957821091ba 100755 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="L$ ã®è³¼å…¥..." name="Buy and Sell L$"/> <menu_item_call label="マーãƒãƒ£ãƒ³ãƒˆã‚¢ã‚¦ãƒˆãƒœãƒƒã‚¯ã‚¹..." name="MerchantOutbox"/> + <menu_item_call label="マーケティングプレイスã®ãƒªã‚¹ãƒˆ..." name="MarketplaceListings"/> <menu_item_call label="マイアカウント..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/> </menu_item_call> @@ -251,6 +252,7 @@ <menu_item_check label="テクスãƒãƒ£ã®ã‚³ãƒ³ã‚½ãƒ¼ãƒ«" name="Texture Console"/> <menu_item_check label="デãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«" name="Debug Console"/> <menu_item_call label="通知コンソール" name="Notifications"/> + <menu_item_check label="地域デãƒãƒƒã‚°ã‚³ãƒ³ã‚½ãƒ¼ãƒ«" name="Region Debug Console"/> <menu_item_check label="ファーストタイマー" name="Fast Timers"/> <menu_item_check label="メモリ" name="Memory"/> <menu_item_check label="風景ã®çµ±è¨ˆ" name="Scene Statistics"/> @@ -354,7 +356,7 @@ <menu_item_check label="挿入ã•ã‚ŒãŸã‚ªãƒ–ジェクトã®ä½ç½®ã® Ping" name="Ping Interpolate Object Positions"/> <menu_item_call label="パケットドãƒãƒƒãƒ—" name="Drop a Packet"/> </menu> - <menu_item_call label="スクリプト付ãカメラをダンプ" name="Dump Scripted Camera"/> + <menu_item_call label="スクリプト付ãカメラをダンプ" name="Dump Scripted Camera"/> <menu label="レコーダー" name="Recorder"> <menu_item_call label="å†ç”Ÿé–‹å§‹" name="Start Playback"/> <menu_item_call label="å†ç”Ÿåœæ¢" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index fba89dc29694826da8d06b6d92d87e7857d18197..694f38467e428166c0fbf8f9f8f53061921f897c 100755 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -128,6 +128,88 @@ システムã¾ãŸã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®ã‚¨ãƒ©ãƒ¼ã®ãŸã‚ã€ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + 在庫フォルダã¸ã®ã‚³ãƒ”ーã¾ãŸã¯ç§»å‹•ãŒã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šå¤±æ•—ã—ã¾ã—ãŸ: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + マーケットプレイスã®ãƒªã‚¹ãƒˆã¸ã®ã‚³ãƒ”ーã¾ãŸã¯ç§»å‹•ãŒã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šå¤±æ•—ã—ã¾ã—ãŸ: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + マーケットプレイスã«ã‚ˆã‚‹å–引ãŒæ¬¡ã®ã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šå¤±æ•—ã—ã¾ã—ãŸ: + +ç†ç”±ï¼š'[ERROR_REASON]' +[ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + ã“ã®è£½å“をリストã«è¡¨ç¤ºã§ããªã„ã‹ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã‚’有効ã«ã§ãã¾ã›ã‚“。通常ã€ã“ã‚Œã¯ãƒªã‚¹ãƒˆèª¬æ˜Žãƒ•ã‚©ãƒ¼ãƒ ã«æƒ…å ±ãŒä¸è¶³ã—ã¦ã„ã‚‹ãŸã‚ã«èµ·ã“ã‚Šã¾ã™ãŒã€ãƒ•ã‚©ãƒ«ãƒ€æ§‹é€ ã®ã‚¨ãƒ©ãƒ¼ãŒåŽŸå› ã®å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚リストを編集ã™ã‚‹ã‹ã€ãƒªã‚¹ãƒˆãƒ•ã‚©ãƒ«ãƒ€ã«ã‚¨ãƒ©ãƒ¼ãŒãªã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + マーケットプレイスã¸ã®ãƒªã‚¹ãƒˆè¡¨ç¤ºãŒæ¬¡ã®ã‚¨ãƒ©ãƒ¼ã§å¤±æ•—ã—ã¾ã—㟠: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã®æœ‰åŠ¹åŒ–ãŒæ¬¡ã®ã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šå¤±æ•—ã—ã¾ã—㟠: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + ã“ã®æ“作ã«ã‚ˆã‚Šã€ã“ã®ãƒªã‚¹ãƒˆã®æœ‰åŠ¹ãªå†…容ãŒå¤‰æ›´ã•ã‚Œã¾ã™ã€‚続ã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="マーケットプレイスã§æœ‰åŠ¹ãªãƒªã‚¹ãƒˆã‚’変更ã™ã‚‹å‰ã«ç¢ºèªã™ã‚‹" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + マーケットプレイスã®ãƒªã‚¹ãƒˆã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã¯å…ƒã®å ´æ‰€ã‹ã‚‰ã‚³ãƒ”ーã•ã‚Œã‚‹ã®ã§ã¯ãªãã€ç§»å‹•ã—ã¾ã™ã€‚続ã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="アイテムをインベントリã‹ã‚‰ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã«ç§»å‹•ã™ã‚‹å‰ã«ç¢ºèªã™ã‚‹" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + リストフォルダを移動ã¾ãŸã¯å‰Šé™¤ã™ã‚‹ã¨ã€ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã®ãƒªã‚¹ãƒˆãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚マーケットプレイスã®ãƒªã‚¹ãƒˆã‚’ç¶æŒã™ã‚‹å ´åˆã¯ã€å¤‰æ›´ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã®ä¸èº«ã‚’移動ã¾ãŸã¯å‰Šé™¤ã—ã¦ãã ã•ã„。続ã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="マーケットプレイスã‹ã‚‰ãƒªã‚¹ãƒˆã‚’移動ã¾ãŸã¯å‰Šé™¤ã™ã‚‹å‰ã«ç¢ºèªã™ã‚‹" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã® 1 ã¤ã¾ãŸã¯è¤‡æ•°ã‚’マーケットプレイスã«ã‚³ãƒ”ーã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。移動ã™ã‚‹ã‹ã€ç½®ã去りã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã™ã€‚ + <usetemplate canceltext="å–り消ã—" ignoretext="ã‚³ãƒ”ãƒ¼ä»˜åŠ ã‚¢ã‚¤ãƒ†ãƒ ã‚’å«ã‚€é¸æŠžå†…容をマーケットプレイスã¸ã‚³ãƒ”ーã™ã‚‹å‰ã«ç¢ºèªã™ã‚‹" name="yesnocancelbuttons" notext="アイテムを移動ã—ãªã„" yestext="アイテムを移動"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + ã“ã®æ“作ã«ã‚ˆã‚Šã€ã“ã®ãƒªã‚¹ãƒˆãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚続ã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="マーケットプレイスã§æœ‰åŠ¹ãªãƒªã‚¹ãƒˆã‚’削除ã™ã‚‹å‰ã«ç¢ºèªã™ã‚‹" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + ã“ã®æ“作ã«ã‚ˆã‚Šã€ç¾åœ¨ã®ãƒªã‚¹ãƒˆã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚続ã‘ã¾ã™ã‹ï¼Ÿ + <usetemplate ignoretext="マーケットプレイスã§ãƒªã‚¹ãƒˆã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã‚’無効ã«ã™ã‚‹å‰ã«ç¢ºèªã™ã‚‹" name="okcancelignore" notext="å–り消ã—" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + ã“ã®ãƒªã‚¹ãƒˆã‚’アップデートã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ +[[URL] ã“ã“をクリック] ã—ã¦ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã§ç·¨é›†ã—ã¾ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + マーケットプレイスã®ãƒªã‚¹ãƒˆãƒ•ã‚©ãƒ«ãƒ€ã«ã‚ã‚‹è¡£æœã‚„ボディパーツをç€ç”¨ã§ãã¾ã›ã‚“。 + </notification> + <notification name="AlertMerchantListingInvalidID"> + リスト ID ãŒç„¡åŠ¹ã§ã™ã€‚ + </notification> + <notification name="AlertMerchantListingActivateRequired"> + ã“ã®ãƒªã‚¹ãƒˆã«ã¯è¤‡æ•°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ãŒã‚ã‚‹ã‹ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ãŒã‚ã‚Šã¾ã›ã‚“。後ã§ã€å˜ç‹¬ã§ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦æœ‰åŠ¹ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + <usetemplate ignoretext="複数ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã®ã‚るリストを作æˆã™ã‚‹ã¨ãã«ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã®æœ‰åŠ¹åŒ–ã«é–¢ã™ã‚‹è¦å‘ŠãŒè¡¨ç¤ºã•ã‚Œã¾ã™" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + å„種ã®åœ¨åº«å“目を別々ã®åœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ã«åˆ†ã‘ãŸãŸã‚ã€ãƒ•ã‚©ãƒ«ãƒ€ã¯ãƒªã‚¹ãƒˆã«è¡¨ç¤ºã§ãるよã†ã«é…ç½®ã•ã‚Œã¦ã„ã¾ã™ã€‚ + <usetemplate ignoretext="リストã«è¡¨ç¤ºã™ã‚‹å‰ã«åœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ãŒåˆ†å‰²ã•ã‚Œã‚‹ã¨ã€è¦å‘ŠãŒè¡¨ç¤ºã•ã‚Œã¾ã™" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + 在庫ãŒç©ºã®ãŸã‚ã€ãƒªã‚¹ãƒˆã‚’削除ã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ã«ã¯ã€åœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ã«ãƒ¦ãƒ‹ãƒƒãƒˆã‚’è¿½åŠ ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + <usetemplate ignoretext="在庫フォルダãŒç©ºã®ãŸã‚ã«ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•ã‚Œãªã„ã¨è¦å‘ŠãŒè¡¨ç¤ºã•ã‚Œã¾ã™" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> 次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—ト用テã‚ストã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•é¡ŒãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚ [REASON] @@ -495,6 +577,10 @@ L$ ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ã 変更をä¿å˜ã—ã¾ã™ã‹ï¼Ÿ <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ä¿å˜ã—ãªã„" yestext="ä¿å˜"/> </notification> + <notification name="DeleteNotecard"> + ノートカードを削除ã—ã¾ã™ã‹? + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ ステップãŒå¤šã™ãŽã¾ã™ã€‚ @@ -1906,6 +1992,9 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name ã‚’å‚ç…§ã—ã¦ãã 訪å•ã—よã†ã¨ã—ã¦ã„る地域(リージョン)ã«ã¯ç¾åœ¨ã®ç’°å¢ƒè¨å®šã‚’超ãˆã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚「ミー〠> 「環境è¨å®šã€ > 「一般ã€ã‚’é¸æŠžã—ã¦ã€ç’°å¢ƒè¨å®šã‚’変更ã§ãã¾ã™ã€‚ <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> 訪å•ã—よã†ã¨ã—ã¦ã„る地域(リージョン)ã«ã¯ã€æˆäººã®ã¿ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹ [REGIONMATURITY] コンテンツãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ <url name="url"> @@ -2198,6 +2287,10 @@ L$ [AMOUNT] ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã‚’今ã™ã公開ã—ã¾ã™ <ignore name="ignore" text="オブジェクトを作æˆä¸ã«ã€money() スクリプトを入れãšã«ã€Œã‚ªãƒ–ジェクトã«æ”¯æ‰•ã†ã€ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’è¨å®šã—ãŸã¨ã"/> </form> </notification> + <notification name="PayConfirmation"> + L$[AMOUNT] ã‚’ [TARGET] ã«æ”¯æ‰•ã†ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 + <usetemplate ignoretext="支払ã„å‰ã«ç¢ºèª (åˆè¨ˆé‡‘é¡ãŒ L$200 以上ã®å ´åˆ)" name="okcancelignore" notext="å–り消ã—" yestext="支払ã„"/> + </notification> <notification name="OpenObjectCannotCopy"> ã“ã®ã‚ªãƒ–ジェクトã«ã¯ã€ã‚ãªãŸãŒã‚³ãƒ”ーã§ãるアイテムã¯ã‚ã‚Šã¾ã›ã‚“。 </notification> @@ -3881,9 +3974,11 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ </notification> <notification name="TeleportedByAttachment"> [ITEM_ID] ã¸ã®ã‚¢ã‚¿ãƒƒãƒãƒ¡ãƒ³ãƒˆã«ã‚ˆã£ã¦ã€ã‚ãªãŸã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ + <usetemplate ignoretext="テレãƒãƒ¼ãƒˆï¼šã‚¢ã‚¿ãƒƒãƒãƒ¡ãƒ³ãƒˆã«ã‚ˆã‚Šãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•ã‚Œã¾ã—ãŸ" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> 区画 '[PARCEL_NAME]' ã®ã‚ªãƒ–ジェクト '[OBJECT_NAME]' ã«ã‚ˆã£ã¦ã€ã‚ãªãŸã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ + <usetemplate ignoretext="テレãƒãƒ¼ãƒˆï¼šåŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã«ã‚ˆã‚Šãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•ã‚Œã¾ã—ãŸ" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> [OWNER_ID] ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクト '[OBJECT_NAME]' ã«ã‚ˆã£ã¦ã€ã‚ãªãŸã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚ @@ -4215,7 +4310,7 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ <usetemplate ignoretext="ファイルを移動ã§ãã¾ã›ã‚“。以å‰ã®ãƒ‘スãŒãƒªã‚¹ãƒˆã‚¢ã•ã‚Œã¾ã—ãŸã€‚" name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - 次ã®ç†ç”±ã«ã‚ˆã‚Šã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆæ¨©é™ã‚’ä¿å˜ã™ã‚‹ã¨ãã«å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸ: [REASON]。後ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆæ¨©é™ã‚’è¨å®šã—ã¦ãã ã•ã„。 + デフォルトã®ã‚ªãƒ–ジェクト権é™ã‚’ä¿å˜ã™ã‚‹ã¨ãã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸ: [REASON]。後ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ¨©é™ã‚’è¨å®šã—ã¦ãã ã•ã„。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index c5d5330eb4d655189186d7f86bf0756e54b18193..5f2007e0da8a0d2c5e1de51e1ad0d05150c26aec 100755 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=ja - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=ja</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="ユーザーå" name="username_combo" tool_tip="登録時ã«è‡ªåˆ†ã§é¸ã‚“ã ユーザーå(例:bobsmith12ã€Steller Sunshineãªã©ï¼‰"/> <line_editor label="パスワード" name="password_edit"/> - <check_box label="記憶ã™ã‚‹" name="remember_check"/> - <text name="forgot_password_text"> - パスワードを忘れãŸå ´åˆ - </text> - <button label="ãƒã‚°ã‚¤ãƒ³" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - å‰å›žã®å ´æ‰€ - </text> <combo_box label="ãŠæ°—ã«å…¥ã‚Šã®å ´æ‰€" name="start_location_combo"> + <combo_box.item label="最後ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãŸå ´æ‰€" name="MyLastLocation"/> <combo_box.item label="ホーム" name="MyHome"/> </combo_box> - <button label="ãƒã‚°ã‚¤ãƒ³" name="connect_favorite_btn"/> - <line_editor label="å ´æ‰€ã‚’å…¥åŠ›" name="location_edit"/> - <button label="ãƒã‚°ã‚¤ãƒ³" name="connect_location_btn"/> + <button label="ãƒã‚°ã‚¤ãƒ³" name="connect_btn"/> + <check_box label="記憶ã™ã‚‹" name="remember_check"/> + <text name="forgot_password_text">パスワードを忘れãŸå ´åˆ</text> <combo_box label="グリッドをé¸æŠž" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..a9218bebff48b548b93173b34585312eb0b1887b --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="マーケットプレイス" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="表示/並ã¹æ›¿ãˆã‚ªãƒ—ション"/> + <button name="add_btn" tool_tip="æ–°è¦ãƒªã‚¹ãƒˆãƒ•ã‚©ãƒ«ãƒ€ã®ä½œæˆ"/> + <button label="エラーを確èª" name="audit_btn" tool_tip="マーケットプレイスã®ãƒªã‚¹ãƒˆã‚’確èª"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="マーケットプレイスã®ãƒªã‚¹ãƒˆã‚’フィルタ" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..43cb64d6bac9296a954cbcc18f2b448bdd0e3209 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ã™ã¹ã¦" name="All Items" tool_tip="ã“ã“ã«ã‚¢ã‚¤ãƒ†ãƒ をドラッグ&ドãƒãƒƒãƒ—ã—ã¦ãƒªã‚¹ãƒˆã«è¡¨ç¤ºã—ã¾ã™"/> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f27231cbd96f4ac1ceb78b717a39e9bb68ca028 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="リストã«æŽ²è¼‰" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..215be9ae6d572659027652911126a65f5b14b8f6 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="関連付ã‘ã•ã‚Œã¦ã„ãªã„" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..04530477f60f37c295f7abb3ab98f9897b00eedd --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="リストã‹ã‚‰å‰Šé™¤æ¸ˆã¿" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml index f09643d56223817b68da9a208b260e7d6dd2b830..2e1446d45093de620f18d5ec157a5d391b69487f 100755 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - パケットæ失 - </panel.string> - <panel.string name="bandwidth_tooltip"> - 帯域幅 - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt]) - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">パケットæ失</panel.string> + <panel.string name="bandwidth_tooltip">帯域幅</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt])</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-370" name="balance_bg" width="160"> - <text name="balance" tool_tip="クリックã—㦠L$ 残高を更新" value="L$20"/> + <text name="balance" tool_tip="クリックã—㦠L$ 残高を更新" value="L$??"/> <button label="L$ ã®è³¼å…¥" name="buyL" tool_tip="クリックã—㦠L$ を購入ã—ã¾ã™"/> - <button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開ã" width="40"/> + <button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開ã" width="40"/> </panel> - <text name="TimeText" tool_tip="ç¾åœ¨æ™‚刻(太平洋)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="ç¾åœ¨æ™‚刻(太平洋)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="ã™ã¹ã¦ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’開始・åœæ¢ï¼ˆéŸ³æ¥½ã€ãƒ“デオã€Web ページ)"/> <button name="volume_btn" tool_tip="ã‚°ãƒãƒ¼ãƒãƒ«éŸ³é‡è¨å®š"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml index 56a8b0e0970aee5d8080687770e8649c9f83fca9..d88847084617a4f8891349d96d5e9c199b6a7dbf 100755 --- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="CheckNextOwnerTransfer" tool_tip="次ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã§ãã¾ã™"/> </panel> <check_box label="販売ä¸" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="コピー" name="Copy"/> + <combo_box.item label="コンテンツ" name="Contents"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> <spinner label="ä¾¡æ ¼ï¼š L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml index 4f65c8477bc4725bfa68aff63b9e068c3c290cbb..858307800b6f8b50b1078324b0f0ac372330bf75 100755 --- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="オブジェクトã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«"> - <panel.string name="text deed continued"> - è²æ¸¡ - </panel.string> - <panel.string name="text deed"> - è²æ¸¡ - </panel.string> - <panel.string name="text modify info 1"> - ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™ - </panel.string> - <panel.string name="text modify info 2"> - ã“れらã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™ - </panel.string> - <panel.string name="text modify info 3"> - ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“ - </panel.string> - <panel.string name="text modify info 4"> - ã“れらã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“ - </panel.string> - <panel.string name="text modify info 5"> - 地域(リージョン)ã®å¢ƒç•Œã‚’越ãˆã¦ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“ - </panel.string> - <panel.string name="text modify info 6"> - 地域(リージョン)ã®å¢ƒç•Œã‚’越ãˆã¦ã“れらã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“ - </panel.string> - <panel.string name="text modify warning"> - ã“ã®ã‚ªãƒ–ジェクトã«ã¯ã€ãƒ‘ーツãŒãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„ã¾ã™ - </panel.string> - <panel.string name="Cost Default"> - ä¾¡æ ¼ï¼š L$ - </panel.string> - <panel.string name="Cost Total"> - åˆè¨ˆï¼š L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Price Per: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Mixed Price - </panel.string> - <panel.string name="Sale Mixed"> - Mixed Sale - </panel.string> + <panel.string name="text deed continued">è²æ¸¡</panel.string> + <panel.string name="text deed">è²æ¸¡</panel.string> + <panel.string name="text modify info 1">ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™</panel.string> + <panel.string name="text modify info 2">ã“れらã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™</panel.string> + <panel.string name="text modify info 3">ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“</panel.string> + <panel.string name="text modify info 4">ã“れらã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“</panel.string> + <panel.string name="text modify info 5">地域(リージョン)ã®å¢ƒç•Œã‚’越ãˆã¦ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“</panel.string> + <panel.string name="text modify info 6">地域(リージョン)ã®å¢ƒç•Œã‚’越ãˆã¦ã“れらã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã›ã‚“</panel.string> + <panel.string name="text modify warning">ã“ã®ã‚ªãƒ–ジェクトã«ã¯ã€ãƒ‘ーツãŒãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„ã¾ã™</panel.string> + <panel.string name="Cost Default">ä¾¡æ ¼ï¼š L$</panel.string> + <panel.string name="Cost Total">åˆè¨ˆä¾¡æ ¼: L$</panel.string> + <panel.string name="Cost Per Unit">Price Per: L$</panel.string> + <panel.string name="Cost Mixed">Mixed Price</panel.string> + <panel.string name="Sale Mixed">Mixed Sale</panel.string> <text name="title" value="オブジェクトã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«"/> <text name="where" value="(インワールド)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - åå‰ï¼š - </text> - <text name="Description:"> - 説明: - </text> - <text name="CreatorNameLabel"> - 制作者: - </text> - <text name="Owner:"> - 所有者: - </text> - <text name="Group_label"> - グループ: - </text> + <text name="Name:">åå‰ï¼š</text> + <text name="Description:">説明:</text> + <text name="CreatorNameLabel">制作者:</text> + <text name="Owner:">所有者:</text> + <text name="Group_label">グループ:</text> <button name="button set group" tool_tip="ã“ã®ã‚ªãƒ–ジェクト権é™ã‚’共有ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠžã—ã¾ã™"/> <name_box initial_value="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°..." name="Group Name Proxy"/> <button label="è²æ¸¡" label_selected="è²æ¸¡" name="button deed" tool_tip="ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’è²æ¸¡ã™ã‚‹ã¨ã€Œæ¬¡ã®æ‰€æœ‰è€…ã€ã®æ¨©é™ãŒé©ç”¨ã•ã‚Œã¾ã™ã€‚ グループ共有オブジェクトã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚ªãƒ•ã‚£ã‚µãƒ¼ãŒè²æ¸¡ã§ãã¾ã™ã€‚"/> - <text name="label click action"> - クリックã§ï¼š - </text> + <text name="label click action">クリックã§ï¼š</text> <combo_box name="clickaction"> <combo_box.item label="触る(デフォルト)" name="Touch/grab(default)"/> <combo_box.item label="オブジェクトã«åº§ã‚‹" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="ズーム" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™ - </text> - <text name="Anyone can:"> - 全員: - </text> + <text name="perm_modify">ã“ã®ã‚ªãƒ–ジェクトを修æ£ã§ãã¾ã™</text> + <text name="Anyone can:">全員:</text> <check_box label="コピー" name="checkbox allow everyone copy"/> <check_box label="移動" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - グループ: - </text> + <text name="GroupLabel">グループ:</text> <check_box label="共有" name="checkbox share with group" tool_tip="è¨å®šã—ãŸã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼å…¨å“¡ã«ã“ã®ã‚ªãƒ–ジェクトã®ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã€‚ è²æ¸¡ã—ãªã„é™ã‚Šã€å½¹å‰²åˆ¶é™ã‚’有効ã«ã¯ã§ãã¾ã›ã‚“。"/> - <text name="NextOwnerLabel"> - 次ã®æ‰€æœ‰è€…: - </text> + <text name="NextOwnerLabel">次ã®æ‰€æœ‰è€…:</text> <check_box label="ä¿®æ£" name="checkbox next owner can modify"/> <check_box label="コピー" name="checkbox next owner can copy"/> <check_box label="å†è²©ãƒ»ãƒ—レゼント" name="checkbox next owner can transfer" tool_tip="次ã®æ‰€æœ‰è€…ã¯ã“ã®ã‚ªãƒ–ジェクトを他人ã«ã‚ã’ãŸã‚Šå†è²©ã§ãã¾ã™"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="ä¾¡æ ¼ï¼š L$" name="Edit Cost"/> <check_box label="検索ã«è¡¨ç¤º" name="search_check" tool_tip="ã“ã®ã‚ªãƒ–ジェクトを検索çµæžœã«è¡¨ç¤ºã—ã¾ã™"/> - <text name="pathfinding_attributes_label"> - パスファインディング属性: - </text> - <text name="B:"> - B. - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">パスファインディング属性:</text> + <text name="B:">B.</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="é–‹ã" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index e825389895de5c64ac53d2b3b60c1eb15533b357..22eb9ce88827f7a421b81873f6e7937e97c135ce 100755 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -453,28 +453,46 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - マーãƒãƒ£ãƒ³ãƒˆãƒœãƒƒã‚¯ã‚¹å†…ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ Rez ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ + マーケットプレイスã®ãƒªã‚¹ãƒˆãƒ•ã‚©ãƒ«ãƒ€ã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’ Rez ã§ãã¾ã›ã‚“ + </string> + <string name="TooltipOutboxWorn"> + ç€ã¦ã„るアイテムをマーケットプレイスã®ãƒªã‚¹ãƒˆãƒ•ã‚©ãƒ«ãƒ€ã«ç½®ãã“ã¨ã¯ã§ãã¾ã›ã‚“ + </string> + <string name="TooltipOutboxFolderLevels"> + ãƒã‚¹ãƒˆå…¥ã‚Šãƒ•ã‚©ãƒ«ãƒ€ã®æ·±ã•ãŒ [AMOUNT] 階層を超ãˆã¦ã„ã¾ã™å¿…è¦ã«å¿œã˜ã¦ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç®±ã«å…¥ã‚Œã€ãƒ•ã‚©ãƒ«ãƒ€ã®éšŽå±¤ã‚’減らã—ã¾ã™ã€‚ + </string> + <string name="TooltipOutboxTooManyFolders"> + サブフォルダ数㌠[AMOUNT] 個を超ãˆã¦ã„ã¾ã™ã€‚å¿…è¦ã«å¿œã˜ã¦ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç®±ã«å…¥ã‚Œã€ãƒªã‚¹ãƒˆã®ãƒ•ã‚©ãƒ«ãƒ€éšŽå±¤ã‚’減らã—ã¾ã™ã€‚ + </string> + <string name="TooltipOutboxTooManyObjects"> + アイテム数㌠[AMOUNT] 個を超ãˆã¦ã„ã¾ã™ã€‚1 ã¤ã®ãƒªã‚¹ãƒˆå†…㧠[AMOUNT] 個を超ãˆã‚‹ã‚¢ã‚¤ãƒ†ãƒ を販売ã™ã‚‹ãŸã‚ã«ã¯ã€ã„ãã¤ã‹ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç®±ã«å…¥ã‚Œã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + </string> + <string name="TooltipOutboxTooManyStockItems"> + 在庫アイテム数㌠[AMOUNT] 個を超ãˆã¦ã„ã¾ã™ã€‚ + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + アイテムã¾ãŸã¯ãƒ•ã‚©ãƒ«ãƒ€ã¯ã€Œã™ã¹ã¦ã€ã‚¿ãƒ–ã«ã‚ˆã£ã¦ã®ã¿ãƒ‰ãƒãƒƒãƒ—ã§ãã¾ã™ã€‚ã“ã®ã‚¿ãƒ–ã‚’é¸æŠžã—ã¦ã‹ã‚‰ã€ã‚‚ã†ä¸€åº¦ã‚¢ã‚¤ãƒ†ãƒ ã¾ãŸã¯ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„。 </string> <string name="TooltipOutboxNoTransfer"> - ã“れらオブジェクト㮠1 ã¤ã¾ãŸã¯è¤‡æ•°ã¯å£²ã‚Šæ¸¡ã—ãŸã‚Šè²æ¸¡ã—ãŸã‚Šã§ããªã„ã‚‚ã®ã§ã™ã€‚ + ã“れらã®ã‚ªãƒ–ジェクト㮠1 ã¤ã¾ãŸã¯è¤‡æ•°ã¯å£²ã‚Šæ¸¡ã—ãŸã‚Šè²æ¸¡ã—ãŸã‚Šã§ããªã„ã‚‚ã®ã§ã™ </string> <string name="TooltipOutboxNotInInventory"> - マーãƒãƒ£ãƒ³ãƒˆã‚¢ã‚¦ãƒˆãƒœãƒƒã‚¯ã‚¹ã§ã¯ã€ã”自分ã®ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã‹ã‚‰ã®ã‚¢ã‚¤ãƒ†ãƒ ã—ã‹å—ã‘入れるã“ã¨ãŒã§ãã¾ã›ã‚“ + アイテムã¯ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã‹ã‚‰ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスã¸ã®ç§»å‹•ã®ã¿ã§ãã¾ã™ </string> - <string name="TooltipOutboxWorn"> - ç€ç”¨ã—ã¦ã„るアイテムをマーãƒãƒ£ãƒ³ãƒˆã‚¢ã‚¦ãƒˆãƒœãƒƒã‚¯ã‚¹ã«å…¥ã‚Œã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ + <string name="TooltipOutboxLinked"> + リンクã•ã‚ŒãŸç›¸æ‰‹ã¾ãŸã¯ãƒ•ã‚©ãƒ«ãƒ€ã‚’マーケットプレイスã«ç½®ãã“ã¨ã¯ã§ãã¾ã›ã‚“ </string> <string name="TooltipOutboxCallingCard"> - コーリングカードをマーãƒãƒ£ãƒ³ãƒˆã‚¢ã‚¦ãƒˆãƒœãƒƒã‚¯ã‚¹ã«å…¥ã‚Œã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ + コーリングカードをマーケットプレイスã«ç½®ãã“ã¨ã¯ã§ãã¾ã›ã‚“ </string> - <string name="TooltipOutboxFolderLevels"> - ãƒã‚¹ãƒˆå…¥ã‚Šãƒ•ã‚©ãƒ«ãƒ€ã®æ·±ã•ãŒ 3 を超ãˆã¦ã„ã¾ã™ + <string name="TooltipOutboxDragActive"> + 表示ã•ã‚Œã¦ã„るリストを移動ã§ãã¾ã›ã‚“ </string> - <string name="TooltipOutboxTooManyFolders"> - 最上ä½ãƒ•ã‚©ãƒ«ãƒ€å†…ã®ã‚µãƒ–フォルダ数㌠20 を超ãˆã¦ã„ã¾ã™ + <string name="TooltipOutboxCannotMoveRoot"> + ルートフォルダをリストã«è¡¨ç¤ºã™ã‚‹ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイスを移動ã§ãã¾ã›ã‚“ </string> - <string name="TooltipOutboxTooManyObjects"> - 最上ä½ãƒ•ã‚©ãƒ«ãƒ€å†…ã®ã‚¢ã‚¤ãƒ†ãƒ 数㌠200 を超ãˆã¦ã„ã¾ã™ + <string name="TooltipOutboxMixedStock"> + 在庫フォルダ内ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã™ã¹ã¦åŒã˜ç¨®é¡žã¨æ¨©é™ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ </string> <string name="TooltipDragOntoOwnChild"> フォルダをãã®åフォルダã«ç§»å‹•ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ @@ -1062,7 +1080,7 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="AgentNameSubst"> (ã‚ãªãŸ) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> 土地ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒªã‚¹ãƒˆã‚’管ç†ã™ã‚‹ã¨ãã«ã‚¢ãƒ©ãƒ¼ãƒˆã‚’表示ã—ãªã„ </string> @@ -1129,6 +1147,12 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="bitmap_image_files"> ãƒ“ãƒƒãƒˆãƒžãƒƒãƒ—ç”»åƒ </string> + <string name="png_image_files"> + PNG ç”»åƒ + </string> + <string name="save_texture_image_files"> + Targa ã¾ãŸã¯ PNG ç”»åƒ + </string> <string name="avi_movie_file"> AVI ムービーファイル </string> @@ -1378,6 +1402,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="FavoritesNoMatchingItems"> ã“ã“ã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’ドラッグã—ã¦ãŠæ°—ã«å…¥ã‚Šã«è¿½åŠ ã—ã¾ã™ã€‚ </string> + <string name="MarketplaceNoMatchingItems"> + アイテムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚検索文å—列ã®ã‚¹ãƒšãƒ«ã‚’確èªã—ã¦ã€ã‚‚ã†ä¸€åº¦ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。 + </string> <string name="InventoryNoTexture"> インベントリ内ã«ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ã‚³ãƒ”ーãŒã‚ã‚Šã¾ã›ã‚“ </string> @@ -1425,29 +1452,95 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] マーケットプレイス ストア] ãŒã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚ </string> + <string name="InventoryMarketplaceError"> + ã“ã®æ©Ÿèƒ½ã¯ã€ç¾åœ¨ã€ãƒ™ãƒ¼ã‚¿ç‰ˆã®æ©Ÿèƒ½ã§ã™ã€‚å‚åŠ ã™ã‚‹ã«ã¯ã€ã“ã® [http://goo.gl/forms/FCQ7UXkakz Google form] ã«åå‰ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。 + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + マーケットプレイスã®ãƒªã‚¹ãƒˆãƒ•ã‚©ãƒ«ãƒ€ãŒç©ºã§ã™ã€‚ + </string> + <string name="InventoryMarketplaceListingsNoItems"> + [[MARKETPLACE_DASHBOARD_URL] マーケットプレイス]ã«è²©å£²ã™ã‚‹ã‚¢ã‚¤ãƒ†ãƒ を一覧ã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ«ãƒ€ã‚’ã“ã®ã‚¨ãƒªã‚¢ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¾ã™ã€‚ + </string> + <string name="Marketplace Validation Warning Stock"> + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã«åœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ãŒå«ã¾ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : エラー:在庫フォルダ内ã®ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚³ãƒ”ーä¸å¯ã§åŒã˜ç¨®é¡žã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : エラー:在庫フォルダã«ã‚µãƒ–フォルダをå«ã‚ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ + </string> + <string name="Marketplace Validation Warning Empty"> + : è¦å‘Šï¼šãƒ•ã‚©ãƒ«ãƒ€ã«ã‚¢ã‚¤ãƒ†ãƒ ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“ + </string> + <string name="Marketplace Validation Warning Create Stock"> + : è¦å‘Šï¼šåœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ã‚’作æˆã—ã¦ã„ã¾ã™ + </string> + <string name="Marketplace Validation Warning Create Version"> + : è¦å‘Šï¼šãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ä½œæˆä¸ + </string> + <string name="Marketplace Validation Warning Move"> + : è¦å‘Šï¼šã‚¢ã‚¤ãƒ†ãƒ ç§»å‹•ä¸ + </string> + <string name="Marketplace Validation Warning Delete"> + : è¦å‘Šï¼šãƒ•ã‚©ãƒ«ãƒ€ã®ä¸èº«ãŒåœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ã«ç§»ã•ã‚Œã¾ã—ãŸã€‚空ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’削除ã—ã¾ã™ + </string> + <string name="Marketplace Validation Error Stock Item"> + : エラー:在庫フォルダã«ã‚³ãƒ”ーä¸å¯ã‚¢ã‚¤ãƒ†ãƒ ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : è¦å‘Šï¼šãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã«ã‚¢ã‚¤ãƒ†ãƒ ãŒå«ã¾ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + </string> + <string name="Marketplace Validation Error"> + : エラー: + </string> + <string name="Marketplace Validation Warning"> + : è¦å‘Šï¼š + </string> + <string name="Marketplace Validation Error Empty Version"> + : è¦å‘Šï¼šãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ã‚©ãƒ«ãƒ€ã«ã¯ã€æœ€ä½Ž 1 アイテムãŒå«ã¾ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + </string> + <string name="Marketplace Validation Error Empty Stock"> + : è¦å‘Šï¼šåœ¨åº«ãƒ•ã‚©ãƒ«ãƒ€ã«ã¯ã€æœ€ä½Ž 1 アイテムãŒå«ã¾ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ + </string> + <string name="Marketplace Validation No Error"> + å ±å‘Šã™ã‚‹ã‚¨ãƒ©ãƒ¼ã¾ãŸã¯è¦å‘Šã¯ã‚ã‚Šã¾ã›ã‚“ + </string> <string name="Marketplace Error None"> エラーãªã— </string> + <string name="Marketplace Error Prefix"> + エラー: + </string> <string name="Marketplace Error Not Merchant"> - エラー:マーケットプレイスã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’é€ã‚‹å‰ã«ã€ã‚ãªãŸè‡ªèº«ã‚’マーãƒãƒ£ãƒ³ãƒˆç™»éŒ²ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ˆç™»éŒ²ã¯ç„¡æ–™ã§ã™ï¼‰ã€‚ + マーケットプレイスã«å•†å“ã‚’é€ã‚‹å‰ã«ã€ã‚ãªãŸè‡ªèº«ã‚’マーãƒãƒ£ãƒ³ãƒˆç™»éŒ²ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ˆç™»éŒ²ã¯ç„¡æ–™ã§ã™ï¼‰ã€‚ + </string> + <string name="Marketplace Error Not Accepted"> + アイテムをãã®ãƒ•ã‚©ãƒ«ãƒ€ã«ç§»å‹•ã§ãã¾ã›ã‚“。 </string> - <string name="Marketplace Error Empty Folder"> - エラー:ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã¯ç©ºã§ã™ã€‚ + <string name="Marketplace Error Unsellable Item"> + ã“ã®ã‚¢ã‚¤ãƒ†ãƒ をマーケットプレイスã§è²©å£²ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 </string> - <string name="Marketplace Error Unassociated Products"> - エラー:ã‚ãªãŸã®ãƒžãƒ¼ãƒãƒ£ãƒ³ãƒˆã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯ã€å•†å“ã«é–¢é€£ä»˜ã‘られã¦ã„ãªã„アイテムãŒå¤šã™ãŽã‚‹ãŸã‚ã€ã“ã®ã‚¢ã‚¤ãƒ†ãƒ をアップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’解消ã™ã‚‹ã«ã¯ã€ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイス㮠Web サイトã«ãƒã‚°ã‚¤ãƒ³ã—ã€é–¢é€£ä»˜ã‘られã¦ã„ãªã„アイテムã®æ•°ã‚’減らã—ã¦ãã ã•ã„。 + <string name="MarketplaceNoID"> + Mkt ID ãªã— </string> - <string name="Marketplace Error Object Limit"> - エラー:ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã«å«ã¾ã‚Œã‚‹ã‚ªãƒ–ジェクトãŒå¤šã™ãŽã¾ã™ã€‚オブジェクトをã„ãã¤ã‹ãƒœãƒƒã‚¯ã‚¹ã«ã¾ã¨ã‚ã€ã‚ªãƒ–ジェクト数を200以下ã«æ¸›ã‚‰ã—ã¦ãã ã•ã„。 + <string name="MarketplaceLive"> + リスト掲載済㿠</string> - <string name="Marketplace Error Folder Depth"> - エラー:ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ãƒã‚¹ãƒˆå…¥ã‚Šãƒ•ã‚©ãƒ«ãƒ€ã®éšŽå±¤ãŒå¤šã™ãŽã¾ã™ã€‚ãƒã‚¹ãƒˆå…¥ã‚Šãƒ•ã‚©ãƒ«ãƒ€ã‚’ 3 階層以内ã«ã¾ã¨ã‚ç›´ã—ã¦ãã ã•ã„。 + <string name="MarketplaceActive"> + 有効 </string> - <string name="Marketplace Error Unsellable Item"> - エラー:ã“ã®ã‚¢ã‚¤ãƒ†ãƒ をマーケットプレイスã§è²©å£²ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + <string name="MarketplaceMax"> + 最大 </string> - <string name="Marketplace Error Internal Import"> - エラー:ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã«é–¢ã—ã¦å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰ãŠè©¦ã—ãã ã•ã„。 + <string name="MarketplaceStock"> + 在庫 + </string> + <string name="MarketplaceNoStock"> + 在庫ãªã— + </string> + <string name="MarketplaceUpdating"> + アップデートä¸... </string> <string name="Open landmarks"> ランドマークを開ã @@ -1468,6 +1561,7 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 コンテンツãªã— </string> <string name="WornOnAttachmentPoint" value=" ([ATTACHMENT_POINT] ã«è£…ç€ä¸ï¼‰"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (アクティブ)"/> <string name="PermYes"> ã¯ã„ @@ -1738,6 +1832,15 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="Invalid Attachment"> 装ç€å…ˆãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“ </string> + <string name="ATTACHMENT_MISSING_ITEM"> + エラー:アイテムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + エラー:ベースアイテムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + エラー:オブジェクトã¯ç¾åœ¨ã®ã‚¢ã‚¦ãƒˆãƒ•ã‚£ãƒƒãƒˆå†…ã«ã‚ã‚Šã¾ã™ãŒã€æ·»ä»˜ã•ã‚Œã¦ã„ã¾ã›ã‚“ + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1873,9 +1976,6 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="CompileQueueUnknownFailure"> åŽŸå› ä¸æ˜Žã®å¤±æ•—ã«ã‚ˆã‚Šãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ãŒã§ãã¾ã›ã‚“ </string> - <string name="CompileNoExperiencePerm"> - [EXPERIENCE] 体験ã«ã‚ˆã‚‹ [SCRIPT] スクリプトã®ã‚¹ã‚ップ。 - </string> <string name="CompileQueueTitle"> リコンパイル進行 </string> @@ -1909,6 +2009,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="SaveComplete"> ä¿å˜å®Œäº†ã€‚ </string> + <string name="UploadFailed"> + ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ãŒå¤±æ•—ã—ã¾ã—ãŸ: + </string> <string name="ObjectOutOfRange"> スクリプト(オブジェクトãŒç¯„囲外ã«ã‚ã‚Šã¾ã™ï¼‰ </string> @@ -1918,6 +2021,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="GroupsNone"> ãªã— </string> + <string name="CompileNoExperiencePerm"> + [EXPERIENCE] 体験ã«ã‚ˆã‚‹ [SCRIPT] スクリプトã®ã‚¹ã‚ップ。 + </string> <string name="Group" value=" (グループ)"/> <string name="Unknown"> (ä¸æ˜Žï¼‰ @@ -5069,6 +5175,9 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="Command_Marketplace_Label"> マーケットプレイス </string> + <string name="Command_MarketplaceListings_Label"> + マーケットプレイス + </string> <string name="Command_MiniMap_Label"> ミニマップ </string> @@ -5156,6 +5265,9 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="Command_Marketplace_Tooltip"> ショッピングã«å‡ºæŽ›ã‘ã‚‹ </string> + <string name="Command_MarketplaceListings_Tooltip"> + 創作アイテムを販売ã—ã¾ã™ + </string> <string name="Command_MiniMap_Tooltip"> è¿‘ãã®äººã‚’表示ã™ã‚‹ </string> @@ -5267,6 +5379,18 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="UserDictionary"> [User] </string> + <string name="logging_calls_disabled_log_empty"> + 会話ã¯ãƒã‚°ã«è¨˜éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。ãƒã‚°ã®è¨˜éŒ²ã‚’開始ã™ã‚‹ã«ã¯ã€ã€Œç’°å¢ƒè¨å®šã€>「ãƒãƒ£ãƒƒãƒˆã€ã§ã€Œä¿å˜: ãƒã‚°ã®ã¿ã€ã¾ãŸã¯ã€Œä¿å˜: ãƒã‚°ã¨ä¼šè©±ã®ãƒ†ã‚ストã€ã‚’é¸æŠžã—ã¾ã™ã€‚ + </string> + <string name="logging_calls_disabled_log_not_empty"> + ã“れ以上ã®ä¼šè©±ã¯è¨˜éŒ²ã•ã‚Œã¾ã›ã‚“。ãƒã‚°ã®è¨˜éŒ²ã‚’å†é–‹ã™ã‚‹ã«ã¯ã€ã€Œç’°å¢ƒè¨å®šã€>「ãƒãƒ£ãƒƒãƒˆã€ã§ã€Œä¿å˜: ãƒã‚°ã®ã¿ã€ã¾ãŸã¯ã€Œä¿å˜: ãƒã‚°ã¨ä¼šè©±ã®ãƒ†ã‚ストã€ã‚’é¸æŠžã—ã¾ã™ã€‚ + </string> + <string name="logging_calls_enabled_log_empty"> + ãƒã‚°ã‚¤ãƒ³æ™‚ã®ä¼šè©±ã¯ã‚ã‚Šã¾ã›ã‚“。誰ã‹ã«ã”連絡ã—ãŸå¾Œã€ã¾ãŸã¯èª°ã‹ãŒã‚ãªãŸã«é€£çµ¡ã—ãŸå¾Œã€ãƒã‚°ã‚¨ãƒ³ãƒˆãƒªãŒã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ + </string> + <string name="loading_chat_logs"> + ãƒãƒ¼ãƒ‰ä¸... + </string> <string name="experience_tools_experience"> 体験 </string> @@ -5348,16 +5472,4 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="ExperiencePermissionShort12"> æ¨©é™ </string> - <string name="logging_calls_disabled_log_empty"> - 会話ã¯ãƒã‚°ã«è¨˜éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。ãƒã‚°ã®è¨˜éŒ²ã‚’開始ã™ã‚‹ã«ã¯ã€ã€Œç’°å¢ƒè¨å®šã€>「ãƒãƒ£ãƒƒãƒˆã€ã§ã€Œä¿å˜: ãƒã‚°ã®ã¿ã€ã¾ãŸã¯ã€Œä¿å˜: ãƒã‚°ã¨ä¼šè©±ã®ãƒ†ã‚ストã€ã‚’é¸æŠžã—ã¾ã™ã€‚ - </string> - <string name="logging_calls_disabled_log_not_empty"> - ã“れ以上ã®ä¼šè©±ã¯è¨˜éŒ²ã•ã‚Œã¾ã›ã‚“。ãƒã‚°ã®è¨˜éŒ²ã‚’å†é–‹ã™ã‚‹ã«ã¯ã€ã€Œç’°å¢ƒè¨å®šã€>「ãƒãƒ£ãƒƒãƒˆã€ã§ã€Œä¿å˜: ãƒã‚°ã®ã¿ã€ã¾ãŸã¯ã€Œä¿å˜: ãƒã‚°ã¨ä¼šè©±ã®ãƒ†ã‚ストã€ã‚’é¸æŠžã—ã¾ã™ã€‚ - </string> - <string name="logging_calls_enabled_log_empty"> - ãƒã‚°ã‚¤ãƒ³æ™‚ã®ä¼šè©±ã¯ã‚ã‚Šã¾ã›ã‚“。誰ã‹ã«ã”連絡ã—ãŸå¾Œã€ã¾ãŸã¯èª°ã‹ãŒã‚ãªãŸã«é€£çµ¡ã—ãŸå¾Œã€ãƒã‚°ã‚¨ãƒ³ãƒˆãƒªãŒã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ - </string> - <string name="loading_chat_logs"> - ãƒãƒ¼ãƒ‰ä¸... - </string> </strings> diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index 61a72ff27de35ec7a4870df323b5e882d4afaf6c..f5098ba33cd38e2adfce57491cf1d06cdca51515 100755 --- a/indra/newview/skins/default/xui/pl/floater_about.xml +++ b/indra/newview/skins/default/xui/pl/floater_about.xml @@ -1,81 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="O [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - Buduj z [COMPILER] wersjÄ… [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - PoÅ‚ożenie [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] w [REGION] zlokalizowanym w <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - Procesor: [CPU] -Pamięć: [MEMORY_MB] MB -Wersja OS: [OS_VERSION] -Sprzedawca karty graficznej: [GRAPHICS_CARD_VENDOR] -Karta graficzna: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows Sterownik karty graficznej: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - Wersja OpenGL: [OPENGL_VERSION] - -Wersja libcurl: [LIBCURL_VERSION] -Wersja dekodera J2C: [J2C_VERSION] -Wersja Audio Driver: [AUDIO_DRIVER_VERSION] -Wersja Qt Webkit: [QT_WEBKIT_VERSION] -Wersja serwera gÅ‚osu: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (żadne) - </floater.string> - <floater.string name="AboutTraffic"> - Stracone pakiety: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="Kopiuj do schowka" name="copy_btn"/> </panel> <panel label="PodziÄ™kowania" name="credits_panel"> - <text_editor name="credits_editor"> - Second Life zostaÅ‚o stworzone dla Was przez Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, and many others. - -PodziÄ™kowania dla nastÄ™pujÄ…cych Rezydentów za pomoc w pracy nad obecnÄ… wersjÄ… Second Life: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. - + <text name="linden_intro">Second Life zostaÅ‚o dla Ciebie stworzone przez Lindenów, +z wkÅ‚adem open source od::</text> + </panel> + <panel label="Licencje" name="licenses_panel"> + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + APR Copyright (C) 2011 The Apache Software Foundation + Collada DOM Copyright 2006 Sony Computer Entertainment Inc. + cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) + DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. + expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. + FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. + GL Copyright (C) 1999-2004 Brian Paul. + GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. + google-perftools Copyright (c) 2005, Google Inc. + Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeglib Copyright (C) 1991-1998, Thomas G. Lane. + ogg/vorbis Copyright (C) 2002, Xiphophorus + OpenSSL Copyright (C) 1998-2008 The OpenSSL Project. + PCRE Copyright (c) 1997-2012 University of Cambridge + SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga + SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + xmlrpc-epi Copyright (C) 2000 Epinions, Inc. + zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. + This software contains source code provided by NVIDIA Corporation. -"The work goes on, the cause endures, the hope still lives, and the dreams shall never die" - Edward Kennedy - </text_editor> - </panel> - <panel label="Licencje" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - Wszystkie prawa zastrzeżone. Szczegóły w pliku licenses.txt. + All rights reserved. See licenses.txt for details. - Programowanie dźwiÄ™ku czatu: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_associate_listing.xml b/indra/newview/skins/default/xui/pl/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5464dd59b6c69030a23116979160cbf52463b61 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="PRZYPISANE PRZEDMIOTY"> + <text name="message">ID przedmiotu:</text> + <line_editor name="listing_id">Wpisz tutaj ID</line_editor> + <button label="OK" name="OK"/> + <button label="Anuluj" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/pl/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..80e481c0bcf53a006664dbcad914de0d1b99cfe0 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="USTAW UNIESIENIE"> + <slider label="UnieÅ›" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml index 054d74b2347a4c286c75136c59e3794bbbfd5826..97d13c4dfeea53e0b68acb63f2fb854ac7fe555e 100755 --- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="WÅAÅšCIWOÅšCI OBIEKTÓW W SZAFIE"> - <floater.string name="unknown"> - (nieznany) - </floater.string> - <floater.string name="public"> - (publiczny) - </floater.string> - <floater.string name="you_can"> - Opcje: - </floater.string> - <floater.string name="owner_can"> - WÅ‚aÅ›ciciel może: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nazwa: - </text> - <text name="LabelItemDescTitle"> - Opis: - </text> - <text name="LabelCreatorTitle"> - Twórca: - </text> + <floater.string name="unknown">(nieznany)</floater.string> + <floater.string name="public">(publiczny)</floater.string> + <floater.string name="you_can">Opcje:</floater.string> + <floater.string name="owner_can">WÅ‚aÅ›ciciel może:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nazwa:</text> + <text name="LabelItemDescTitle">Opis:</text> + <text name="LabelCreatorTitle">Twórca:</text> <button label="Profil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - WÅ‚aÅ›ciciel: - </text> + <text name="LabelOwnerTitle">WÅ‚aÅ›ciciel:</text> <button label="Profil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Nabyte: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Ty: - </text> + <text name="LabelAcquiredTitle">Nabyte:</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">Ty:</text> <check_box label="Edytuj" name="CheckOwnerModify"/> <check_box label="Kopiuj" name="CheckOwnerCopy"/> <check_box label="Odsprzedaż" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Każdy: - </text> + <text name="AnyoneLabel">Każdy:</text> <check_box label="Kopiuj" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupa: - </text> + <text name="GroupLabel">Grupa:</text> <check_box label="UdostÄ™pnij" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - NastÄ™pny wÅ‚aÅ›ciciel: - </text> + <text name="NextOwnerLabel">NastÄ™pny wÅ‚aÅ›ciciel:</text> <check_box label="Edytuj" name="CheckNextOwnerModify"/> <check_box label="Kopiuje" name="CheckNextOwnerCopy"/> <check_box label="Odsprzedaż" name="CheckNextOwnerTransfer"/> <check_box label="Sprzedaż" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopiuj" name="Copy"/> - <combo_box.item label="Oryginalny" name="Original"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopia" name="Copy"/> + <combo_box.item label="Zawartość" name="Contents"/> + <combo_box.item label="OryginaÅ‚" name="Original"/> </combo_box> <spinner label="Cena:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..8b0cf31a9ab396883a2b9bb9f3aeb8a13abb2f5e --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="WÅAÅšCIWOÅšCI"/> diff --git a/indra/newview/skins/default/xui/pl/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/pl/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..1917a4985b8875e55579ecb9874005b75b1c95fd --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="RZECZY NA MARKETPLACE"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Wczytywanie...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/pl/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..826c72f2cd9c06e8c43ec112049b28a492d1ed3a --- /dev/null +++ b/indra/newview/skins/default/xui/pl/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Sprawdź przedmioty na Marketplace"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_openobject.xml b/indra/newview/skins/default/xui/pl/floater_openobject.xml index 8e94ae821cc2caf0505c8deacae3c1a8a7c3452a..20c9760e6f39d7e1013c2e68111e22e83cdda9aa 100755 --- a/indra/newview/skins/default/xui/pl/floater_openobject.xml +++ b/indra/newview/skins/default/xui/pl/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Kopiuj do Szafy" label_selected="Kopiuj do Szafy" name="copy_to_inventory_button"/> - <button label="Kopiuj i zalóż" label_selected="Kopiuj i załóż" name="copy_and_wear_button"/> + <text name="border_note"> + Kopiuj do Szafy i załóż + </text> + <button label="Dodaj do stroju" label_selected="Dodaj do stroju" name="copy_and_wear_button"/> + <button label="ZastÄ…p strój" label_selected="ZastÄ…p strój" name="copy_and_replace_button"/> + <button label="Tylko skopiuj do Szafy" label_selected="Tylko skopiuj do Szafy" name="copy_to_inventory_button"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_pay.xml b/indra/newview/skins/default/xui/pl/floater_pay.xml index 38fe5286a4ee822049d2e9c27405d5386d2d0c51..cb9c0bd552ac585b778cbac484e90b914a85a3a2 100755 --- a/indra/newview/skins/default/xui/pl/floater_pay.xml +++ b/indra/newview/skins/default/xui/pl/floater_pay.xml @@ -1,26 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - ZapÅ‚ać grupie - </string> - <string name="payee_resident"> - ZapÅ‚ać Rezydentowi - </string> - <text name="payee_label"> - ZapÅ‚ać: - </text> - <icon name="icon_person" tool_tip="Osoba"/> - <text name="payee_name"> - Przetestuj nazwÄ™, która jest bardzo dÅ‚uga aby sprawdzić skracanie. - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - lub wybierz kwotÄ™: - </text> - <line_editor left="52" name="amount"/> - <button label="ZapÅ‚ać" label_selected="ZapÅ‚ać" name="pay btn"/> - <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + <string name="payee_group">ZapÅ‚ać grupie</string> + <string name="payee_resident">ZapÅ‚ać Rezydentowi</string> + <text name="paying_text">PÅ‚acisz:</text> + <text name="payee_name">Przetestuj nazwÄ™, która jest bardzo dÅ‚uga aby sprawdzić skracanie.</text> + <panel label="Szukaj" name="PatternsPanel"> + <button label="PÅ‚ać 1L$" label_selected="PÅ‚ać 1L$" name="fastpay 1"/> + <button label="PÅ‚ać 5L$" label_selected="PÅ‚ać 5L$" name="fastpay 5"/> + <button label="PÅ‚ać 10L$" label_selected="PÅ‚ać 10L$" name="fastpay 10"/> + <button label="PÅ‚ać 20L$" label_selected="PÅ‚ać 20L$" name="fastpay 20"/> + </panel> + <panel label="Szukaj" name="InputPanel"> + <text name="amount text">Inna kwota:</text> + <button label="ZapÅ‚ać" label_selected="ZapÅ‚ać" name="pay btn"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_pay_object.xml b/indra/newview/skins/default/xui/pl/floater_pay_object.xml index bf88348c87e64cb974c5926104a8f82ed970d0ac..d196e08feec3bf4922901ce06d77a95251383582 100755 --- a/indra/newview/skins/default/xui/pl/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string halign="left" name="payee_group" width="100"> - ZapÅ‚ać grupie - </string> - <string halign="left" name="payee_resident" width="120"> - ZapÅ‚ać Rezydentowi - </string> - <icon name="icon_person" tool_tip="Osoba"/> - <text left="125" name="payee_name"> - Ericacita Moostopolison - </text> - <text halign="left" left="5" name="object_name_label" width="95"> - Poprzez obiekt: - </text> + <string halign="left" name="payee_group" width="100">ZapÅ‚ać grupie</string> + <string halign="left" name="payee_resident" width="120">ZapÅ‚ać Rezydentowi</string> + <text name="paying_text">PÅ‚acisz:</text> + <text left="125" name="payee_name">Ericacita Moostopolison</text> + <text halign="left" left="5" name="object_name_label" width="95">Poprzez obiekt:</text> <icon name="icon_object" tool_tip="Obiekt"/> - <text left="105" name="object_name_text"> - Poprzez obiekt - </text> - <button label="L$1" label_selected="L$1" left="105" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" left="190" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" left="105" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" left="190" name="fastpay 20"/> - <text halign="left" left="5" name="amount text"> - lub wybierz kwotÄ™: - </text> - <line_editor left="50" name="amount" width="50"/> - <button label="ZapÅ‚ać" label_selected="ZapÅ‚ać" name="pay btn"/> - <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + <text left="105" name="object_name_text">Poprzez obiekt</text> + <panel label="Szukaj" name="PatternsPanel"> + <button label="PÅ‚ać 1L$" label_selected="PÅ‚ać 1L$" name="fastpay 1"/> + <button label="PÅ‚ać 5L$" label_selected="PÅ‚ać 5L$" name="fastpay 5"/> + <button label="PÅ‚ać 10L$" label_selected="PÅ‚ać 10L$" name="fastpay 10"/> + <button label="PÅ‚ać 20L$" label_selected="PÅ‚ać 20L$" name="fastpay 20"/> + </panel> + <panel label="Szukaj" name="InputPanel"> + <text name="amount text">Inna kwota:</text> + <button label="ZapÅ‚ać" label_selected="ZapÅ‚ać" name="pay btn"/> + <button label="Anuluj" label_selected="Anuluj" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml index 163b3a231e266d7dbc4b77d765932f973d38273c..ecfc341d735e555f1133ad1041c9ab11cd0a2b8e 100755 --- a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Mój wyglÄ…d" name="Change Outfit"/> <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/> <menu_item_call label="Edytuj mój ksztaÅ‚t" name="Edit My Shape"/> + <menu_item_call label="Uniesienie" name="Hover Height"/> <menu_item_call label="Moi znajomi" name="Friends..."/> <menu_item_call label="Moje grupy" name="Groups..."/> <menu_item_call label="Mój profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml index 8eb501c5b8b48a02104499b7c80d85a930583f25..dafad57d982d4511a36fb888f7afd8affd8f04b7 100755 --- a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Mój wyglÄ…d" name="Chenge Outfit"/> <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/> <menu_item_call label="Edytuj mój ksztaÅ‚t" name="Edit My Shape"/> + <menu_item_call label="Uniesienie" name="Hover Height"/> <menu_item_call label="Moi znajomi" name="Friends..."/> <menu_item_call label="Moje grupy" name="Groups..."/> <menu_item_call label="Mój profil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml index 5492f78b26c95e5f0f32edc1f7cc5c17d4576921..a0c2b2c6c151b578cdea4856bd235457d723a3fc 100755 --- a/indra/newview/skins/default/xui/pl/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Utwórz nowy przedmiot" name="Marketplace Create Listing"/> + <menu_item_call label="Przypisz" name="Marketplace Associate Listing"/> + <menu_item_call label="Pobierz ponownie (odÅ›wież)" name="Marketplace Get Listing"/> + <menu_item_call label="Zweryfikuj" name="Marketplace Check Listing"/> + <menu_item_call label="Edytuj przedmiot" name="Marketplace Edit Listing"/> + <menu_item_call label="Listuj" name="Marketplace List"/> + <menu_item_call label="UsuÅ„ z listy" name="Marketplace Unlist"/> + <menu_item_call label="Aktywuj" name="Marketplace Activate"/> + <menu_item_call label="Dezaktywuj" name="Marketplace Deactivate"/> <menu_item_call label="UdostÄ™pnij" name="Share"/> <menu_item_call label="Kupuj" name="Task Buy"/> <menu_item_call label="Otwórz" name="Task Open"/> @@ -81,5 +90,7 @@ <menu_item_call label="Edytuj" name="Wearable Edit"/> <menu_item_call label="Dodaj" name="Wearable Add"/> <menu_item_call label="Zdejmij" name="Take Off"/> + <menu_item_call label="Kopiuj do przedmiotów Marketplace" name="Marketplace Copy"/> + <menu_item_call label="PrzenieÅ› do przedmiotów Marketplace" name="Marketplace Move"/> <menu_item_call label="--brak opcji--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_marketplace_view.xml b/indra/newview/skins/default/xui/pl/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..b9480745016979095ea8ade60dd2df576b2ab30e --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Sortuj wedÅ‚ug iloÅ›ci (rosnÄ…co)" name="sort_by_stock_amount"/> + <menu_item_check label="Pokaż tylko foldery" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index a354cca9ad9128e4063de5e9d93c53ec10ac65ae..ef3fe719456a1ab09fbe12e402c1dbac837d4484 100755 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -1,48 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> <menu label="Ja" name="Me"> - <menu_item_call label="Ustawienia" name="Preferences"/> - <menu_item_call label="Dashboard" name="Manage My Account"/> - <menu_item_call label="Kup L$" name="Buy and Sell L$"/> <menu_item_call label="Mój Profil" name="Profile"/> <menu_item_call label="Mój wyglÄ…d" name="ChangeOutfit"/> <menu_item_check label="Moja Szafa" name="Inventory"/> - <menu_item_check label="Moja Szafa" name="ShowSidetrayInventory"/> - <menu_item_check label="Moje gesturki" name="Gestures"/> - <menu_item_check label="Mój gÅ‚os" name="ShowVoice"/> <menu label="Ruch" name="Movement"> <menu_item_call label="UsiÄ…dź" name="Sit Down Here"/> <menu_item_check label="Zacznij latać" name="Fly"/> <menu_item_check label="Zawsze biegnij" name="Always Run"/> <menu_item_call label="Zatrzymaj animacje" name="Stop Animating My Avatar"/> </menu> - <menu label="Mój Status" name="Status"> - <menu_item_call label="Tryb oddalenia" name="Set Away"/> - <menu_item_call label="Tryb pracy" name="Set Busy"/> - </menu> + <menu label="Mój Status" name="Status"/> + <menu_item_call label="Kup L$" name="Buy and Sell L$"/> + <menu_item_call label="Moje rzeczy na Marketplace" name="MarketplaceListings"/> + <menu_item_call label="Dashboard" name="Manage My Account"/> + <menu_item_call label="Ustawienia" name="Preferences"/> <menu_item_call label="WyÅ‚Ä…cz [APP_NAME]" name="Quit"/> </menu> <menu label="Komunikacja" name="Communicate"> - <menu_item_call label="Znajomi" name="My Friends"/> - <menu_item_call label="Grupy" name="My Groups"/> <menu_item_check label="Czat lokalny" name="Nearby Chat"/> - <menu_item_call label="Osoby w pobliżu" name="Active Speakers"/> + <menu_item_check label="Znajomi" name="My Friends"/> + <menu_item_check label="Grupy" name="My Groups"/> + <menu_item_check label="Osoby w pobliżu" name="Active Speakers"/> </menu> <menu label="Åšwiat" name="World"> - <menu_item_check label="Mini-Mapa" name="Mini-Map"/> + <menu_item_call label="ZapamiÄ™taj to miejsce (LM)" name="Create Landmark Here"/> <menu_item_check label="Mapa Åšwiata" name="World Map"/> + <menu_item_check label="Mini-Mapa" name="Mini-Map"/> <menu_item_check label="Szukaj" name="Search"/> + <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/> + <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> <menu_item_call label="Zrób zdjÄ™cie" name="Take Snapshot"/> - <menu_item_call label="ZapamiÄ™taj to miejsce (LM)" name="Create Landmark Here"/> - <menu_item_separator/> <menu_item_call label="Profil miejsca" name="Place Profile"/> <menu_item_call label="O posiadÅ‚oÅ›ci" name="About Land"/> <menu_item_call label="Region/MajÄ…tek" name="Region/Estate"/> - <menu_item_call label="Kup posiadÅ‚ość" name="Buy Land"/> <menu_item_call label="Moje posiadÅ‚oÅ›ci" name="My Land"/> + <menu_item_call label="Kup posiadÅ‚ość" name="Buy Land"/> <menu label="Pokaż" name="LandShow"> - <menu_item_check label="Ustawienia ruchu" name="Movement Controls"/> - <menu_item_check label="Zobacz ustawienia" name="Camera Controls"/> <menu_item_check label="Linie bana" name="Ban Lines"/> <menu_item_check label="Emitery" name="beacons"/> <menu_item_check label="Granice posiadÅ‚oÅ›ci" name="Property Lines"/> @@ -51,15 +45,11 @@ <menu_item_check label="WÅ‚aÅ›ciwoÅ›ci posiadÅ‚oÅ›ci" name="Parcel Properties"/> <menu_item_check label="Menu Zaawansowane" name="Show Advanced Menu"/> </menu> - <menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/> - <menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> <menu label="SÅ‚oÅ„ce" name="Sun"> - <menu_item_call label="Wschód SÅ‚oÅ„ca" name="Sunrise"/> - <menu_item_call label="PoÅ‚udnie" name="Noon"/> - <menu_item_call label="Zachód SÅ‚oÅ„ca" name="Sunset"/> - <menu_item_call label="Północ" name="Midnight"/> - <menu_item_call label="Używaj czasu Regionu" name="Revert to Region Default"/> - <menu_item_call label="Edytor Å›rodowiska" name="Environment Editor"/> + <menu_item_check label="Wschód SÅ‚oÅ„ca" name="Sunrise"/> + <menu_item_check label="PoÅ‚udnie" name="Noon"/> + <menu_item_check label="Zachód SÅ‚oÅ„ca" name="Sunset"/> + <menu_item_check label="Północ" name="Midnight"/> </menu> </menu> <menu label="Buduj" name="BuildTools"> @@ -86,7 +76,6 @@ <menu_item_call label="Kup" name="Menu Object Buy"/> <menu_item_call label="Weź" name="Menu Object Take"/> <menu_item_call label="Weź kopiÄ™" name="Take Copy"/> - <menu_item_call label="Zapisz obiekt do Szafy" name="Save Object Back to My Inventory"/> <menu_item_call label="Zapisz do treÅ›ci obiektu" name="Save Object Back to Object Contents"/> <menu_item_call label="Zwróć obiekt" name="Return Object back to Owner"/> </menu> @@ -116,17 +105,14 @@ <menu_item_call label="dźwiÄ™k (L$[COST])..." name="Upload Sound"/> <menu_item_call label="animacjÄ™ (L$[COST])..." name="Upload Animation"/> <menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/> - <menu_item_call label="Ustaw domyÅ›lne pozwolenia Å‚adowania" name="perm prefs"/> </menu> <menu_item_call label="Cofnij" name="Undo"/> <menu_item_call label="Ponów" name="Redo"/> </menu> <menu label="Pomoc" name="Help"> - <menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/> - <menu_item_check label="WÅ‚Ä…cz podpowiedzi" name="Enable Hints"/> <menu_item_call label="Złóż Raport o Nadużyciu" name="Report Abuse"/> <menu_item_call label="ZgÅ‚oÅ› bÅ‚Ä™dy klienta" name="Report Bug"/> - <menu_item_call label="Zderzenia, popchniÄ™cia & uderzenia" name="Bumps, Pushes &amp; Hits"/> + <menu_item_call label="Zderzenia, popchniÄ™cia i uderzenia" name="Bumps, Pushes &amp; Hits"/> <menu_item_call label="O [APP_NAME]" name="About Second Life"/> </menu> <menu label="Zaawansowane" name="Advanced"> @@ -147,7 +133,6 @@ <menu_item_check label="Ukryj czÄ…steczki" name="Hide Particles"/> <menu_item_check label="Ukryj zaznaczone" name="Hide Selected"/> <menu_item_check label="Pokaż przeźroczyste obiekty" name="Highlight Transparent"/> - <menu_item_check label="Pokaż zaÅ‚Ä…czniki HUD" name="Show HUD Attachments"/> <menu_item_check label="Pokaż celownik myszki" name="ShowCrosshairs"/> </menu> <menu label="Rodzaje renderowania" name="Rendering Types"> @@ -178,7 +163,6 @@ <menu_item_call label="Wyczyść bufor danych grupy" name="ClearGroupCache"/> <menu_item_check label="WygÅ‚adzanie ruchu myszki" name="Mouse Smoothing"/> <menu label="Skróty" name="Shortcuts"> - <menu_item_call label="Zwolnij klawisze" name="Release Keys"/> <menu_item_check label="Pokaż menu Zaawansowane - skrót" name="Show Advanced Menu - legacy shortcut"/> <menu_item_call label="Zamknij okno" name="Close Window"/> <menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/> @@ -199,8 +183,7 @@ <menu_item_check label="Konsola tekstur" name="Texture Console"/> <menu_item_check label="Debugowanie zdarzeÅ„ konsoli" name="Debug Console"/> <menu_item_call label="Konsola powiadomieÅ„" name="Notifications"/> - <menu_item_check label="Konsola rozmiaru tekstury" name="Texture Size"/> - <menu_item_check label="Konsola kategorii tekstur" name="Texture Category"/> + <menu_item_check label="Konsola debugowania regionu" name="Region Debug Console"/> <menu_item_check label="Szybkie timery" name="Fast Timers"/> <menu_item_check label="Pamięć" name="Memory"/> <menu_item_call label="Info Regionu do debugowania konsoli" name="Region Info to Debug Console"/> @@ -240,12 +223,10 @@ <menu_item_check label="OÅ›wietlenie i cienie" name="Advanced Lighting Model"/> <menu_item_check label="Cienie SÅ‚oÅ„ca/Księżyca/Projektory" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO and wygÅ‚adzanie cienia" name="SSAO and Shadow Smoothing"/> - <menu_item_check label="Globalne oÅ›wietlenie (eksperymentalne)" name="Global Illumination"/> <menu_item_check label="Automatyczne maski alpha (deferred)" name="Automatic Alpha Masks (deferred)"/> <menu_item_check label="Automatyczne maski alpha (non-deferred)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Tekstury animacji" name="Animation Textures"/> <menu_item_check label="WyÅ‚Ä…cz tekstury" name="Disable Textures"/> - <menu_item_check label="Texture Atlas (experimental)" name="Texture Atlas"/> <menu_item_check label="Renderowania zaÅ‚Ä…czonego Å›wiatÅ‚a" name="Render Attached Lights"/> <menu_item_check label="Renderowanie zaÅ‚Ä…czonych czÄ…steczek" name="Render Attached Particles"/> <menu_item_check label="WyÅ›wietlaj obiekty odblaskowe" name="Hover Glow Objects"/> @@ -253,7 +234,7 @@ <menu label="Sieć" name="Network"> <menu_item_check label="Zatrzymaj awatara" name="AgentPause"/> <menu_item_call label="Upuść pakiet pamiÄ™ci" name="Drop a Packet"/> - </menu> + </menu> <menu label="Åšwiat" name="DevelopWorld"> <menu_item_check label="DomyÅ›lne ustawienia Å›rodowiska Regionu" name="Sim Sun Override"/> <menu_item_check label="Ustalona pogoda" name="Fixed Weather"/> @@ -263,8 +244,6 @@ <menu_item_call label="Test przeglÄ…darki mediów" name="Web Browser Test"/> <menu_item_call label="PrzeglÄ…darka zawartoÅ›ci strony" name="Web Content Browser"/> <menu_item_call label="Drukuj zaznaczone informacje o obiekcie" name="Print Selected Object Info"/> - <menu_item_call label="Statystyki pamiÄ™ci" name="Memory Stats"/> - <menu_item_check label="Konsola debugowania regionu" name="Region Debug Console"/> <menu_item_check label="Debugowanie zdarzeÅ„ klikania" name="Debug Clicks"/> <menu_item_check label="Debugowanie zdarzeÅ„ myszy" name="Debug Mouse Events"/> </menu> @@ -289,7 +268,6 @@ </menu> <menu_item_call label="Powrót do domyÅ›lnych parametrów" name="Force Params to Default"/> <menu_item_check label="Info o animacji" name="Animation Info"/> - <menu_item_check label="Wolne animacje" name="Slow Motion Animations"/> <menu_item_check label="WyÅ‚Ä…cz poziom detalu" name="Disable LOD"/> <menu_item_check label="Pokaż szczegóły kolizji" name="Show Collision Skeleton"/> <menu_item_check label="WyÅ›wietl cel agenta" name="Display Agent Target"/> diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml index f255b1b8ea4796ce9c08254b2971b02e37b57a5b..62fda0d60184a3f37c0ca03719bc5078af99b8ef 100755 --- a/indra/newview/skins/default/xui/pl/notifications.xml +++ b/indra/newview/skins/default/xui/pl/notifications.xml @@ -28,7 +28,7 @@ <template name="okcancelignore"> <form> <button name="OK_okcancelignore" text="$yestext"/> - <button name="Cancel_okcancelignore" text="$canceltext"/> + <button name="Cancel_okcancelignore" text="$notext"/> </form> </template> <template name="okhelpbuttons"> @@ -67,6 +67,10 @@ Szczegóły bÅ‚Ä™du: BÅ‚Ä…d o nazwie '[_NAME]' nie zostaÅ‚ odnaleziony [MESSAGE] <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> </notification> + <notification name="GenericAlertOK"> + [MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="BadInstallation"> Podczas aktualizacji [APP_NAME] wystÄ…piÅ‚ bÅ‚Ä…d. ProszÄ™ odwiedzić stronÄ™ [http://get.secondlife.com pobierz najnowsza wersjÄ™] aby Å›ciÄ…gnąć ostatniÄ… wersjÄ™ klienta. <usetemplate name="okbutton" yestext="OK"/> @@ -85,6 +89,88 @@ Upewnij siÄ™, że Twoje poÅ‚Ä…czenie z internetem dziaÅ‚a. Zapisać zmiany dotyczÄ…ce ubrania/części ciaÅ‚a? <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/> </notification> + <notification name="StockPasteFailed"> + Kopiowanie lub przeniesienie do folderu magazynowego nie powiodÅ‚o siÄ™: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Kopiowanie lub przenoszenie przedmiotów na Marketplace nie powiodÅ‚o siÄ™: + +'[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Transakcja z Marketplace nie powiodÅ‚a siÄ™: + + Powód: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Wylistowanie tego produktu lub aktywowanie folderu z wersjÄ… nie byÅ‚o możliwe. Zazwyczaj jest to spowodowane brakujÄ…cymi informacjami w formularzu z opisem przedmiotu, ale może to również wynikać z bÅ‚Ä™dów w strukturze folderów. ZmieÅ„ opis przedmiotu lub sprawdź foldery, aby znaleźć bÅ‚Ä™dy. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Listowanie na Marketplace nie powiodÅ‚o siÄ™: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Aktywacja tego folderu wersji nie powiodÅ‚a siÄ™: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + JeÅ›li kontynuujesz, to zmieni siÄ™ aktywna zawartość tego przedmiotu. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź przed zmodyfikowaniem aktywnego przedmiotu na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Przedmioty przeciÄ…gniÄ™te do okna listowania na Marketplace sÄ… przenoszone z ich oryginalnych lokalizacji, a nie kopiowane. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź, zanim przeÅ›lÄ™ na Marketplace przedmiot z mojej Szafy" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Przeniesienie lub usuniÄ™cie folderu usunie również Twój przedmiot na Marketplace. JeÅ›li chcesz, aby przedmiot byÅ‚ ciÄ…gle widoczny na Marketplace musisz przesunąć lub usunąć zawartość folderu z wersjÄ…, którÄ… chcesz zmodyfikować. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź, zanim usunÄ™ lub przeniosÄ™ przedmiot na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Nie masz praw do skopiowania jednego lub wiÄ™cej obiektów na Marketplace. Możesz je przenieść lub pozostawić. + <usetemplate canceltext="Anuluj" ignoretext="Potwierdź, zanim wyÅ›lÄ™ na Marketplace przedmioty bez praw kopiowania" name="yesnocancelbuttons" notext="Nie przenoÅ›" yestext="PrzenieÅ›"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + JeÅ›li kontynuujesz, to ten przedmiot zostanie usuniÄ™ty z listy. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź, zanim usunÄ™ z listy przedmiot na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + JeÅ›li kontynuujesz, to folder wersji tego przedmiotu zostanie zdeaktywowany. Czy chcesz kontynuować? + <usetemplate ignoretext="Potwierdź przed wyÅ‚Ä…czeniem folderu wersji dla przedmiotu na Marketplace" name="okcancelignore" notext="Anuluj" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Ten przedmiot nie może zostać zaktualizowany. +[[URL] Kliknij tutaj] aby zaktualizować go na Marketplace. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Nie możesz zaÅ‚ożyć ubraÅ„ lub części ciaÅ‚a, które znajdujÄ… siÄ™ w folderze listingów Marketplace. + </notification> + <notification name="AlertMerchantListingInvalidID"> + NieprawidÅ‚owy ID przedmiotu. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Istnieje kilka, lub żadna, wersji folderu dla tego przedmiotu. BÄ™dziesz musiaÅ‚a/ wybrać i uaktywnić jednÄ… oddzielnie później. + <usetemplate ignoretext="Powiadamiaj o aktywacji folderu wersji, gdy tworzÄ™ przedmiot z kilkoma folderami wersji" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Przedmioty z ograniczonymi zasobami magazynowymi różnych typów zostaÅ‚y rozdzielone do osobnych folderów, aby ogólna hierarchia katalogów umożliwiaÅ‚a ich listowanie. + <usetemplate ignoretext="Powiadom, gdy folder magazynowy jest dzielony przed listowaniem" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Twój przedmiot zostaÅ‚ usuniÄ™ty z listy, ponieważ nie ma go już w magazynie. Musisz dodać wiÄ™cej jego jednostek do folderu magazynowego, aby można byÅ‚o go ponownie wyÅ›wietlać na liÅ›cie. + <usetemplate ignoretext="Powiadom, gdy przedmiot jest zdjÄ™ty z listy, bo folder zasobów magazynowych jest pusty" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> W trakcie Å‚adwania tekstu dla skryptu pojawiÅ‚ siÄ™ problem z nastÄ™pujÄ…cego powodu: [REASON]. Spróbuj ponownie za kilka minut. </notification> @@ -391,6 +477,10 @@ PamiÄ™taj: Opcja ta wyczyszcza bufor danych. Zapisać zmiany? <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/> </notification> + <notification name="DeleteNotecard"> + Usunąć notkÄ™? + <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Nie można zapisać gesturki. Ta gesturka ma zbyt wiele etapów. @@ -1075,9 +1165,6 @@ Przekazać tÄ… posiadÅ‚ość o powierzchni [AREA] m² grupie '[GROUP_NAME]& <notification name="DisplaySetToSafe"> Ustawienia grafiki zostaÅ‚y zmienione do bezpiecznego poziomu ponieważ opcja -safe zostaÅ‚a wybrana. </notification> - <notification name="DisplaySetToRecommended"> - Ustawienia grafiki zostaÅ‚y zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu. - </notification> <notification name="ErrorMessage"> [ERROR_MESSAGE] <usetemplate name="okbutton" yestext="OK"/> @@ -1338,6 +1425,7 @@ W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME]. </notification> <notification name="RequiredUpdateDownloadedDialog"> W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME]. +[[INFO_URL] Information about this update] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1415,12 +1503,6 @@ Chcesz opuÅ›cić grupÄ™? Nie możesz zaoferować znajomoÅ›ci w tym momencie. Spróbuj jeszcze raz za chwilÄ™. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="BusyModeSet"> - Tryb Pracy jest wÅ‚Ä…czony. -Czat i IM bÄ™dÄ… ukryte. WysÅ‚ane IM bÄ™dÄ… otrzymywaÅ‚y TwojÄ… odpowiedź Trybu Pracy. Propozycje teleportacji bÄ™dÄ… odrzucone. -Dodatkowo, wszystkie podarowane dla Ciebie obiekty bÄ™dÄ… automatycznie zapisywane w folderze "Kosz" w Twojej szafie. - <usetemplate ignoretext="Status zmieniony na Tryb pracy" name="okignore" yestext="OK"/> - </notification> <notification name="JoinedTooManyGroupsMember"> Należysz już do maksymalnej iloÅ›ci grup. Opuść proszÄ™ przynajmniej jednÄ… grupÄ™ żeby przyjąć czÅ‚onkostwo w tej grupie, albo odmów. [NAME] oferuje Ci czÅ‚onkostwo w grupie. @@ -1434,8 +1516,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty bÄ™dÄ… automatycznie zapisywa Wyrzuć tego Rezydenta, wysyÅ‚ajÄ…c nastÄ™pujÄ…cy komunikat. <form name="form"> <input name="message"> - Administrator wylogowaÅ‚ CiÄ™. - </input> + Administrator wylogowaÅ‚ CiÄ™. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1444,8 +1526,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty bÄ™dÄ… automatycznie zapisywa Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu? <form name="form"> <input name="message"> - Administrator wylogowaÅ‚ CiÄ™. - </input> + Administrator wylogowaÅ‚ CiÄ™. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1454,8 +1536,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty bÄ™dÄ… automatycznie zapisywa Unieruchom tego Rezydenta, wysyÅ‚ajÄ…c nastÄ™pujÄ…cy komunikat. <form name="form"> <input name="message"> - Unieruchomiono CiÄ™. Nie możesz siÄ™ ruszać ani rozmawiać. Administrator skontaktuje siÄ™ z TobÄ… poprzez IM. - </input> + Unieruchomiono CiÄ™. Nie możesz siÄ™ ruszać ani rozmawiać. Administrator skontaktuje siÄ™ z TobÄ… poprzez IM. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1464,8 +1546,8 @@ Dodatkowo, wszystkie podarowane dla Ciebie obiekty bÄ™dÄ… automatycznie zapisywa Cofnij unieruchomienie tego Rezydenta, wysyÅ‚ajÄ…c nastÄ™pujÄ…cy komunikat. <form name="form"> <input name="message"> - Odblokowano CiÄ™. - </input> + Odblokowano CiÄ™. + </input> <button name="OK" text="OK"/> <button name="Cancel" text="Anuluj"/> </form> @@ -1617,14 +1699,8 @@ Kontynuować? Upewnij siÄ™, że masz zainstalowanÄ… najnowszÄ… wersjÄ™ klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="RegionEntryAccessBlocked_KB"> - Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. - -Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 - </url> - <usetemplate ignoretext="Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] </notification> <notification name="RegionEntryAccessBlocked_Notify"> Ze wzglÄ™du na Twój wiek, nie jesteÅ› uprawniony do przebywania w tym regionie. @@ -1648,15 +1724,6 @@ W celu uzyskania dostÄ™pu do tego regiony zmieÅ„ proszÄ™ swój status ustawieÅ„ Upewnij siÄ™, że masz zainstalowanÄ… najnowszÄ… wersjÄ™ klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="LandClaimAccessBlocked_KB"> - Ze wzglÄ™du na Twój wiek, nie możesz odzyskać tej posiadÅ‚oÅ›ci. - -Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 - </url> - <usetemplate ignoretext="W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz odzyskać tej posiadÅ‚oÅ›ci." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/> - </notification> <notification name="LandClaimAccessBlocked_Notify"> Ze wzglÄ™du na Twój wiek, nie możesz odzyskać tej posiadÅ‚oÅ›ci. </notification> @@ -1664,7 +1731,6 @@ Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™p W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz odzyskać tej posiadÅ‚oÅ›ci. Możesz wybrać 'ZmieÅ„ Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostÄ™p do regionu. Wówczas bÄ™dziesz w stanie znaleźć oraz mieć dostÄ™p do [REGIONMATURITY] treÅ›ci. Jeżeli zdecydujesz siÄ™ na powrót do poprzednich ustawieÅ„, wybierz Ja > Ustawienia > Główne. - <usetemplate ignoretext="Ze wzglÄ™du na Twój wiek, nie możesz odzyskać tej posiadÅ‚oÅ›ci." name="okcancelignore" notext="Zamknij" yestext="ZmieÅ„ Ustawienia"/> </notification> <notification name="LandBuyAccessBlocked"> Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku. @@ -1672,15 +1738,6 @@ Możesz wybrać 'ZmieÅ„ Ustawienia' by dokonać zmian w ustawieniach T Upewnij siÄ™, że masz zainstalowanÄ… najnowszÄ… wersjÄ™ klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="LandBuyAccessBlocked_KB"> - Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci. - -Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™pu do regionów z podanym rodzajem treÅ›ci jakÄ… zawiera. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 - </url> - <usetemplate ignoretext="Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/> - </notification> <notification name="LandBuyAccessBlocked_Notify"> Ze wzglÄ™du na Twój wiek, nie możesz kupić tej posiadÅ‚oÅ›ci. </notification> @@ -1688,7 +1745,6 @@ Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać wiÄ™cej informacji na temat dostÄ™p W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz kupić tej posiadÅ‚oÅ›ci. Możesz wybrać 'ZmieÅ„ Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostÄ™p do regionu. Wówczas bÄ™dziesz w stanie znaleźć oraz mieć dostÄ™p do [REGIONMATURITY] treÅ›ci. Jeżeli zdecydujesz siÄ™ na powrót do poprzednich ustawieÅ„, wybierz Ja > Ustawienia > Główne. - <usetemplate ignoretext="W zwiÄ…zku ze statusem ustawieÅ„ Twojego wieku, nie możesz kupić tej posiadÅ‚oÅ›ci." name="okcancelignore" notext="Zamknij" yestext="ZmieÅ„ Ustawienia"/> </notification> <notification name="TooManyPrimsSelected"> Zbyt wiele wybranych obiektów. Wybierz [MAX_PRIM_COUNT] lub mniej i spróbuj ponownie @@ -1849,6 +1905,10 @@ Przenieść obiekty szafy? <ignore name="ignore" text="Opcja ZapÅ‚ać Obiektowi zostaÅ‚a aktywowana podczas budowania obiektów bez skryptu z funkcjÄ… money()."/> </form> </notification> + <notification name="PayConfirmation"> + Potwierdź, że na pewno chcesz zapÅ‚acić [AMOUNT]L$ dla [TARGET]. + <usetemplate ignoretext="Potwierdź przed pÅ‚aceniem (kwoty ponad 200 L$)" name="okcancelignore" notext="Anuluj" yestext="PÅ‚ać"/> + </notification> <notification name="OpenObjectCannotCopy"> W tym obiekcie nie ma elementów które możesz skopiować. </notification> @@ -1918,16 +1978,6 @@ Chcesz go zamienić na wybrany obiekt? <button ignore="Nie zamieniaj" name="No" text="Anuluj"/> </form> </notification> - <notification label="Ostrzeżenie Trybu Pracy" name="BusyModePay"> - JesteÅ› w Trybie pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tÄ… opÅ‚atÄ™. - -Chcesz wyÅ‚Ä…czyć Tryb pracy przed zakoÅ„czeniem tej tranzakcji? - <form name="form"> - <ignore name="ignore" save_option="true" text="JesteÅ› w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tÄ… opÅ‚atÄ™. Chcesz wyÅ‚Ä…czyć Tryb Pracy przed zakoÅ„czeniem tej transakcji?"/> - <button ignore="Zawsz wyÅ‚Ä…czaj tryb pracy" name="Yes" text="OK"/> - <button ignore="Nie wyÅ‚Ä…czaj trybu pracy" name="No" text="Anuluj"/> - </form> - </notification> <notification name="ConfirmDeleteProtectedCategory"> Ten folder '[FOLDERNAME]' to folder systemowy. UsuniÄ™cie foldera systemowego spowoduje niestabilność. Czy na pewno chcesz go skasować? <usetemplate ignoretext="Potwierdź zanim folder systemu zostanie skasowany" name="okcancelignore" notext="Anuluj" yestext="OK"/> @@ -1965,10 +2015,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym Å‚atwy dostÄ™p do t Chcesz zmienić zapisane ustawienia? <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> </notification> - <notification name="WLDeletePresetAlert"> - Chcesz usunąć [SKY]? - <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> - </notification> <notification name="WLNoEditDefault"> Nie możesz edytować lub usunąć domyÅ›lnych ustawieÅ„. </notification> @@ -1979,35 +2025,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym Å‚atwy dostÄ™p do t Efekt post-procesu już istnieje. Chcesz zapisać nowy na jego miejsce? <usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/> </notification> - <notification name="NewSkyPreset"> - Nazwij nowe niebo. - <form name="form"> - <input name="message"> - Nowe ustawienie - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Anuluj"/> - </form> - </notification> - <notification name="ExistsSkyPresetAlert"> - Ustawienie już istnieje! - </notification> - <notification name="NewWaterPreset"> - Nazwij nowe ustawienie wody. - <form name="form"> - <input name="message"> - Nowe ustawienie - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Anuluj"/> - </form> - </notification> - <notification name="ExistsWaterPresetAlert"> - Ustawienie już istnieje! - </notification> - <notification name="WaterNoEditDefault"> - DomyÅ›lne ustawienie nie może być zmienione ani usuniÄ™te. - </notification> <notification name="ChatterBoxSessionStartError"> BÅ‚Ä…d podczas rozpoczynania czatu/IM z [RECIPIENT]. [REASON] @@ -2038,10 +2055,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym Å‚atwy dostÄ™p do t Nie masz dostÄ™pu do tej posiadÅ‚oÅ›ci ze wzglÄ™du na brak weryfikacji Twojego wieku. Czy chcesz odwiedzić stronÄ™ [SECOND_LIFE] żeby to zmienić? [_URL] - <url name="url" option="0"> - https://secondlife.com/account/verification.php - </url> - <usetemplate ignoretext="Brak weryfikacji wieku" name="okcancelignore" notext="Nie" yestext="Tak"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> Nie masz dostÄ™pu do tej posiadÅ‚oÅ›ci ze wzglÄ™du na brak danych o Twoim koncie. Czy chcesz odwiedzić stronÄ™ [SECOND_LIFE] żeby to zmienić? @@ -2076,12 +2089,6 @@ Zamieść go na stronie internetowej żeby umożliwić innym Å‚atwy dostÄ™p do t <notification name="GroupNotice"> Temat: [SUBJECT], Treść: [MESSAGE] </notification> - <notification name="FriendOnline"> - <nolink>[NAME]</nolink> jest w Second Life - </notification> - <notification name="FriendOffline"> - <nolink>[NAME]</nolink> opuszcza Second Life - </notification> <notification name="AddSelfFriend"> Nie możesz dodać siebie do listy znajomych. </notification> @@ -2525,22 +2532,17 @@ Czy siÄ™ zgadzasz? <form name="form"> <button name="Grant" text="Zaakceptuj"/> <button name="Deny" text="Odmów"/> - <button name="Details" text="Szczegóły..."/> </form> </notification> <notification name="ScriptDialog"> [NAME]'s '<nolink>[TITLE]</nolink>' [MESSAGE] - <form name="form"> - <button name="Ignore" text="Zignoruj"/> - </form> + <form name="form"/> </notification> <notification name="ScriptDialogGroup"> [GROUPNAME]'s '<nolink>[TITLE]</nolink>' [MESSAGE] - <form name="form"> - <button name="Ignore" text="Zignoruj"/> - </form> + <form name="form"/> </notification> <notification name="BuyLindenDollarSuccess"> DziÄ™kujemy za wpÅ‚atÄ™! @@ -2857,10 +2859,6 @@ Kliknij i przeciÄ…gnij gdziekolwiek aby obrócić widok. <button name="cancel" text="Anuluj"/> </form> </notification> - <notification label="" name="ModeChange"> - Zmiana trybu wymaga restartu. - <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/> - </notification> <notification label="" name="NoClassifieds"> Tworzenie i edycja reklam jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować siÄ™ i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania. <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/> @@ -2889,9 +2887,6 @@ Kliknij i przeciÄ…gnij gdziekolwiek aby obrócić widok. PÅ‚acenie innym Rezydentom jest możliwe tylko w trybie zaawansowanym. Czy chcesz siÄ™ wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania. <usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/> </notification> - <global name="UnsupportedCPU"> - - PrÄ™dkość Twojego CPU nie speÅ‚nia minimalnych wymagaÅ„. - </global> <global name="UnsupportedGLRequirements"> WyglÄ…da na to, że Twój system nie speÅ‚nia wymagaÅ„ sprzÄ™towych [APP_NAME]. [APP_NAME] wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz takÄ… kartÄ™ zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego. @@ -2916,4 +2911,16 @@ W innym przypadku możesz poszukać na mapie miejsca oznaczone jako "Infohu <global name="You died and have been teleported to your home location"> NastÄ…piÅ‚a Å›mierć i teleportacja do Miejsca Startu. </global> + <notification name="TeleportedByAttachment"> + You have been teleported by an attachment on [ITEM_ID] + <usetemplate ignoretext="ZostaÅ‚eÅ›/aÅ› teleportowany/a przez dodatek" name="notifyignore"/> + </notification> + <notification name="TeleportedByObjectOnParcel"> + You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' + <usetemplate ignoretext="ZostaÅ‚eÅ›/aÅ› teleportowany/a przez obiekt na dziaÅ‚ce" name="notifyignore"/> + </notification> + <notification name="DefaultObjectPermissions"> + WystÄ…piÅ‚ problem z zapisywaniem domyÅ›lnych zezwoleÅ„ obiektu: [REASON]. Spróbuj ustawić je ponownie później. + <usetemplate name="okbutton" yestext="OK"/> + </notification> </notifications> diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml index c87a3d3bd42bdce3b57e02a1d89eae07a7c32050..42809a8afb402955af815d1dace358a6de865a84 100755 --- a/indra/newview/skins/default/xui/pl/panel_login.xml +++ b/indra/newview/skins/default/xui/pl/panel_login.xml @@ -1,48 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> - <layout_stack name="login_widgets"> - <layout_panel name="login"> - <text name="log_in_text"> - POÅÄ„CZ - </text> - <text name="username_text"> - Użytkownik: - </text> - <combo_box name="username_combo" tool_tip="NazwÄ™ użytkownika wybierasz przy rejestracji, np. bobsmith12 lub Steller Sunshine"/> - <text name="password_text"> - HasÅ‚o: - </text> - </layout_panel> - <layout_panel name="start_location_panel"> - <text name="start_location_text"> - Rozpocznij w: - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation"/> - <combo_box.item label="Moje Miejsce Startu" name="MyHome"/> - <combo_box.item label="<Wpisz Region>" name="Typeregionname"/> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> + <layout_stack name="ui_stack"> + <layout_panel name="ui_container"> + <combo_box label="My favorite places" name="start_location_combo"> + <combo_box.item label="Ostatnia lokalizacja" name="MyLastLocation"/> </combo_box> </layout_panel> - <layout_panel name="links_login_panel"> - <text name="login_help"> - Potrzebujesz pomocy z logowaniem siÄ™? - </text> - <text name="forgot_password_text"> - ZapomniaÅ‚eÅ› swojej nazwy użytkownika lub hasÅ‚a? - </text> - <button label="PoÅ‚Ä…cz" name="connect_btn"/> - <check_box label="ZapamiÄ™taj hasÅ‚o" name="remember_check"/> - </layout_panel> - <layout_panel name="links"> - <text name="create_account_text"> - CREATE YǾUR ACCǾUNT - </text> - <button name="create_new_account_btn" - label="Utwórz nowe konto" - width="120"/> - </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..7db98a106d87ff62a5c0a2749964d5c05a60830d --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Opcje widoku/sortowania"/> + <button name="add_btn" tool_tip="Utwórz nowy folder"/> + <button label="Zweryfikuj" name="audit_btn" tool_tip="Sprawdź swoje przedmioty na Marketplace"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtruj przedmioty" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..be4be5b80f72df39ddc27b4d22d8d92eba723203 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="WSZYSTKO" name="All Items" tool_tip="PrzeciÄ…gnij tutaj przedmioty, aby je wylistować"/> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b17298742d20808853b9aa7d6b667d0528a5fc0 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NA LIÅšCIE" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..f818da6821d1758538fe49c5e6df4e6cb7803176 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NIEPRZYPISANE" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..8031fe78f7461f6c2e910e5498db605f9159e0dc --- /dev/null +++ b/indra/newview/skins/default/xui/pl/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="UKRYTE" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml index 6aa0d27bb80881b6f0b102f7b8c8847251da9846..e9b1ba89a5da8ebd4afb9d76bb2ebe4b16cd1019 100755 --- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml @@ -1,33 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="StatBarDaysOfWeek"> - Niedziela:PoniedziaÅ‚ek:Wtorek:Åšroda:Czwartek:PiÄ…tek:Sobota - </panel.string> - <panel.string name="StatBarMonthsOfYear"> - StyczeÅ„:Luty:Marzec:KwiecieÅ„:Maj:Czerwiec:Lipiec:StyczeÅ„:WrzesieÅ„:Październik:Listopad:GrudzieÅ„ - </panel.string> - <panel.string name="packet_loss_tooltip"> - Utracone pakiety - </panel.string> - <panel.string name="bandwidth_tooltip"> - Przepustowość - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="StatBarDaysOfWeek">Niedziela:PoniedziaÅ‚ek:Wtorek:Åšroda:Czwartek:PiÄ…tek:Sobota</panel.string> + <panel.string name="StatBarMonthsOfYear">StyczeÅ„:Luty:Marzec:KwiecieÅ„:Maj:Czerwiec:Lipiec:StyczeÅ„:WrzesieÅ„:Październik:Listopad:GrudzieÅ„</panel.string> + <panel.string name="packet_loss_tooltip">Utracone pakiety</panel.string> + <panel.string name="bandwidth_tooltip">Przepustowość</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel name="balance_bg"> - <text name="balance" tool_tip="Kliknij aby odÅ›wieżyć bilans L$" value="L$20"/> + <text name="balance" tool_tip="Kliknij aby odÅ›wieżyć bilans L$" value="L$??"/> <button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupić wiÄ™cej L$"/> </panel> - <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Obecny czas (Pacyficzny)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Start/Stop wszystkie media (Muzyka, Video, WWW)"/> <button name="volume_btn" tool_tip="Regulacja gÅ‚oÅ›noÅ›ci"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml index 9ec3c480b7a15827f9ec4059b934936b78d0f4f5..4b3df5cde8d652b7e01c060eda30ba226adb8f02 100755 --- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml @@ -63,9 +63,10 @@ <check_box label="Sprzedaje/ Oddaje" name="CheckNextOwnerTransfer" tool_tip="NastÄ™pny wÅ‚aÅ›ciciel może oddawać lub sprzedawać ten obiekt"/> </panel> <check_box label="Na sprzedaż" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopiuje" name="Copy"/> - <combo_box.item label="Oryginalny" name="Original"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Kopia" name="Copy"/> + <combo_box.item label="Zawartość" name="Contents"/> + <combo_box.item label="OryginaÅ‚" name="Original"/> </combo_box> <spinner label="Cena: L$" name="Edit Cost"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml index eb8c9cdbbbd2a59b5fd039d918f4ebb8b03c58de..503541a96e7264fd303f1f8bb667d8cdb1fac04d 100755 --- a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml @@ -1,65 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Profil Obiektu"> - <panel.string name="text deed continued"> - Przypisz - </panel.string> - <panel.string name="text deed"> - Przypisz - </panel.string> - <panel.string name="text modify info 1"> - Możesz modyfikować ten obiekt - </panel.string> - <panel.string name="text modify info 2"> - Możesz modyfikować te obiekty - </panel.string> - <panel.string name="text modify info 3"> - Nie możesz modyfikować tego obiektu - </panel.string> - <panel.string name="text modify info 4"> - Nie możesz modyfikować tych obiektów - </panel.string> - <panel.string name="text modify warning"> - Ten obiekt ma części zgrupowane - </panel.string> - <panel.string name="Cost Default"> - Cena: L$ - </panel.string> - <panel.string name="Cost Total"> - Cena caÅ‚kowita: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Cena za jednostkÄ™: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Cena mieszana - </panel.string> - <panel.string name="Sale Mixed"> - Sprzedaż mieszana - </panel.string> + <panel.string name="text deed continued">Przypisz</panel.string> + <panel.string name="text deed">Przypisz</panel.string> + <panel.string name="text modify info 1">Możesz modyfikować ten obiekt</panel.string> + <panel.string name="text modify info 2">Możesz modyfikować te obiekty</panel.string> + <panel.string name="text modify info 3">Nie możesz modyfikować tego obiektu</panel.string> + <panel.string name="text modify info 4">Nie możesz modyfikować tych obiektów</panel.string> + <panel.string name="text modify warning">Ten obiekt ma części zgrupowane</panel.string> + <panel.string name="Cost Default">Cena: L$</panel.string> + <panel.string name="Cost Total">Suma: L$</panel.string> + <panel.string name="Cost Per Unit">Cena za jednostkÄ™: L$</panel.string> + <panel.string name="Cost Mixed">Cena mieszana</panel.string> + <panel.string name="Sale Mixed">Sprzedaż mieszana</panel.string> <text name="title" value="Profil Obiektu"/> <text name="where" value="(W Åšwiecie)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nazwa: - </text> - <text name="Description:"> - Opis: - </text> - <text name="CreatorNameLabel"> - Twórca: - </text> - <text name="Owner:"> - WÅ‚aÅ›ciciel: - </text> - <text name="Group_label"> - Grupa: - </text> + <text name="Name:">Nazwa:</text> + <text name="Description:">Opis:</text> + <text name="CreatorNameLabel">Twórca:</text> + <text name="Owner:">WÅ‚aÅ›ciciel:</text> + <text name="Group_label">Grupa:</text> <button name="button set group" tool_tip="Wybierz grupÄ™ by udostÄ™pnić jej prawa do tego obiektu"/> <name_box initial_value="Åadowanie..." name="Group Name Proxy"/> <button label="Przypisz" label_selected="Przypisz" name="button deed" tool_tip="Opcja przepisania udostÄ™pnia obiektowi takie same prawa jak zostaÅ‚y zaznaczone dla nastÄ™pnego wÅ‚aÅ›ciciela. Obiekty udostÄ™pnione grupie mogÄ… zostać przepisane dla grupy przez oficera grupy."/> - <text name="label click action"> - Kliknij by: - </text> + <text name="label click action">Kliknij by:</text> <combo_box name="clickaction"> <combo_box.item label="Dotknij (domyÅ›lne)" name="Touch/grab(default)"/> <combo_box.item label="UsiÄ…dź na obiekcie" name="Sitonobject"/> @@ -68,21 +32,13 @@ <combo_box.item label="Otwórz" name="Open"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Możesz modyfikować ten obiekt - </text> - <text name="Anyone can:"> - Każdy: - </text> + <text name="perm_modify">Możesz modyfikować ten obiekt</text> + <text name="Anyone can:">Każdy:</text> <check_box label="Kopiuj" name="checkbox allow everyone copy"/> <check_box label="PrzesuÅ„" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grupie: - </text> + <text name="GroupLabel">Grupie:</text> <check_box label="UdostÄ™pnij" name="checkbox share with group" tool_tip="UdostÄ™pnij prawa do modyfikacji tego obiektu wszystkim czÅ‚onkom, którzy posiadajÄ… przywilej modyfikacji obiektów grupy. By ograniczyć, przypisz obiekt do grupy."/> - <text name="NextOwnerLabel"> - NastÄ™pny WÅ‚aÅ›ciciel: - </text> + <text name="NextOwnerLabel">NastÄ™pny WÅ‚aÅ›ciciel:</text> <check_box label="Modyfikuj" name="checkbox next owner can modify"/> <check_box label="Kopiuj" name="checkbox next owner can copy"/> <check_box label="Oddaj" name="checkbox next owner can transfer" tool_tip="NastÄ™pny wÅ‚aÅ›ciciel może sprzedać lub oddać ten obiekt"/> @@ -95,24 +51,12 @@ </combo_box> <spinner label="Cena: L$" name="Edit Cost"/> <check_box label="Pokaż w wyszukiwarce" name="search_check" tool_tip="UdostÄ™pnij widzialność tego obiektu w wyszukiwarce"/> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Otwórz" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index f86e393646118e4615552bb34f9a89dbd50a1905..7801d5045708ce52a5648f08d75a4b90ea89c190 100755 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -182,6 +182,48 @@ Tylko pojedynczy obiekt może być tutaj przeciÄ…gniÄ™ty </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> + <string name="TooltipOutboxDragToWorld"> + Nie możesz rezzować obiektów z folderu rzeczy na Marketplace + </string> + <string name="TooltipOutboxWorn"> + Nie możesz umieszczać na Marketplace przedmiotów, które masz na sobie zaÅ‚ożone + </string> + <string name="TooltipOutboxFolderLevels"> + GÅ‚Ä™bokość zagnieżdżonych folderów przekracza [AMOUNT]. Zmniejsz ilość zagdzieżdżeÅ„; Spakuj przedmioty w pudeÅ‚ka, jeÅ›li to pomoże. + </string> + <string name="TooltipOutboxTooManyFolders"> + Ilość podfolderów w folderze najwyższego poziomu przekracza [AMOUNT]. Zmniejsz ilość folderów; Spakuj przedmioty w pudeÅ‚ka, jeÅ›li to pomoże. + </string> + <string name="TooltipOutboxTooManyObjects"> + Ilość pozycji w folderze najwyższego poziomu przekracza [AMOUNT]. JeÅ›li chcesz sprzedać wiÄ™cej, niż [AMOUNT] przedmiotów jako jednÄ… pozycjÄ™, to musisz je spakować w pudeÅ‚ka. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Ilość przedmiotów w folderze magazynowym przekracza [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Możesz przenosić foldery lub przedmioty wyÅ‚Ä…cznie do karty WSZYSTKO. Wybierz teraz tÄ… kartÄ™ i spróbuj ponownie. + </string> + <string name="TooltipOutboxNoTransfer"> + Jeden lub kilka z tych obiektów nie może zostać sprzedany / przetransferowany + </string> + <string name="TooltipOutboxNotInInventory"> + Marketplace akceptuje tylko przedmioty bezpoÅ›rednio z Twojej Szafy. + </string> + <string name="TooltipOutboxLinked"> + Nie możesz sprzedać zlinkowanych folderów lub przedmiotów na Marketplace + </string> + <string name="TooltipOutboxCallingCard"> + Nie możesz umieszczać wizytówek na Marketplace + </string> + <string name="TooltipOutboxDragActive"> + Nie można przenieść wylistowanego przedmiotu + </string> + <string name="TooltipOutboxCannotMoveRoot"> + Nie możesz przenieść folderu głównego przedmiotów na Marketplace + </string> + <string name="TooltipOutboxMixedStock"> + Wszystkie przedmioty w folderze magazynowym muszÄ… mieć ten sam typ i zezwolenia + </string> <string name="TooltipHttpUrl"> Kliknij aby zobaczyć zawartość tej strony internetowej </string> @@ -429,9 +471,6 @@ <string name="AvatarAway"> Åšpi </string> - <string name="AvatarBusy"> - Pracuje - </string> <string name="AvatarMuted"> Wyciszony </string> @@ -723,6 +762,7 @@ <string name="ControlYourCamera"> Kontroluj kamerÄ™ </string> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SIM_ACCESS_PG"> 'General' </string> @@ -777,6 +817,12 @@ <string name="bitmap_image_files"> Obrazy bitmap </string> + <string name="png_image_files"> + Obrazy PNG + </string> + <string name="save_texture_image_files"> + Obrazy Targa lub PNG + </string> <string name="avi_movie_file"> Pliki filmowe AVI </string> @@ -798,18 +844,6 @@ <string name="choose_the_directory"> Wybierz katalog </string> - <string name="AvatarSetNotAway"> - Ustaw Nie Åšpij - </string> - <string name="AvatarSetAway"> - Åšpij - </string> - <string name="AvatarSetNotBusy"> - Ustawiaj Nie Pracuj - </string> - <string name="AvatarSetBusy"> - Pracuj - </string> <string name="shape"> KsztaÅ‚t </string> @@ -1032,10 +1066,102 @@ <string name="FavoritesNoMatchingItems"> PrzeciÄ…gnij landmark tutaj aby dodać go do swoich ulubionych. </string> + <string name="MarketplaceNoMatchingItems"> + Niczego nie znaleziono. Sprawdź pisowniÄ™ i spróbuj ponownie. + </string> <string name="InventoryNoTexture"> Nie posiadasz kopii tej tekstury w Twojej Szafie. </string> - <string name="Unconstrained">Swobodny</string> + <string name="InventoryMarketplaceError"> + Ta funkcjonalność jest obecnie w fazie Beta. Dodaj proszÄ™ swoje imiÄ™ do tego [http://goo.gl/forms/FCQ7UXkakz formularza Google] (w jÄ™zyku angielskim), jeÅ›li chcesz wziąć udziaÅ‚ w programie Beta i pomóc. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Twój folder przedmiotów na Marketplace jest pusty. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + PrzeciÄ…gnij foldery do tego obszaru, aby dodać je na listÄ™ sprzedaży w [[MARKETPLACE_DASHBOARD_URL] Marketplace]. + </string> + <string name="Marketplace Validation Warning Stock"> + folder magazynowy musi być zawarty w folderze wersji + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : BÅ‚Ä…d: wszystkie przedmioty w folderze magazynowym muszÄ… mieć ten sam typ i być niekopiowalne + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : BÅ‚Ä…d: folder magazynowy nie może zawierać podfolderów + </string> + <string name="Marketplace Validation Warning Empty"> + : Uwaga: folder jest pusty + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Uwaga: tworzÄ™ folder magazynowy + </string> + <string name="Marketplace Validation Warning Create Version"> + : Uwaga: tworzÄ™ folder wersji + </string> + <string name="Marketplace Validation Warning Move"> + : Uwaga: przenoszÄ™ przedmioty + </string> + <string name="Marketplace Validation Warning Delete"> + : Uwaga: zawartość folderu przeniesiona do folderu magazynowego, usuwam pusty katalog + </string> + <string name="Marketplace Validation Error Stock Item"> + : BÅ‚Ä…d: przedmioty bez praw kopiowania muszÄ… siÄ™ znajdować w folderze magazynowym + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Uwaga: przedmioty muszÄ… siÄ™ znajdować w folderze wersji + </string> + <string name="Marketplace Validation Error"> + : BÅ‚Ä…d: + </string> + <string name="Marketplace Validation Warning"> + : Uwaga: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Uwaga: folder wersji musi zawierać przynajmniej jednÄ… pozycjÄ™ + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Uwaga: folder magazynowy musi zawierać przynajmniej jednÄ… pozycjÄ™ + </string> + <string name="Marketplace Validation No Error"> + Brak bÅ‚Ä™dów lub ostrzeżeÅ„ + </string> + <string name="Marketplace Error Prefix"> + BÅ‚Ä…d: + </string> + <string name="Marketplace Error Not Merchant"> + Przed wysÅ‚aniem przedmiotów na Marketplace musisz zostać kupcem (darmowe). + </string> + <string name="Marketplace Error Not Accepted"> + Nie można przenieść tego przedmiotu. + </string> + <string name="Marketplace Error Unsellable Item"> + Ta pozycja nie może być sprzedana na Marketplace. + </string> + <string name="MarketplaceNoID"> + no Mkt ID + </string> + <string name="MarketplaceLive"> + na liÅ›cie + </string> + <string name="MarketplaceActive"> + aktywne + </string> + <string name="MarketplaceMax"> + maks + </string> + <string name="MarketplaceStock"> + magazyn + </string> + <string name="MarketplaceNoStock"> + brak w magazynie + </string> + <string name="MarketplaceUpdating"> + aktualizacja... + </string> + <string name="Unconstrained"> + Swobodny + </string> <string name="no_transfer" value=" (brak oddawania)"/> <string name="no_modify" value=" (brak modyfikowania)"/> <string name="no_copy" value=" (brak kopiowania)"/> @@ -1049,6 +1175,7 @@ Brak zawartoÅ›ci </string> <string name="WornOnAttachmentPoint" value=" (zaÅ‚ożony na [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (aktywne)"/> <string name="Chat Message" value="Czat:"/> <string name="Sound" value=" DźwiÄ™k :"/> @@ -1286,6 +1413,15 @@ <string name="Invalid Attachment"> Nieważny punkt zaÅ‚Ä…cznika </string> + <string name="ATTACHMENT_MISSING_ITEM"> + BÅ‚Ä…d: brakujÄ…cy przedmiot + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + BÅ‚Ä…d: brakujÄ…ca baza przedmiotu + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + BÅ‚Ä…d: obiekt jest w obecnym stroju, ale nie jest zaÅ‚ożony + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1451,6 +1587,9 @@ <string name="SaveComplete"> Zapisywanie zakoÅ„czone. </string> + <string name="UploadFailed"> + Åadowanie nieudane: + </string> <string name="ObjectOutOfRange"> Skrypt (obiekt poza zasiÄ™giem) </string> @@ -1675,9 +1814,6 @@ <string name="PanelContentsNewScript"> Nowy skrypt </string> - <string name="BusyModeResponseDefault"> - Rezydent, do którego wysÅ‚aÅ‚eÅ› wiadomość prywatnÄ… znajduje siÄ™ w trybie pracy. Oznacza to, iż Twoja wiadomość zostanie zapisana do przejrzenia poźniej. - </string> <string name="MuteByName"> (Nazwa) </string> @@ -1780,9 +1916,6 @@ <string name="GroupMoneyDebits"> Debet </string> - <string name="ViewerObjectContents"> - Zawartość - </string> <string name="AcquiredItems"> Zdobyte obiekty </string> @@ -4338,4 +4471,10 @@ Spróbuj zaÅ‚Ä…czyć Å›cieżkÄ™ do edytora w cytowaniu. <string name="ParticleHiding"> Ukryj czÄ…steczki </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> + <string name="Command_MarketplaceListings_Tooltip"> + Sprzedaj owoce swojej twórczoÅ›ci + </string> </strings> diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 47975a6386a88790235c658a534f62fda1e8266e..1e2edd7a2fb0ab58cd517795651365ae4eb28e31 100755 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -1,73 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="SOBRE [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - ConstruÃdo com [COMPILER] versão [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(coordenadas globais [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Memória: [MEMORY_MB] MBs -Versão OS: [OS_VERSION] -Placa de vÃdeo: [GRAPHICS_CARD_VENDOR] -Placa gráfica: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Versão do driver de vÃdeo Windows: [GRAPHICS_CARD_VENDOR] - </floater.string> - <floater.string name="AboutLibs"> - Versão OpenGL: [OPENGL_VERSION] - -Versão libcurl: [LIBCURL_VERSION] -Versão J2C Decoder: [J2C_VERSION] -Versão do driver de áudio: [AUDIO_DRIVER_VERSION] -Versão Qt Webkit: [QT_WEBKIT_VERSION] -Versão do servidor de voz: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (nenhum) - </floater.string> - <floater.string name="AboutTraffic"> - Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Erro ao obter URL de notas de versão do servidor. - </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="Copiar" name="copy_btn"/> </panel> <panel label="Créditos" name="credits_panel"> - <text name="linden_intro"> - O Second Life é trazido a você pela Lindens: - </text> - <text_editor name="linden_names"> - Philip, Andrew, Doug, Richard, Phoenix, Ian, Mark, Robin, Dan, Char, Ryan, Eric, Jim, Lee, Jeff, Michael, Kelly, Steve, Catherine, Bub, Ramzi, Jill, Jeska, Don, Kona, Callum, Charity, Jack, Shawn, babbage, James, Lauren, Blue, Brent, Reuben, Pathfinder, Jesse, Patsy, Torley, Bo, Cyn, Jonathan, Gia, Annette, Ginsu, Harry, Lex, Runitai, Guy, Cornelius, Beth, Swiss, Thumper, Wendy, Teeple, Seth, Dee, Mia, Sally, Liana, Aura, Beez, Milo, Red, Gulliver, Marius, Joe, Jose, Dore, Justin, Nora, Morpheus, Lexie, Amber, Chris, Xan, Leyla, Walker, Sabin, Joshua, Hiromi, Tofu, Fritz, June, Jean, Ivy, Dez, Ken, Betsy, Which, Spike, Rob, Zee, Dustin, George, Claudia, del, Matthew, jane, jay, Adrian, Yool, Rika, Yoz, siobhan, Qarl, Benjamin, Beast, Everett, madhavi, Christopher, Izzy, stephany, Jeremy, sean, adreanne, Pramod, Tobin, sejong, Iridium, maurice, kj, Meta, kari, JP, bert, kyle, Jon, Socrates, Bridie, Ivan, maria, Aric, Coco, Periapse, sandy, Storrs, Lotte, Colossus, Brad, Pastrami, Zen, BigPapi, Banzai, Sardonyx, Mani, Garry, Jaime, Neuro, Samuel, Niko, CeeLo, Austin, Soft, Poppy, emma, tessa, angelo, kurz, alexa, Sue, CG, Blake, Erica, Brett, Bevis, kristen, Q, simon, Enus, MJ, laurap, Kip, Scouse, Ron, Ram, kend, Marty, Prospero, melissa, kraft, Nat, Seraph, Hamilton, Lordan, Green, miz, Ashlei, Trinity, Ekim, Echo, Charlie, Rowan, Rome, Jt, Doris, benoc, Christy, Bao, Kate, Tj, Patch, Cheah, Johan, Brandy, Angela, Oreh, Cogsworth, Lan, Mitchell, Space, Bambers, Einstein, Bender, Malbers, Matias, Maggie, Rothman, Milton, Niall, Marin, Allison, Mango, Andrea, Katt, Yi, Ambroff, Rico, Raymond, Gail, Christa, William, Dawn, Usi, Dynamike, M, Corr, Dante, Molly, kaylee, Danica, Kelv, Lil, jacob, Nya, Rodney, elsie, Blondin, Grant, Nyx, Devin, Monty, Minerva, Keira, Katie, Jenn, Makai, Clare, Joy, Cody, Gayathri, FJ, spider, Oskar, Landon, Jarv, Noelle, Al, Doc, Gray, Vir, t, Maestro, Simone, Shannon, yang, Courtney, Scott, charlene, Quixote, Susan, Zed, Amanda, Katelin, Esbee, JoRoan, Enkidu, roxie, Scarlet, Merov, Kevin, Judy, Rand, Newell, Les, Dessie, Galen, Michon, Geo, Siz, Calyle, Pete, Praveen, Callen, Sheldon, Pink, Nelson, jenelle, Terrence, Nathan, Juan, Sascha, Huseby, Karina, Kaye, Kotler, Lis, Darv, Charrell, Dakota, Kimmora, Theeba, Taka, Mae, Perry, Ducot, dana, Esther, Dough, gisele, Doten, Viale, Fisher, jessieann, ashley, Torres, delby, rountree, kurt, Slaton, Madison, Rue, Gino, Wen, Casssandra, Brodesky, Squid, Gez, Rakesh, Gecko, Ladan, Tony, Tatem, Squire, Falcon, BK, Crimp, Tiggs, Bacon, Coyot, Carmilla, Webb, Sea, Arch, Jillian, Jason, Bernard, Vogt, Peggy, dragon, Pup, xandix, Wallace, Bewest, Inoshiro, Rhett, AG, Aimee, Ghengis, Itiaes, Eli, Steffan, Epic, Grapes, Stone, Prep, Scobu, Robert, Alain, Carla, Vicky, Tia, Alec, Taras, Lisa, Oz, Ariane, Log, House, Kazu, Kim, Drofnas, Tyler, Campbell, Michele, Madeline, Nelly, Baron, Thor, Lori, Hele, Fredrik, Teddy, Pixie, Berry, Gabrielle, Alfonso, Brooke, Wolf, Ringo, Cru, Charlar, Rodvik, Gibson, Elise, Bagman, Greger, Leonidas, Jerm, Leslie, CB, Brenda, Durian, Carlo, mm, Zeeshan, Caleb, Max, Elikak, Mercille, Steph, Chase - </text_editor> - <text name="contrib_intro"> - com contribuições de código aberto de: - </text> - <text_editor name="contrib_names"> - Dummy Name substituÃdo durante a execução - </text_editor> - <text name="trans_intro"> - e traduções de: - </text> - <text_editor name="trans_names"> - Dummy Name substituÃdo durante a execução - </text_editor> + <text name="linden_intro">O Second Life é trazido a você pela Lindens, +com contribuições de código aberto de:</text> + <text_editor name="contrib_names">Dummy Name substituÃdo durante a execução</text_editor> </panel> <panel label="Licenças" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -94,8 +37,7 @@ Versão do servidor de voz: [VOICE_VERSION] Todos os direitos reservados. Consulte licenses.txt para obter detalhes. - Codificação de áudio da conversa com voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Codificação de áudio da conversa com voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_associate_listing.xml b/indra/newview/skins/default/xui/pt/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..1fac5643b01e21504b189a7bd3476a0e3155244c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="ASSOCIAR LISTAGEM"> + <text name="message">ID de listagem:</text> + <line_editor name="listing_id">Digite a ID aqui</line_editor> + <button label="OK" name="OK"/> + <button label="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/pt/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..163ab440eafae30e38a4f5e57f29bdc383f2cbaf --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="DEFINIR ALTURA DE FOCO"> + <slider label="Altura" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml index 8a8f1f5b3406d17e296b690efb0652067abea189..5f04c0853131a43de8b04cb10cf3f550c7b5e8e4 100755 --- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPRIEDADES DE ITEM NO INVENTÃRIO"> - <floater.string name="unknown"> - (desconhecido) - </floater.string> - <floater.string name="public"> - (público) - </floater.string> - <floater.string name="you_can"> - Você pode: - </floater.string> - <floater.string name="owner_can"> - Proprietário pode : - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Nome: - </text> - <text name="LabelItemDescTitle"> - Descrição: - </text> - <text name="LabelCreatorTitle"> - Criador: - </text> + <floater.string name="unknown">(desconhecido)</floater.string> + <floater.string name="public">(público)</floater.string> + <floater.string name="you_can">Você pode:</floater.string> + <floater.string name="owner_can">Proprietário pode :</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Nome:</text> + <text name="LabelItemDescTitle">Descrição:</text> + <text name="LabelCreatorTitle">Criador:</text> <button label="Perfil..." label_selected="" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Dono: - </text> + <text name="LabelOwnerTitle">Dono:</text> <button label="Perfil..." label_selected="" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Adquirido: - </text> - <text name="LabelAcquiredDate"> - Qua Mai 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Você: - </text> + <text name="LabelAcquiredTitle">Adquirido:</text> + <text name="LabelAcquiredDate">Qua Mai 24 12:50:46 2006</text> + <text name="OwnerLabel">Você:</text> <check_box label="Editar" name="CheckOwnerModify"/> <check_box label="Copiar" name="CheckOwnerCopy"/> <check_box label="Revender" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Todos: - </text> + <text name="AnyoneLabel">Todos:</text> <check_box label="Cortar" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartilhar" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel" width="230"> - Próximo proprietário: - </text> + <text name="NextOwnerLabel" width="230">Próximo proprietário:</text> <check_box label="Editar" name="CheckNextOwnerModify"/> <check_box label="Copiar" name="CheckNextOwnerCopy"/> <check_box label="Revender" name="CheckNextOwnerTransfer"/> <check_box label="À venda" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Cortar" name="Copy"/> + <combo_box.item label="Conteúdo" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preço:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..400196c3c3bdbf0b95563568c050f069a6af105c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="PROPRIEDADES DO ITEM"/> diff --git a/indra/newview/skins/default/xui/pt/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/pt/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa4ac50ab0fac71eafaea726a2a11880e50b74b8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="LISTAGENS DO MARKETPLACE"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Carregando...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/pt/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..39e59a687f62200a83f99165847831a6bac8bd65 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Auditar Listagens do Marketplace"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_openobject.xml b/indra/newview/skins/default/xui/pt/floater_openobject.xml index 164bfee3aa6b26038c11a8b2f48a0b780a45baee..e8b72700c90d746568024a385845a5025345c388 100755 --- a/indra/newview/skins/default/xui/pt/floater_openobject.xml +++ b/indra/newview/skins/default/xui/pt/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Copiar para inventário" label_selected="Copiar para inventário" name="copy_to_inventory_button" width="132"/> - <button label="Copiar e adicionar à roupa" label_selected="Copiar e adicionar à roupa" left="152" name="copy_and_wear_button"/> + <text name="border_note"> + Copiar para inventário e vestir + </text> + <button label="Adicionar ao look" label_selected="Adicionar ao look" left="152" name="copy_and_wear_button"/> + <button label="Substituir look" label_selected="Substituir look" name="copy_and_replace_button"/> + <button label="Apenas copiar para inventário" label_selected="Apenas copiar para inventário" name="copy_to_inventory_button" width="132"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml index 8094ad376ce6ce0665af50435debdf2c1f546ee8..77e814b5755956baa6e00820c4545e51b1949a5b 100755 --- a/indra/newview/skins/default/xui/pt/floater_pay.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay.xml @@ -1,25 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string name="payee_group"> - Pagar grupo - </string> - <string name="payee_resident"> - Pagar residente - </string> - <text left="5" name="payee_label"> - Pagar: - </text> - <icon name="icon_person" tool_tip="Pessoa"/> - <text name="payee_name"> - Test Name That Is Extremely Long To Check Clipping - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - Outro valor: - </text> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <string name="payee_group">Pagar grupo</string> + <string name="payee_resident">Pagar residente</string> + <text name="paying_text">Você está pagando:</text> + <text name="payee_name">Test Name That Is Extremely Long To Check Clipping</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar L$ 1" label_selected="Pagar L$ 1" name="fastpay 1"/> + <button label="Pagar L$ 5" label_selected="Pagar L$ 5" name="fastpay 5"/> + <button label="Pagar L$ 10" label_selected="Pagar L$ 10" name="fastpay 10"/> + <button label="Pagar L$ 20" label_selected="Pagar L$ 20" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Outro valor:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_pay_object.xml b/indra/newview/skins/default/xui/pt/floater_pay_object.xml index a5579f03bffac9d2a5012ad1ca8e817318100d45..4f7fa6ca6778e1cfa91bcd3dd9722ed563cfde83 100755 --- a/indra/newview/skins/default/xui/pt/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay_object.xml @@ -1,30 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <string halign="left" name="payee_group" width="100"> - Pagar grupo - </string> - <string halign="left" name="payee_resident" width="120"> - Pagar residente - </string> - <icon name="icon_person" tool_tip="Pessoa"/> - <text left="105" name="payee_name"> - Ericacita Moostopolison - </text> - <text halign="left" left="5" name="object_name_label" width="95"> - Via objeto: - </text> + <string halign="left" name="payee_group" width="100">Pagar grupo</string> + <string halign="left" name="payee_resident" width="120">Pagar residente</string> + <text name="paying_text">Você está pagando:</text> + <text left="105" name="payee_name">Ericacita Moostopolison</text> + <text halign="left" left="5" name="object_name_label" width="95">Via objeto:</text> <icon name="icon_object" tool_tip="Objects"/> - <text left="105" name="object_name_text"> - Meu objeto maravilho, fantástico e com nome comprido e imaginativo - </text> - <button label="L$1" label_selected="L$1" left="125" name="fastpay 1" width="70"/> - <button label="L$5" label_selected="L$5" left="200" name="fastpay 5" width="70"/> - <button label="L$10" label_selected="L$10" left="125" name="fastpay 10" width="70"/> - <button label="L$20" label_selected="L$20" left="200" name="fastpay 20" width="70"/> - <text halign="left" left="5" name="amount text"> - Outro valor: - </text> - <line_editor left="60" name="amount" width="50"/> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + <text left="105" name="object_name_text">Meu objeto maravilho, fantástico e com nome comprido e imaginativo</text> + <panel label="Buscar" name="PatternsPanel"> + <button label="Pagar L$ 1" label_selected="Pagar L$ 1" name="fastpay 1"/> + <button label="Pagar L$ 5" label_selected="Pagar L$ 5" name="fastpay 5"/> + <button label="Pagar L$ 10" label_selected="Pagar L$ 10" name="fastpay 10"/> + <button label="Pagar L$ 20" label_selected="Pagar L$ 20" name="fastpay 20"/> + </panel> + <panel label="Buscar" name="InputPanel"> + <text name="amount text">Outro valor:</text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml index 2d4cd670e69198ac06d2502bff17316ad54621ea..ac7942211039fee43bb438257eae526bb3a64c49 100755 --- a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Minha aparência" name="Change Outfit"/> <menu_item_call label="Editar meu look" name="Edit Outfit"/> <menu_item_call label="Editar meu corpo" name="Edit My Shape"/> + <menu_item_call label="Altura de foco" name="Hover Height"/> <menu_item_call label="Meus amigos" name="Friends..."/> <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml index 447b77657bfba86b13319a23a74c063b7cbbafd4..a0ac71e0186d56d1e69c11cee2087f9159dd7c96 100755 --- a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Minha aparência" name="Chenge Outfit"/> <menu_item_call label="Editar meu look" name="Edit Outfit"/> <menu_item_call label="Editar meu corpo" name="Edit My Shape"/> + <menu_item_call label="Altura de foco" name="Hover Height"/> <menu_item_call label="Meus amigos" name="Friends..."/> <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 636b356c8baa842d92c084f5b446c5a1ea492c96..79261ceb1fef396d03c7cda7ffad0736cb7ed66f 100755 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Criar listagem" name="Marketplace Create Listing"/> + <menu_item_call label="Associar listagem" name="Marketplace Associate Listing"/> + <menu_item_call label="Obter listagem (Atualizar)" name="Marketplace Get Listing"/> + <menu_item_call label="Verificar erros" name="Marketplace Check Listing"/> + <menu_item_call label="Editar listagem" name="Marketplace Edit Listing"/> + <menu_item_call label="Listar" name="Marketplace List"/> + <menu_item_call label="Parar de oferecer" name="Marketplace Unlist"/> + <menu_item_call label="Ativar" name="Marketplace Activate"/> + <menu_item_call label="Desativar" name="Marketplace Deactivate"/> <menu_item_call label="Compartilhar" name="Share"/> <menu_item_call label="Comprar" name="Task Buy"/> <menu_item_call label="Abrir" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Adicionar" name="Wearable Add"/> <menu_item_call label="Tirar" name="Take Off"/> <menu_item_call label="Copiar para Caixa de saÃda do lojista" name="Merchant Copy"/> - <menu_item_call label="Enviar para Mercado" name="Marketplace Send"/> + <menu_item_call label="Copiar para Listagens do Marketplace" name="Marketplace Copy"/> + <menu_item_call label="Mover para Listagens do Marketplace" name="Marketplace Move"/> <menu_item_call label="--Sem opções--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_marketplace_view.xml b/indra/newview/skins/default/xui/pt/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..2236df5c873cbf6428471aba93af14a75174820d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Ordenar por quantidade em estoque stock (baixo a alto)" name="sort_by_stock_amount"/> + <menu_item_check label="Exibir apenas pastas da listagem" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index b5af342754fe4560164bf4f95f187a934908e25d..9b3b6077ed964a8c0a45da006dbc881415ef7030 100755 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> <menu_item_call label="Caixa de saÃda do lojista..." name="MerchantOutbox"/> + <menu_item_call label="Listagens do Marketplace..." name="MarketplaceListings"/> <menu_item_call label="Painel da conta..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/> </menu_item_call> @@ -177,7 +178,7 @@ <menu_item_call label="Blogs do [SECOND_LIFE]" name="Second Life Blogs"/> <menu_item_call label="Denunciar abuso" name="Report Abuse"/> <menu_item_call label="Relatar bug" name="Report Bug"/> - <menu_item_call label="Empurrões, trombadas e tapas" name="Bumps, Pushes &amp; Hits"/> + <menu_item_call label="Bumps, Pushes & Hits" name="Bumps, Pushes &amp; Hits"/> <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avançado" name="Advanced"> @@ -250,6 +251,7 @@ <menu_item_check label="Painel de textura" name="Texture Console"/> <menu_item_check label="Console de depuração" name="Debug Console"/> <menu_item_call label="Painel de avisos" name="Notifications"/> + <menu_item_check label="Console de depuração de região" name="Region Debug Console"/> <menu_item_check label="Tempos" name="Fast Timers"/> <menu_item_check label="Memória" name="Memory"/> <menu_item_check label="EstatÃsticas da cena" name="Scene Statistics"/> @@ -325,7 +327,7 @@ <menu label="Rede" name="Network"> <menu_item_check label="Pausar avatar" name="AgentPause"/> <menu_item_call label="Drop a Packet" name="Drop a Packet"/> - </menu> + </menu> <menu label="Mundo" name="DevelopWorld"> <menu_item_check label="Impor sobre sol de simulação" name="Sim Sun Override"/> <menu_item_check label="Clima fixo" name="Fixed Weather"/> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index a01c9c757beb6ee116307790eb51eaeb64bc148c..29b85d9e97a2b4d0ac0f00b12b38307c4609f2a1 100755 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -128,6 +128,88 @@ Nenhuma pasta foi enviada ao Marketplace devido a um erro do sistema ou da rede. Ocorreu uma falha na inicialização do Marketplace devido a um erro do sistema ou da rede. Tente novamente mais tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Copiar ou mover para Pasta de estoque com falha com o erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Copiar ou mover para Listagens do Marketplace com falha com o erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Ocorreu uma falha na transação com o Marketplace com o seguinte erro: + + Motivo: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Não foi possÃvel listar este produto ou ativar a pasta de versões. Geralmente, isso é causado por ausência de informações no formulário de descrição da listagem, mas pode ser causado por erros na estrutura de pastas. Edite a listagem ou verifique se há erros na pasta de listagem. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Falha ao listar no Marketplace com erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Falha ao ativar esta pasta de versões com erro: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Esta ação alterará o conteúdo ativo desta listagem. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de alterar uma listagem ativa no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Os itens arrastados para a janela Listagens do Marketplace são movidos de seus locais originais e não copiados. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de mover um item do inventário para o Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Mover ou excluir uma pasta de listagem excluirá sua listagem do Marketplace. Se você deseja manter a listagem do Marketplace, mova ou exclua o conteúdo da pasta de versões que você deseja modificar. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de mover ou excluir uma listagem do Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Você não tem permissão para copiar um ou mais deste itens para o Marketplace. Você pode movê-los ou deixá-los para trás. + <usetemplate canceltext="Cancelar" ignoretext="Confirmar antes de tentar copiar uma seleção que contenha itens de cópia proibida para o Marketplace" name="yesnocancelbuttons" notext="Não mover item(ns)" yestext="Mover item(ns)"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Esta ação removerá esta listagem. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de remover uma listagem ativa no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Esta ação desativará a pasta de versões da listagem atual. Deseja continuar? + <usetemplate ignoretext="Confirmar antes de desativar a pasta de versões de uma listagem no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + A listagem não pode ser atualizada. +[[URL] Clique aqui] para editá-la no Marketplace. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Não é possÃvel usar roupas ou partes do corpo que estejam na pasta Listagens do Marketplace. + </notification> + <notification name="AlertMerchantListingInvalidID"> + ID de listagem inválida. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Há várias pastas sem versão ou com várias versões nesta listagem. Você precisará selecionar e ativar uma delas separadamente mais tarde. + <usetemplate ignoretext="Alertar sobre a ativação da pasta de versões quando criar uma listagem com várias pastas de versões" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Separamos itens de estoque de tipos diferentes em pastas de estoque diferentes para que sua pasta fique organizada de maneira que possamos listá-la. + <usetemplate ignoretext="Alertar quando a pasta de estoque for dividida antes de ser listada" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Removemos sua listagem porque o estoque está vazio. Você precisa adicionar mais unidades à pasta de estoque para que a listagem seja exibida novamente. + <usetemplate ignoretext="Alertar quando uma listagem não for listada porque a pasta de estoque está vazia" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Houve um problema com o carregamento do texto para um script devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde. </notification> @@ -467,6 +549,10 @@ Nota: Este procedimento limpa o cache. Salvar alterações? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar"/> </notification> + <notification name="DeleteNotecard"> + Excluir nota? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Falha ao salvar Gesto. Este gesto possui muitos passos. @@ -1860,6 +1946,9 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. A região que você está tentando visitar tem conteúdo que excede suas preferências atuais. Você pode alterar suas preferências acessando Eu > Preferências > Geral. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> A região que você está tentando visitar tem conteúdo [REGIONMATURITY], acessÃvel apenas para adultos. <url name="url"> @@ -2148,6 +2237,10 @@ Mover para o inventário o(s) item(s)? <ignore name="ignore" text="Definir 'Pagar por objeto' ao construir um objeto sem script money()"/> </form> </notification> + <notification name="PayConfirmation"> + Confirme que você deseja pagar L$[AMOUNT] a [TARGET]. + <usetemplate ignoretext="Confirmar antes de pagar (somas acima de L$ 200)" name="okcancelignore" notext="Cancelar" yestext="Pagar"/> + </notification> <notification name="OpenObjectCannotCopy"> Não há itens neste objeto que você está autorizado a copiar. </notification> @@ -3829,9 +3922,11 @@ Tente novamente em instantes. </notification> <notification name="TeleportedByAttachment"> Você foi teletransportado por um anexo em [ITEM_ID] + <usetemplate ignoretext="Teletransportar: Você foi teletransportado por um anexo" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Você foi teletransportado pelo objeto '[OBJECT_NAME]' no lote '[PARCEL_NAME]' + <usetemplate ignoretext="Teletransportar: Você foi teletransportado por um objeto em um lote" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Você foi teletransportado pelo objeto '[OBJECT_NAME]' de propriedade de [OWNER_ID] @@ -4163,7 +4258,7 @@ Tente selecionar uma quantidade menor de terreno. <usetemplate ignoretext="Não foi possÃvel mover arquivos. Caminho anterior restaurado." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Ocorreu um problema ao salvar as permissões padrão devido ao seguinte motivo: [REASON]. Tente definir as permissões padrão mais tarde. + Ocorreu um problema ao salvar as permissões padrão do objeto: [REASON]. Tente definir as permissões padrão mais tarde. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml index 8ac3e57c4c034a1c7b92a1ee74c033bbfacb4d81..ffcf72b1b4d840159f6f8926d9ecd68526617328 100755 --- a/indra/newview/skins/default/xui/pt/panel_login.xml +++ b/indra/newview/skins/default/xui/pt/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php?lang=pt - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=pt</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nome de usuário" name="username_combo" tool_tip="O nome de usuário que você escolheu ao fazer seu cadastro, como zecazc12 ou Magia Solar"/> <line_editor label="Senha" name="password_edit"/> - <check_box label="Lembrar-me" name="remember_check"/> - <text name="forgot_password_text"> - Senha esquecida - </text> - <button label="Login" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - no último local - </text> <combo_box label="Meus locais favoritos" name="start_location_combo"> + <combo_box.item label="Última posição" name="MyLastLocation"/> <combo_box.item label="Minha casa" name="MyHome"/> </combo_box> - <button label="Login" name="connect_favorite_btn"/> - <line_editor label="Digite um local" name="location_edit"/> - <button label="Login" name="connect_location_btn"/> + <button label="Login" name="connect_btn"/> + <check_box label="Lembrar-me" name="remember_check"/> + <text name="forgot_password_text">Senha esquecida</text> <combo_box label="Selecionar grade" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..cfa0e10038eac1cb275ea22a0c8978f16beaf1cf --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Opções de exibição/ordenação"/> + <button name="add_btn" tool_tip="Cria uma nova pasta de listagem"/> + <button label="Verificar erros" name="audit_btn" tool_tip="Verificar suas listagens do Marketplace"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Filtrar listagens do Marketplace" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..5967f24628b3ecbc49a5e391513c89c92c786f04 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TUDO" name="All Items" tool_tip="Arraste e solte os itens aqui para listá-los"/> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..6549f82b5c118176b1feb4eba16cf45e30c27e79 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="PUBLICADA" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..1797be5ae8b7c00558bb096e230803adc009f602 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="DESASSOCIADA" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..79b8557ec339c8d120c285cd62925373569fc93a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="NÃO PUBLICADA" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml index cb9a6eb757629b22f5b0e4fc9a3ed9dcaaa88638..cfe52ff404012b82b4358f401807dc468ad1a3cb 100755 --- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Perda de pacote - </panel.string> - <panel.string name="bandwidth_tooltip"> - Banda - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Perda de pacote</panel.string> + <panel.string name="bandwidth_tooltip">Banda</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-410" name="balance_bg" width="200"> - <text name="balance" tool_tip="Atualizar saldo de L$" value="L$20"/> + <text name="balance" tool_tip="Atualizar saldo de L$" value="L$??"/> <button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/> <button label="Comprar" name="goShop" tool_tip="Abrir Mercado do Second Life" width="80"/> </panel> - <text name="TimeText" tool_tip="Hora atual (PacÃfico)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Hora atual (PacÃfico)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Tocar/Pausar todas mÃdias (música, vÃdeo, páginas web)"/> <button name="volume_btn" tool_tip="Volume geral"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml index cf8f12fad8249b5bb43374dcd9e22e29e8176ac2..47ffffaf15fd5c84360e2fbeeab3658a4002ee0f 100755 --- a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> </panel> <check_box label="À venda" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Copiar" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="Cortar" name="Copy"/> + <combo_box.item label="Conteúdo" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="Preço: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml index f0fd438cef55752b2cd993f29c93f9d023b244fa..bbfaa4a4f5ad8a59fe8db8963e029b81c1bfda6f 100755 --- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Perfil do objeto"> - <panel.string name="text deed continued"> - Doar - </panel.string> - <panel.string name="text deed"> - Doar - </panel.string> - <panel.string name="text modify info 1"> - Você pode modificar este objeto - </panel.string> - <panel.string name="text modify info 2"> - Você pode modificar estes objetos - </panel.string> - <panel.string name="text modify info 3"> - Você não pode modificar este objeto - </panel.string> - <panel.string name="text modify info 4"> - Você não pode modificar estes objetos - </panel.string> - <panel.string name="text modify info 5"> - Não é possÃvel modificar este objeto através de uma demarcação da região - </panel.string> - <panel.string name="text modify info 6"> - Não é possÃvel modificar estes objetos através de uma demarcação da região - </panel.string> - <panel.string name="text modify warning"> - O objeto contém links ligando suas partes - </panel.string> - <panel.string name="Cost Default"> - Preço: L$ - </panel.string> - <panel.string name="Cost Total"> - Preço total: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Preço unitário: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Preço misto - </panel.string> - <panel.string name="Sale Mixed"> - Venda mista - </panel.string> + <panel.string name="text deed continued">Doar</panel.string> + <panel.string name="text deed">Doar</panel.string> + <panel.string name="text modify info 1">Você pode modificar este objeto</panel.string> + <panel.string name="text modify info 2">Você pode modificar estes objetos</panel.string> + <panel.string name="text modify info 3">Você não pode modificar este objeto</panel.string> + <panel.string name="text modify info 4">Você não pode modificar estes objetos</panel.string> + <panel.string name="text modify info 5">Não é possÃvel modificar este objeto através de uma demarcação da região</panel.string> + <panel.string name="text modify info 6">Não é possÃvel modificar estes objetos através de uma demarcação da região</panel.string> + <panel.string name="text modify warning">O objeto contém links ligando suas partes</panel.string> + <panel.string name="Cost Default">Preço: L$</panel.string> + <panel.string name="Cost Total">Preço total: L$</panel.string> + <panel.string name="Cost Per Unit">Preço unitário: L$</panel.string> + <panel.string name="Cost Mixed">Preço misto</panel.string> + <panel.string name="Sale Mixed">Venda mista</panel.string> <text name="title" value="Perfil do objeto"/> <text name="where" value="(Inworld)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Nome: - </text> - <text name="Description:"> - Descrição: - </text> - <text name="CreatorNameLabel"> - Criador: - </text> - <text name="Owner:"> - Proprietário: - </text> - <text name="Group_label"> - Grupo: - </text> + <text name="Name:">Nome:</text> + <text name="Description:">Descrição:</text> + <text name="CreatorNameLabel">Criador:</text> + <text name="Owner:">Proprietário:</text> + <text name="Group_label">Grupo:</text> <button name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/> <name_box initial_value="Carregando..." name="Group Name Proxy"/> <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/> - <text name="label click action"> - Clique para: - </text> + <text name="label click action">Clique para:</text> <combo_box name="clickaction"> <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/> <combo_box.item label="Sentar em objeto" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Você pode modificar este objeto - </text> - <text name="Anyone can:"> - Todos: - </text> + <text name="perm_modify">Você pode modificar este objeto</text> + <text name="Anyone can:">Todos:</text> <check_box label="Copiar" name="checkbox allow everyone copy"/> <check_box label="Movimentar" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grupo: - </text> + <text name="GroupLabel">Grupo:</text> <check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenham o seu nÃvel de modificação para este objeto. Faça uma doação para ativar restrições de função."/> - <text name="NextOwnerLabel"> - Próximo proprietário: - </text> + <text name="NextOwnerLabel">Próximo proprietário:</text> <check_box label="Modificar" name="checkbox next owner can modify"/> <check_box label="Copiar" name="checkbox next owner can copy"/> <check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Preço: L$" name="Edit Cost"/> <check_box label="Mostrar nos resultados de busca" name="search_check" tool_tip="Incluir o objeto nos resultados de busca"/> - <text name="pathfinding_attributes_label"> - Atributos do pathfinding: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Atributos do pathfinding:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Abrir" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 6c1e6ab7f639ca8ef45f202b5d5bb05836b84f9c..3eef691d8daa74e36cf8fea2b44ef873c665fe9d 100755 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -406,28 +406,46 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para </string> <string name="TooltipPrice" value="L$[AMOUNT]"/> <string name="TooltipOutboxDragToWorld"> - Não é possÃvel fazer rez do itens em sua caixa de saÃda do lojista + Não é possÃvel fazer rez de itens da pasta Listagens do Marketplace + </string> + <string name="TooltipOutboxWorn"> + Não é possÃvel colocar itens que você estiver usando na pasta Listagens do Marketplace + </string> + <string name="TooltipOutboxFolderLevels"> + A profundidade das pastas aninhadas excede [AMOUNT]. Diminua a profundidade das pastas dentro de pastas. Agrupe os itens se necessário. + </string> + <string name="TooltipOutboxTooManyFolders"> + O número de subpastas excede [AMOUNT]. Diminua a o número de pastas em sua listagem. Agrupe os itens se necessário. + </string> + <string name="TooltipOutboxTooManyObjects"> + O número de itens excede [AMOUNT]. Para vender mais que [AMOUNT] itens em uma listagem, você deve agrupar alguns deles. + </string> + <string name="TooltipOutboxTooManyStockItems"> + O número de itens de estoque excede [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Você pode soltar somente itens ou pastas na aba TUDO. Selecione essa aba e mova seus itens ou pastas novamente. </string> <string name="TooltipOutboxNoTransfer"> - Um ou mais destes objetos não podem ser vendidos ou transferidos. + Um ou mais objetos não podem ser vendidos ou transferidos </string> <string name="TooltipOutboxNotInInventory"> - Sua caixa de saÃda do lojista aceita apenas itens direto do seu inventário + É possÃvel colocar somente itens do seu inventário no Marketplace </string> - <string name="TooltipOutboxWorn"> - Você não pode colocar os itens que está vestindo na sua caixa de saÃda do lojista + <string name="TooltipOutboxLinked"> + Não é possÃvel colocar itens ou pastas vinculadas no Marketplace </string> <string name="TooltipOutboxCallingCard"> - Não é possÃvel colocar cartões de visita em sua caixa de saÃda do lojista + Não é possÃvel colocar cartões de visitas no Marketplace </string> - <string name="TooltipOutboxFolderLevels"> - A profundidade das pastas aninhadas excede 3 + <string name="TooltipOutboxDragActive"> + Não é possÃvel mover uma listagem publicada </string> - <string name="TooltipOutboxTooManyFolders"> - A contagem de subpastas na pasta de nÃvel superior excede 20 + <string name="TooltipOutboxCannotMoveRoot"> + Não é possÃvel mover a pasta raiz das listagens do Marketplace </string> - <string name="TooltipOutboxTooManyObjects"> - A contagem de itens na pasta de nÃvel superior excede 200 + <string name="TooltipOutboxMixedStock"> + Todos os itens em uma pasta de estoque têm o mesmo tipo e permissão </string> <string name="TooltipDragOntoOwnChild"> Não é possÃvel mover uma pasta para seu filho @@ -1009,7 +1027,7 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="AgentNameSubst"> (Você) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Suprimir alertas ao gerenciar listas de acesso ao terreno </string> @@ -1076,6 +1094,12 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="bitmap_image_files"> Imagens Bitmap </string> + <string name="png_image_files"> + Imagens PNG + </string> + <string name="save_texture_image_files"> + Imagens targa ou PNG + </string> <string name="avi_movie_file"> Arquivo de vÃdeo AVI </string> @@ -1325,6 +1349,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="FavoritesNoMatchingItems"> Arraste um marco para adicioná-lo aos seus favoritos. </string> + <string name="MarketplaceNoMatchingItems"> + Nenhum item correspondente encontrado. Verifique a ortografia de sua cadeia de pesquisa e tente novamente. + </string> <string name="InventoryNoTexture"> Você não possui uma cópia desta textura no seu inventário </string> @@ -1372,29 +1399,95 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="InventoryOutboxError"> A loja [[MARKETPLACE_CREATE_STORE_URL] no Marketplace] está retornando erros. </string> + <string name="InventoryMarketplaceError"> + Esse recurso está em beta. Inscreva-se neste [http://goo.gl/forms/FCQ7UXkakz formulário do Google] se você deseja participar. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Sua pasta Listagens do Marketplace está vazia. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Arraste pastas para esta área para listá-las para venda no [Marketplace [MARKETPLACE_DASHBOARD_URL]]. + </string> + <string name="Marketplace Validation Warning Stock"> + a pasta de estoque deve estar em uma pasta de versões + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Erro: todos os itens em uma pasta de estoque devem ser de cópia proibida e todos do mesmo tipo + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Erro: a pasta de estoque não pode ter subpastas + </string> + <string name="Marketplace Validation Warning Empty"> + : Aviso: a pasta não contém itens + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Aviso: criando pasta de estoque + </string> + <string name="Marketplace Validation Warning Create Version"> + : Aviso: criando pasta de versões + </string> + <string name="Marketplace Validation Warning Move"> + : Aviso: movendo itens + </string> + <string name="Marketplace Validation Warning Delete"> + : Aviso: conteúdo da pasta transferido para pasta de estoque, removendo pasta vazia + </string> + <string name="Marketplace Validation Error Stock Item"> + : Erro: itens de cópia proibida devem estar em uma pasta de estoque + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Aviso: os itens devem estar em uma pasta de versões + </string> + <string name="Marketplace Validation Error"> + : Erro: + </string> + <string name="Marketplace Validation Warning"> + : Aviso: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Aviso: a pasta de versões deve conter pelo menos 1 item + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Aviso: a pasta de estoque deve conter pelo menos 1 item + </string> + <string name="Marketplace Validation No Error"> + Não há erros ou avisos + </string> <string name="Marketplace Error None"> Sem erros </string> + <string name="Marketplace Error Prefix"> + Erro: + </string> <string name="Marketplace Error Not Merchant"> - Erro: antes de enviar os itens para o Mercado, é necessário que você se defina como um lojista (sem custos). + antes de enviar os itens para o Marketplace, é necessário que você se defina como um lojista (sem custos). + </string> + <string name="Marketplace Error Not Accepted"> + Não é possÃvel mover o item nessa pasta. </string> - <string name="Marketplace Error Empty Folder"> - Erro: esta pasta está vazia. + <string name="Marketplace Error Unsellable Item"> + Este item não pode ser vendido no Marketplace. </string> - <string name="Marketplace Error Unassociated Products"> - Erro: ocorreu uma falha ao enviar este item, pois sua conta de lojista tem muitos itens não associados a produtos. Para corrigir esse erro, faça o login no site do mercado e reduza a contagem de itens não associados. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Object Limit"> - Erro: este item contém muitos objetos. Corrija esse erro unindo os objetos em caixa para reduzir a contagem total a menos de 200. + <string name="MarketplaceLive"> + publicada </string> - <string name="Marketplace Error Folder Depth"> - Erro: este item contém muitos nÃveis de pastas aninhadas. Reorganize-o em até 3 nÃveis de pastas aninhadas, no máximo. + <string name="MarketplaceActive"> + ativo </string> - <string name="Marketplace Error Unsellable Item"> - Erro: este item não pode ser vendido no mercado. + <string name="MarketplaceMax"> + máx </string> - <string name="Marketplace Error Internal Import"> - Erro: ocorreu um problema com este item. Tente novamente mais tarde. + <string name="MarketplaceStock"> + estoque + </string> + <string name="MarketplaceNoStock"> + esgotado + </string> + <string name="MarketplaceUpdating"> + atualizando... </string> <string name="Open landmarks"> Marcos abertos @@ -1415,6 +1508,7 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para Nenhum conteúdo </string> <string name="WornOnAttachmentPoint" value="(vestido em [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (ativado)"/> <string name="Chat Message" value="Bate-papo:"/> <string name="Sound" value="Som"/> @@ -1679,6 +1773,15 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="Invalid Attachment"> Ponto de encaixe inválido </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Erro: item ausente + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Erro: item base ausente + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Erro: o objeto está no look atual, mas não foi anexado + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] de idade </string> @@ -1814,9 +1917,6 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="CompileQueueUnknownFailure"> Falha desconhecida para download </string> - <string name="CompileNoExperiencePerm"> - Pulando script [SCRIPT] com experiência [EXPERIENCE] - </string> <string name="CompileQueueTitle"> Progresso do recompilamento </string> @@ -1850,6 +1950,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="SaveComplete"> Salvo. </string> + <string name="UploadFailed"> + Falha ao carregar arquivo: + </string> <string name="ObjectOutOfRange"> Script (objeto fora de alcance) </string> @@ -1859,6 +1962,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="GroupsNone"> nenhum </string> + <string name="CompileNoExperiencePerm"> + Pulando script [SCRIPT] com experiência [EXPERIENCE] + </string> <string name="Group" value="(grupo)"/> <string name="Unknown"> (Desconhecido) @@ -4940,6 +5046,9 @@ Tente colocar o caminho do editor entre aspas. <string name="Command_Marketplace_Label"> Mercado </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> <string name="Command_MiniMap_Label"> Mini Mapa </string> @@ -5027,6 +5136,9 @@ Tente colocar o caminho do editor entre aspas. <string name="Command_Marketplace_Tooltip"> Faça compras </string> + <string name="Command_MarketplaceListings_Tooltip"> + Venda suas criações + </string> <string name="Command_MiniMap_Tooltip"> Mostrar quem está aqui </string> @@ -5138,6 +5250,18 @@ Tente colocar o caminho do editor entre aspas. <string name="UserDictionary"> [Usuário] </string> + <string name="logging_calls_disabled_log_empty"> + As conversas não estão sendo registradas. Para começar a manter um registro, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências> Bate-papo. + </string> + <string name="logging_calls_disabled_log_not_empty"> + Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências> Bate-papo. + </string> + <string name="logging_calls_enabled_log_empty"> + Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui. + </string> + <string name="loading_chat_logs"> + Carregando... + </string> <string name="experience_tools_experience"> Experiência </string> @@ -5219,16 +5343,4 @@ Tente colocar o caminho do editor entre aspas. <string name="ExperiencePermissionShort12"> Autorização </string> - <string name="logging_calls_disabled_log_empty"> - As conversas não estão sendo registradas. Para começar a manter um registro, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências> Bate-papo. - </string> - <string name="logging_calls_disabled_log_not_empty"> - Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências> Bate-papo. - </string> - <string name="logging_calls_enabled_log_empty"> - Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui. - </string> - <string name="loading_chat_logs"> - Carregando... - </string> </strings> diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml index 9494106e96fda9da2689fd476113d67f58e21d0b..0f75856a9182fd839d9d2d4de83b136a5ff6970a 100755 --- a/indra/newview/skins/default/xui/ru/floater_about.xml +++ b/indra/newview/skins/default/xui/ru/floater_about.xml @@ -1,70 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="О [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - ИÑпользован компилÑтор [COMPILER], верÑÐ¸Ñ [COMPILER_VERSION] - </floater.string> - <floater.string name="AboutPosition"> - Ð’Ñ‹ в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», раÑположенном на <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -SLURL: <nolink>[SLURL]</nolink> -(глобальные координаты [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - ЦП: [CPU] -ПамÑÑ‚ÑŒ: [MEMORY_MB] МБ -ВерÑÐ¸Ñ ÐžÐ¡: [OS_VERSION] -Производитель графичеÑкой платы: [GRAPHICS_CARD_VENDOR] -ГрафичеÑÐºÐ°Ñ Ð¿Ð»Ð°Ñ‚Ð°: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - ВерÑÐ¸Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого драйвера Windows: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - ВерÑÐ¸Ñ OpenGL: [OPENGL_VERSION] -ВерÑÐ¸Ñ libcurl: [LIBCURL_VERSION] -ВерÑÐ¸Ñ Ð´ÐµÐºÐ¾Ð´ÐµÑ€Ð° J2C: [J2C_VERSION] -ВерÑÐ¸Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð° звука: [AUDIO_DRIVER_VERSION] -ВерÑÐ¸Ñ Qt Webkit: [QT_WEBKIT_VERSION] -ВерÑÐ¸Ñ Ð³Ð¾Ð»Ð¾Ñового Ñервера: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (нет) - </floater.string> - <floater.string name="AboutTraffic"> - ПотерÑно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Ошибка при получении URL-адреÑа заметок о выпуÑке Ñервера. - </floater.string> <tab_container name="about_tab"> <panel label="Данные" name="support_panel"> <button label="Копировать в буфер обмена" name="copy_btn"/> </panel> <panel label="Создатели" name="credits_panel"> - <text name="linden_intro"> - Игра Second Life разработана лабораторией Lindens: - </text> - <text name="contrib_intro"> - в напиÑании открытого кода учаÑтвовали: - </text> - <text_editor name="contrib_names"> - ПÑевдо-Ð¸Ð¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ при запуÑке - </text_editor> - <text name="trans_intro"> - перевод: - </text> - <text_editor name="trans_names"> - ПÑевдо-Ð¸Ð¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ при запуÑке - </text_editor> + <text name="linden_intro">Игра Second Life разработана лабораторией Lindens, +в напиÑании открытого кода учаÑтвовали:</text> + <text_editor name="contrib_names">ПÑевдо-Ð¸Ð¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ при запуÑке</text_editor> </panel> <panel label="Лицензии" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK (C) 1992-2009 3Dconnexion APR (C) 2011 The Apache Software Foundation Collada DOM (C) 2006 Sony Computer Entertainment Inc. cURL (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -91,8 +37,7 @@ SLURL: <nolink>[SLURL]</nolink> Ð’Ñе права защищены. Подробные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñм. в файле licenses.txt. - Кодирование звука Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñового чата: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Кодирование звука Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñового чата: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_associate_listing.xml b/indra/newview/skins/default/xui/ru/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc9a19730be3b12a8b0540d04e00a63cbea2a395 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="СВЯЗÐТЬ СПИСОК"> + <text name="message">ID ÑпиÑка:</text> + <line_editor name="listing_id">Введите ID</line_editor> + <button label="OK" name="OK"/> + <button label="Отмена" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/ru/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..292128d2957c22adb604ff2ff6584d0698b3e454 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="ЗÐДÐЙТЕ ВЫСОТУ ПÐРЕÐИЯ"> + <slider label="Ð’Ñ‹Ñота" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml index 9021b71fe2367bd037a10c070bb6be92d10df37b..c988825756e949d4bee091071abc7f0060d7883b 100755 --- a/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="СВОЙСТВРПРЕДМЕТÐ"> - <floater.string name="unknown"> - (неизвеÑтно) - </floater.string> - <floater.string name="public"> - (публичное) - </floater.string> - <floater.string name="you_can"> - Ð’Ñ‹ можете: - </floater.string> - <floater.string name="owner_can"> - Владелец может: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Ðазвание: - </text> - <text name="LabelItemDescTitle"> - ОпиÑание: - </text> - <text name="LabelCreatorTitle"> - Создатель: - </text> + <floater.string name="unknown">(неизвеÑтно)</floater.string> + <floater.string name="public">(публичное)</floater.string> + <floater.string name="you_can">Ð’Ñ‹ можете:</floater.string> + <floater.string name="owner_can">Владелец может:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Ðазвание:</text> + <text name="LabelItemDescTitle">ОпиÑание:</text> + <text name="LabelCreatorTitle">Создатель:</text> <button label="Профиль…" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Владелец: - </text> + <text name="LabelOwnerTitle">Владелец:</text> <button label="Профиль…" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Приобретено: - </text> - <text name="LabelAcquiredDate"> - Ср 24 Май 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Ð’Ñ‹: - </text> + <text name="LabelAcquiredTitle">Приобретено:</text> + <text name="LabelAcquiredDate">Ср 24 Май 12:50:46 2006</text> + <text name="OwnerLabel">Ð’Ñ‹:</text> <check_box label="Изменить" name="CheckOwnerModify"/> <check_box label="Копировать" name="CheckOwnerCopy"/> <check_box label="Перепродать" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Ð’Ñе: - </text> + <text name="AnyoneLabel">Ð’Ñе:</text> <check_box label="Копировать" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Группа: - </text> + <text name="GroupLabel">Группа:</text> <check_box label="ПоделитьÑÑ" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Следующий владелец: - </text> + <text name="NextOwnerLabel">Следующий владелец:</text> <check_box label="Изменить" name="CheckNextOwnerModify"/> <check_box label="Копировать" name="CheckNextOwnerCopy"/> <check_box label="Перепродать" name="CheckNextOwnerTransfer"/> <check_box label="Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð°Ð¶Ð¸" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Копировать" name="Copy"/> + <combo_box.item label="Содержимое" name="Contents"/> <combo_box.item label="Оригинал" name="Original"/> </combo_box> <spinner label="Цена:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_item_properties.xml b/indra/newview/skins/default/xui/ru/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..abd75902fd0f4607cd4898b0b991e91ee4966f0e --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="СВОЙСТВРПРЕДМЕТÐ"/> diff --git a/indra/newview/skins/default/xui/ru/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/ru/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..b2319973074be4cb6af914ed3c320c163a0900f6 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="СПИСКИ ТОВÐРОВ Ð’ ТОРГОВОМ ЦЕÐТРЕ"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Загрузка...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/ru/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..6b293014bc70e34beb297b044c122171cc284d7b --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Проверить ÑпиÑки товаров в торговом центре"> + <button label="OK" label_selected="OK" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_openobject.xml b/indra/newview/skins/default/xui/ru/floater_openobject.xml index 54596042682313880148dd0b8bd86b18c078125e..a4b6e2af11d514c5d0f850dd25df4994c6314882 100755 --- a/indra/newview/skins/default/xui/ru/floater_openobject.xml +++ b/indra/newview/skins/default/xui/ru/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Копировать в инвентарь" label_selected="Копировать в инвентарь" name="copy_to_inventory_button"/> - <button label="Копировать и добавить в коÑтюм" label_selected="Копировать и добавить в коÑтюм" name="copy_and_wear_button"/> + <text name="border_note"> + Копировать в инвентарь и надеть + </text> + <button label="Добавить в коÑтюм" label_selected="Добавить в коÑтюм" name="copy_and_wear_button"/> + <button label="Заменить коÑтюм" label_selected="Заменить коÑтюм" name="copy_and_replace_button"/> + <button label="Только копировать в инвентарь" label_selected="Только копировать в инвентарь" name="copy_to_inventory_button"/> + <button label="Отмена" label_selected="Отмена" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_pay.xml b/indra/newview/skins/default/xui/ru/floater_pay.xml index 1471a7e13351b7cf2805400c36ebafde9e8df918..0a269b9e000c7e5101db51ac37323ddf8206e79c 100755 --- a/indra/newview/skins/default/xui/ru/floater_pay.xml +++ b/indra/newview/skins/default/xui/ru/floater_pay.xml @@ -1,21 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Заплатить группе - </string> - <string name="payee_resident"> - Заплатить жителю - </string> - <text name="payee_name"> - Слишком длинное теÑтовое Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - Или введите количеÑтво: - </text> - <button label="Заплатить" label_selected="Заплатить" name="pay btn"/> - <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + <string name="payee_group">Заплатить группе</string> + <string name="payee_resident">Заплатить жителю</string> + <text name="paying_text">Ð’Ñ‹ платите:</text> + <text name="payee_name">Слишком длинное теÑтовое Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ обрезаниÑ</text> + <panel label="ПоиÑк" name="PatternsPanel"> + <button label="Оплатить L$ 1" label_selected="Оплатить L$ 1" name="fastpay 1"/> + <button label="Оплатить L$ 5" label_selected="Оплатить L$ 5" name="fastpay 5"/> + <button label="Оплатить L$ 10" label_selected="Оплатить L$ 10" name="fastpay 10"/> + <button label="Оплатить L$ 20" label_selected="Оплатить L$ 20" name="fastpay 20"/> + </panel> + <panel label="ПоиÑк" name="InputPanel"> + <text name="amount text">Ð”Ñ€ÑƒÐ³Ð°Ñ Ñумма:</text> + <button label="Оплатить" label_selected="Оплатить" name="pay btn"/> + <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_pay_object.xml b/indra/newview/skins/default/xui/ru/floater_pay_object.xml index 7d2da44ac13a9bdb358706ec7c82f1fc5049daf5..9a7b233ca229112d1782df4b456d57c31bc73419 100755 --- a/indra/newview/skins/default/xui/ru/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/ru/floater_pay_object.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Заплатить группе - </string> - <string name="payee_resident"> - Заплатить жителю - </string> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - Через объект: - </text> + <string name="payee_group">Заплатить группе</string> + <string name="payee_resident">Заплатить жителю</string> + <text name="paying_text">Ð’Ñ‹ платите:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">Через объект:</text> <icon name="icon_object" tool_tip="Объекты"/> - <text name="object_name_text"> - Мой офигенный объект Ñ Ð½ÐµÑпичеÑки длинным названием - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - Или введите количеÑтво: - </text> - <button label="Заплатить" label_selected="Заплатить" name="pay btn"/> - <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + <text name="object_name_text">Мой офигенный объект Ñ Ð½ÐµÑпичеÑки длинным названием</text> + <panel label="ПоиÑк" name="PatternsPanel"> + <button label="Оплатить L$ 1" label_selected="Оплатить L$ 1" name="fastpay 1"/> + <button label="Оплатить L$ 5" label_selected="Оплатить L$ 5" name="fastpay 5"/> + <button label="Оплатить L$ 10" label_selected="Оплатить L$ 10" name="fastpay 10"/> + <button label="Оплатить L$ 20" label_selected="Оплатить L$ 20" name="fastpay 20"/> + </panel> + <panel label="ПоиÑк" name="InputPanel"> + <text name="amount text">Ð”Ñ€ÑƒÐ³Ð°Ñ Ñумма:</text> + <button label="Оплатить" label_selected="Оплатить" name="pay btn"/> + <button label="Отмена" label_selected="Отмена" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml index 2b1291a8d5f5ae74266b2becc574536599f050d1..033d36484b2e3fb091dc0a77c09a45b1e35ab9ee 100755 --- a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Мой внешний вид" name="Change Outfit"/> <menu_item_call label="Изменить коÑтюм" name="Edit Outfit"/> <menu_item_call label="Изменить фигуру" name="Edit My Shape"/> + <menu_item_call label="Ð’Ñ‹Ñота парениÑ" name="Hover Height"/> <menu_item_call label="Мои друзьÑ" name="Friends..."/> <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml index e09117226ce6fe77128ca5abd69155c57c6c7b01..8feaa3b99a258e01fe389091db9c5c0f3b02367d 100755 --- a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Мой внешний вид" name="Chenge Outfit"/> <menu_item_call label="Изменить коÑтюм" name="Edit Outfit"/> <menu_item_call label="Изменить фигуру" name="Edit My Shape"/> + <menu_item_call label="Ð’Ñ‹Ñота парениÑ" name="Hover Height"/> <menu_item_call label="Мои друзьÑ" name="Friends..."/> <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml index 308549c2548b149fc293aa776ae155c6ce5d111e..b8cbef8246bbcd77116f6bb53e0704639365ca6e 100755 --- a/indra/newview/skins/default/xui/ru/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Создать ÑпиÑок" name="Marketplace Create Listing"/> + <menu_item_call label="СвÑзать ÑпиÑок" name="Marketplace Associate Listing"/> + <menu_item_call label="Получить (обновить) ÑпиÑок" name="Marketplace Get Listing"/> + <menu_item_call label="Проверка на ошибки" name="Marketplace Check Listing"/> + <menu_item_call label="Изменить ÑпиÑок" name="Marketplace Edit Listing"/> + <menu_item_call label="Опубликовать" name="Marketplace List"/> + <menu_item_call label="Отменить публикацию" name="Marketplace Unlist"/> + <menu_item_call label="Ðктивировать" name="Marketplace Activate"/> + <menu_item_call label="Деактивировать" name="Marketplace Deactivate"/> <menu_item_call label="ПоделитьÑÑ" name="Share"/> <menu_item_call label="Купить" name="Task Buy"/> <menu_item_call label="Открыть" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Добавить" name="Wearable Add"/> <menu_item_call label="СнÑÑ‚ÑŒ" name="Take Off"/> <menu_item_call label="Копировать в «Торговые иÑходÑщие»" name="Merchant Copy"/> - <menu_item_call label="Отправить в торговый центр" name="Marketplace Send"/> + <menu_item_call label="Копировать в ÑпиÑки товаров торгового центра" name="Marketplace Copy"/> + <menu_item_call label="ПеремеÑтить в ÑпиÑки товаров торгового центра" name="Marketplace Move"/> <menu_item_call label="- нет дейÑтвий -" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/ru/menu_marketplace_view.xml b/indra/newview/skins/default/xui/ru/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..b299c8202f9db741b6dee730dc8131012382510e --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Сортировать по объему запаÑов (от малых к большим)" name="sort_by_stock_amount"/> + <menu_item_check label="Показывать только папки ÑпиÑков" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index 69bb4c4af9e1146a16bb75978ccdf041713c1d96..958105a70f3ddb89ddbe93f9ef2e898cfc0692b3 100755 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="Купить L$..." name="Buy and Sell L$"/> <menu_item_call label="Торговые иÑходÑщие..." name="MerchantOutbox"/> + <menu_item_call label="СпиÑки товаров торгового центра..." name="MarketplaceListings"/> <menu_item_call label="Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ аккаунта..." name="Manage My Account"/> <menu_item_call label="ÐаÑтройки..." name="Preferences"/> <menu_item_call label="Кнопки панели инÑтрументов..." name="Toolbars"/> @@ -248,6 +249,7 @@ <menu_item_check label="КонÑоль текÑтур" name="Texture Console"/> <menu_item_check label="КонÑоль отладки" name="Debug Console"/> <menu_item_call label="КонÑоль уведомлений" name="Notifications"/> + <menu_item_check label="КонÑоль отладки региона" name="Region Debug Console"/> <menu_item_check label="Оперативные таймеры" name="Fast Timers"/> <menu_item_check label="ПамÑÑ‚ÑŒ" name="Memory"/> <menu_item_check label="СтатиÑтика по Ñцене" name="Scene Statistics"/> @@ -351,7 +353,7 @@ <menu_item_check label="Прикрепить объекты Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ð¾Ð»Ñции" name="Ping Interpolate Object Positions"/> <menu_item_call label="ОпуÑтить пакет" name="Drop a Packet"/> </menu> - <menu_item_call label="Дамп камеры Ñо Ñкриптами" name="Dump Scripted Camera"/> + <menu_item_call label="Дамп камеры Ñо Ñкриптами" name="Dump Scripted Camera"/> <menu label="Диктофон" name="Recorder"> <menu_item_call label="Ðачать воÑпроизведение" name="Start Playback"/> <menu_item_call label="ОÑтановить воÑпроизведение" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index 206be2e2df6ba0842832e50f53b6537d20f7d7da..acf3ce608f918a4c7046118ff1e38fb115290b21 100755 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -129,6 +129,88 @@ Ðе удалоÑÑŒ инициализировать торговый центр из-за ошибки ÑиÑтемы или Ñети. Повторите попытку позже. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="StockPasteFailed"> + Ðе удалоÑÑŒ Ñкопировать или перемеÑтить в папку запаÑов, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantPasteFailed"> + Ðе удалоÑÑŒ Ñкопировать или перемеÑтить в ÑпиÑки товаров торгового центра, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantTransactionFailed"> + Ðе удалоÑÑŒ выполнить транзакцию Ñ Ñ‚Ð¾Ñ€Ð³Ð¾Ð²Ñ‹Ð¼ центром, ошибка: + + Причина: '[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Ðе удалоÑÑŒ опубликовать Ñтот продукт или активировать папку верÑии. Обычно Ñто проиÑходит из-за отÑутÑÑ‚Ð²Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ в форме опиÑÐ°Ð½Ð¸Ñ ÑпиÑка, но также может быть ÑвÑзано Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð¼Ð¸ в Ñтруктуре папки. Отредактируйте ÑпиÑок или проверьте папку ÑпиÑка на отÑутÑтвие ошибок. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantListingFailed"> + Ðе удалоÑÑŒ опубликовать в торговом центре, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Ðе удалоÑÑŒ активировать Ñту папку верÑии, ошибка: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Ðто дейÑтвие вызовет изменение активного Ñодержимого данного ÑпиÑка. Продолжить? + <usetemplate ignoretext="Подтверждать Ñмену активного ÑпиÑка в торговом центре" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + При перетаÑкивании в окно ÑпиÑков товаров торгового центра предметы перемещаютÑÑ Ñо Ñвоего иÑходного меÑта, а не копируютÑÑ. Продолжить? + <usetemplate ignoretext="Подтверждать перемещение предмета из Ð¸Ð½Ð²ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð² торговый центр" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Ð’ результате Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿ÐºÐ¸ ÑпиÑка будет удален ваш ÑпиÑок товаров в торговом центре. ЕÑли требуетÑÑ Ñохранить ÑпиÑок в торговом центре, перемеÑтите или удалите Ñодержимое папки верÑии, которое необходимо изменить. Продолжить? + <usetemplate ignoretext="Подтверждать перемещение или удаление ÑпиÑка из торгового центра" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на копирование Ñтих предметов в торговый центр. ПеремеÑтите их или оÑтавьте здеÑÑŒ. + <usetemplate canceltext="Отмена" ignoretext="Подтверждать попытку ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐºÐ¾Ð¿Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… предметов в торговый центр" name="yesnocancelbuttons" notext="Ðе перемещать предмет(Ñ‹)" yestext="ПеремеÑтить предмет(Ñ‹)"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Ðто дейÑтвие вызовет отмену публикации ÑпиÑка. Продолжить? + <usetemplate ignoretext="Подтверждать отмену публикации активного ÑпиÑка в торговом центре" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Ðто дейÑтвие вызовет деактивацию папки верÑии текущего ÑпиÑка. Продолжить? + <usetemplate ignoretext="Подтверждать деактивирование папки верÑии ÑпиÑка в торговом центре" name="okcancelignore" notext="Отмена" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Ðе удалоÑÑŒ обновить Ñтот ÑпиÑок. +[[URL] Щелкните здеÑÑŒ], чтобы изменить его в торговом центре. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + ÐÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ð´ÐµÑ‚ÑŒ одежду или чаÑÑ‚ÑŒ тела, еÑли они находÑÑ‚ÑÑ Ð² папке ÑпиÑков товаров торгового центра. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Ðеверный идентификатор ÑпиÑка. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Ð’ Ñтом ÑпиÑке неÑколько папок верÑий или нет ни одной. СамоÑтоÑтельно выберите и активируйте одну папку позже. + <usetemplate ignoretext="Предупреждать об активировании папки верÑии, еÑли Ñоздан ÑпиÑок Ñ Ð½ÐµÑколькими папками верÑий" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Предметы разных типов раÑпределены по отдельным папкам запаÑов, поÑтому папка ÑиÑтематизирована так, чтобы ее можно было опубликовать. + <usetemplate ignoretext="Предупреждать о разделении папки запаÑов перед публикацией" name="okignore" yestext="OK"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ ÑпиÑка прекращена, так как папка запаÑов пуÑта. Добавьте предметы в папку запаÑов, чтобы опубликовать ÑпиÑок Ñнова. + <usetemplate ignoretext="Оповещать о неудавшейÑÑ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ ÑпиÑка из-за того, что папка запаÑов пуÑта" name="okignore" yestext="OK"/> + </notification> <notification name="CompileQueueSaveText"> Ошибка при передаче текÑта Ñкрипта по Ñледующей причине: [REASON]. Повторите попытку позже. </notification> @@ -473,6 +555,10 @@ Сохранить изменениÑ? <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Ðе ÑохранÑÑ‚ÑŒ" yestext="Сохранить"/> </notification> + <notification name="DeleteNotecard"> + Удалить заметку? + <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Ðе удалоÑÑŒ Ñохранить жеÑÑ‚. ЖеÑÑ‚ Ñодержит Ñлишком много Ñтапов. @@ -1868,6 +1954,9 @@ http://secondlife.com/download. Ð’Ñ‹ пытаетеÑÑŒ поÑетить регион, контент в котором не ÑоответÑтвует вашим наÑтройкам. Попробуйте изменить наÑтройки в меню «Я > ÐаÑтройки > Общие». <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> Ð’Ñ‹ пытаетеÑÑŒ поÑетить регион, контент в котором имеет рейтинг [REGIONMATURITY] и предназначен только Ð´Ð»Ñ Ð²Ð·Ñ€Ð¾Ñлых. <url name="url"> @@ -2155,6 +2244,10 @@ http://secondlife.com/download. <ignore name="ignore" text="УÑтановлено дейÑтвие «Заплатить за объект» при поÑтроении объекта без Ñкрипта money()"/> </form> </notification> + <notification name="PayConfirmation"> + Подтвердите оплату L$[AMOUNT] Ð´Ð»Ñ [TARGET]. + <usetemplate ignoretext="Подтверждать перед оплатой (Ð´Ð»Ñ Ñумм более L$200)" name="okcancelignore" notext="Отмена" yestext="Оплатить"/> + </notification> <notification name="OpenObjectCannotCopy"> Ð’ Ñтом объекте нет вещей, которые вам разрешено копировать. </notification> @@ -3841,9 +3934,11 @@ http://secondlife.com/download. </notification> <notification name="TeleportedByAttachment"> Ð’Ñ‹ были телепортированы прикрепленным объектом [ITEM_ID] + <usetemplate ignoretext="ТелепортациÑ: вы были телепортированы прикрепленным объектом" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> Ð’Ñ‹ были телепортированы объектом «[OBJECT_NAME]» на учаÑтке «[PARCEL_NAME]» + <usetemplate ignoretext="ТелепортациÑ: вы были телепортированы объектом на учаÑтке" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Ð’Ñ‹ были телепортированы объектом «[OBJECT_NAME]», владелец – [OWNER_ID] @@ -4175,7 +4270,7 @@ http://secondlife.com/download. <usetemplate ignoretext="Ðевозможно перемеÑтить файлы. ВоÑÑтановлен прежний путь." name="okignore" yestext="OK"/> </notification> <notification name="DefaultObjectPermissions"> - Ошибка при Ñохранении Ñтандартных разрешений по Ñледующей причине: [REASON]. Попробуйте задать Ñтандартные Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· некоторое времÑ. + Ошибка при Ñохранении Ñтандартных разрешений на объект: [REASON]. Попробуйте задать Ñтандартные Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· некоторое времÑ. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/ru/panel_login.xml b/indra/newview/skins/default/xui/ru/panel_login.xml index a19304f2fd3c315ce18b1ca902a08e0995c409a7..2e0ae89b286745d9903c41b44108a70fcda741a8 100755 --- a/indra/newview/skins/default/xui/ru/panel_login.xml +++ b/indra/newview/skins/default/xui/ru/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" name="username_combo" tool_tip="Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, которое вы выбрали при региÑтрации, например, «bobsmith12» или «Steller Sunshine»"/> <line_editor label="Пароль" name="password_edit"/> - <check_box label="Запомнить менÑ" name="remember_check"/> - <text name="forgot_password_text"> - Забыли пароль? - </text> - <button label="Войти" name="connect_btn"/> - <text name="At_My_Last_Location_Label" font="SansSerifSmall"> - Ð’ поÑледнее меÑто - </text> <combo_box label="Мои любимые меÑта" name="start_location_combo"> + <combo_box.item label="ПоÑледнее меÑтоположение" name="MyLastLocation"/> <combo_box.item label="Мой дом" name="MyHome"/> </combo_box> - <button label="Войти" name="connect_favorite_btn"/> - <line_editor label="Введите меÑтоположение" name="location_edit" font="SansSerifSmall" /> - <button label="Войти" name="connect_location_btn"/> + <button label="Войти" name="connect_btn"/> + <check_box label="Запомнить менÑ" name="remember_check"/> + <text name="forgot_password_text">Забыли пароль?</text> <combo_box label="Выберите Ñетку" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..1f903b1046277aa371c4d2c2365a1019cc2772b5 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Торговый центр" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Параметры проÑмотра/Ñортировки"/> + <button name="add_btn" tool_tip="Создать новую папку ÑпиÑка"/> + <button label="Проверка на ошибки" name="audit_btn" tool_tip="Проверьте Ñвои ÑпиÑки товаров в торговом центре"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Фильтровать ÑпиÑки товаров в торговом центре" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff7b30188f53ba6b7b1447ed3573dc5e80eab7a9 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ВСЕ" name="All Items" tool_tip="Перетащите Ñюда предметы, чтобы внеÑти их в ÑпиÑок"/> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..b42a82084f0f12a7d4166d2ec0bdf0d367aefb67 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ОПУБЛИКОВÐÐÐЫЕ" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc69e3c362c873b7b0b0cc58f51cc452eed8e80d --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ÐЕ СВЯЗÐÐÐЫЕ" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..c630129d4471dcbf58a1f2aa9e38833c2292195e --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="ÐЕОПУБЛИКОВÐÐÐЫЕ" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/ru/panel_status_bar.xml b/indra/newview/skins/default/xui/ru/panel_status_bar.xml index 9c84ff1fd894e142e4a65e95c0e64b7128fd371d..630925fa6024f4afeb8cfc627e36bcbe3993a454 100755 --- a/indra/newview/skins/default/xui/ru/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ru/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Потери пакетов - </panel.string> - <panel.string name="bandwidth_tooltip"> - Ширина канала - </panel.string> - <panel.string name="time"> - [hour, datetime, slt]:[min, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Потери пакетов</panel.string> + <panel.string name="bandwidth_tooltip">Ширина канала</panel.string> + <panel.string name="time">[hour, datetime, slt]:[min, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-450" name="balance_bg" width="240"> - <text name="balance" tool_tip="Щелкните Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ баланÑа L$" value="L$20"/> + <text name="balance" tool_tip="Щелкните Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ баланÑа L$" value="L$??"/> <button label="Купить L$" name="buyL" tool_tip="Щелкните Ð´Ð»Ñ Ð¿Ð¾ÐºÑƒÐ¿ÐºÐ¸ L$"/> <button label="Торговый центр" name="goShop" tool_tip="Открыть торговый центр Second Life" width="121"/> </panel> - <text name="TimeText" tool_tip="Текущее Ð²Ñ€ÐµÐ¼Ñ (тихоокеанÑкое)"> - 00:00 (тихоокеанÑкое времÑ) - </text> + <text name="TimeText" tool_tip="Текущее Ð²Ñ€ÐµÐ¼Ñ (тихоокеанÑкое)">00:00 (тихоокеанÑкое времÑ)</text> <button name="media_toggle_btn" tool_tip="ЗапуÑк/оÑтановка вÑех медиа (музыка, видео, веб-Ñтраницы)"/> <button name="volume_btn" tool_tip="РегулÑтор громкоÑти"/> </panel> diff --git a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml index c42586b7b81132ea86ea2b671bb51c3d680102df..c434dcd6a8ddb3c5ca2def7a166db0f0e2df0853 100755 --- a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Передать" name="CheckNextOwnerTransfer" tool_tip="Следующий владелец может отдать или перепродать объект"/> </panel> <check_box label="Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð°Ð¶Ð¸" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Копировать" name="Copy"/> + <combo_box.item label="Содержимое" name="Contents"/> <combo_box.item label="Оригинал" name="Original"/> </combo_box> <spinner label="Цена: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml index 5502530ca466237213df157071f0005dc9c2f711..4059a800f065d0a8d0f04ee8e726ebe58c6831a0 100755 --- a/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Профиль объекта"> - <panel.string name="text deed continued"> - Сделка - </panel.string> - <panel.string name="text deed"> - Сделка - </panel.string> - <panel.string name="text modify info 1"> - Ðтот объект можно изменÑÑ‚ÑŒ - </panel.string> - <panel.string name="text modify info 2"> - Ðти объекты можно изменÑÑ‚ÑŒ - </panel.string> - <panel.string name="text modify info 3"> - Ðтот объект Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ - </panel.string> - <panel.string name="text modify info 4"> - Ðти объекты Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ - </panel.string> - <panel.string name="text modify info 5"> - Ðтот объект Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ через границу региона - </panel.string> - <panel.string name="text modify info 6"> - Ðти объекты Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ через границу региона - </panel.string> - <panel.string name="text modify warning"> - Ðтот объект Ñодержит объединенные чаÑти - </panel.string> - <panel.string name="Cost Default"> - Цена: L$ - </panel.string> - <panel.string name="Cost Total"> - Ð’Ñего: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Цена за: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Ð¡Ð¼ÐµÑˆÐ°Ð½Ð½Ð°Ñ Ñ†ÐµÐ½Ð° - </panel.string> - <panel.string name="Sale Mixed"> - Ð¡Ð¼ÐµÑˆÐ°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð´Ð°Ð¶Ð° - </panel.string> + <panel.string name="text deed continued">Сделка</panel.string> + <panel.string name="text deed">Сделка</panel.string> + <panel.string name="text modify info 1">Ðтот объект можно изменÑÑ‚ÑŒ</panel.string> + <panel.string name="text modify info 2">Ðти объекты можно изменÑÑ‚ÑŒ</panel.string> + <panel.string name="text modify info 3">Ðтот объект Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ</panel.string> + <panel.string name="text modify info 4">Ðти объекты Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ</panel.string> + <panel.string name="text modify info 5">Ðтот объект Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ через границу региона</panel.string> + <panel.string name="text modify info 6">Ðти объекты Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ через границу региона</panel.string> + <panel.string name="text modify warning">Ðтот объект Ñодержит объединенные чаÑти</panel.string> + <panel.string name="Cost Default">Цена: L$</panel.string> + <panel.string name="Cost Total">Ð˜Ñ‚Ð¾Ð³Ð¾Ð²Ð°Ñ Ñ†ÐµÐ½Ð°: L$</panel.string> + <panel.string name="Cost Per Unit">Цена за: L$</panel.string> + <panel.string name="Cost Mixed">Ð¡Ð¼ÐµÑˆÐ°Ð½Ð½Ð°Ñ Ñ†ÐµÐ½Ð°</panel.string> + <panel.string name="Sale Mixed">Ð¡Ð¼ÐµÑˆÐ°Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð´Ð°Ð¶Ð°</panel.string> <text name="title" value="Профиль объекта"/> <text name="where" value="(в мире)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Ðазвание: - </text> - <text name="Description:"> - ОпиÑание: - </text> - <text name="CreatorNameLabel"> - Создатель: - </text> - <text name="Owner:"> - Владелец: - </text> - <text name="Group_label"> - Группа: - </text> + <text name="Name:">Ðазвание:</text> + <text name="Description:">ОпиÑание:</text> + <text name="CreatorNameLabel">Создатель:</text> + <text name="Owner:">Владелец:</text> + <text name="Group_label">Группа:</text> <button name="button set group" tool_tip="Выберите группу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ ей прав доÑтупа к объекту"/> <name_box initial_value="Загрузка..." name="Group Name Proxy"/> <button label="Сделка" label_selected="Сделка" name="button deed" tool_tip="Ð’ результате Ñделки объект передаетÑÑ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ, при Ñтом права на него будут ÑоответÑтвовать правам Ñледующего владельца. Переданный группе объект может передаватьÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð¾Ñтным лицом группы."/> - <text name="label click action"> - ДейÑтвие по щелчку: - </text> + <text name="label click action">ДейÑтвие по щелчку:</text> <combo_box name="clickaction"> <combo_box.item label="КоÑнутьÑÑ (по умолчанию)" name="Touch/grab(default)"/> <combo_box.item label="СеÑÑ‚ÑŒ на объект" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="Приблизить" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Ðтот объект можно изменÑÑ‚ÑŒ - </text> - <text name="Anyone can:"> - Ð’Ñе: - </text> + <text name="perm_modify">Ðтот объект можно изменÑÑ‚ÑŒ</text> + <text name="Anyone can:">Ð’Ñе:</text> <check_box label="Копировать" name="checkbox allow everyone copy"/> <check_box label="ПеремеÑтить" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Группа: - </text> + <text name="GroupLabel">Группа:</text> <check_box label="ПоделитьÑÑ" name="checkbox share with group" tool_tip="Позволить вÑем учаÑтникам выбранной группы получить уÑтановленные вам права на Ñтот объект. Ð”Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ€Ð¾Ð»ÐµÐ²Ñ‹Ñ… ограничений необходимо произвеÑти Ñделку."/> - <text name="NextOwnerLabel"> - Следующий владелец: - </text> + <text name="NextOwnerLabel">Следующий владелец:</text> <check_box label="ИзменÑÑ‚ÑŒ" name="checkbox next owner can modify"/> <check_box label="Копировать" name="checkbox next owner can copy"/> <check_box label="Передать" name="checkbox next owner can transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Цена: L$" name="Edit Cost"/> <check_box label="Показать в результатах поиÑка" name="search_check" tool_tip="Показывать объект в результатах поиÑка"/> - <text name="pathfinding_attributes_label"> - Ðтрибуты поиÑка пути: - </text> - <text name="B:"> - Ð: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - Ð’: - </text> - <text name="N:"> - С: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Ðтрибуты поиÑка пути:</text> + <text name="B:">Ð:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">Ð’:</text> + <text name="N:">С:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Открыть" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index ba63881094650b3fa325bfca73a060f256259a4c..0d64b2cae97c55b0d48be5ad4321b5c40b2376c0 100755 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -454,28 +454,46 @@ support@secondlife.com. </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - ÐÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð»Ð¾Ð¶Ð¸Ñ‚ÑŒ предметы из папке «Торговые иÑходÑщие» + ÐÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð»Ð¾Ð¶Ð¸Ñ‚ÑŒ предметы из папки ÑпиÑков товаров торгового центра + </string> + <string name="TooltipOutboxWorn"> + ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑтить предметы, которые вы ноÑите, в папку ÑпиÑков товаров торгового центра + </string> + <string name="TooltipOutboxFolderLevels"> + Глубина Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿Ð¾Ðº превышает [AMOUNT]. Уменьшите глубину вложениÑ; при необходимоÑти Ñгруппируйте предметы. + </string> + <string name="TooltipOutboxTooManyFolders"> + КоличеÑтво подпапок не может превышать [AMOUNT]. Уменьшите количеÑтво папок в ÑпиÑке; при необходимоÑти Ñгруппируйте предметы. + </string> + <string name="TooltipOutboxTooManyObjects"> + КоличеÑтво предметов не может превышать [AMOUNT]. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð°Ð¶Ð¸ более чем [AMOUNT] предм. в одном ÑпиÑке некоторые из них Ñледует Ñгруппировать. + </string> + <string name="TooltipOutboxTooManyStockItems"> + КоличеÑтво предметов не может превышать [AMOUNT]. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Можно перетаÑкивать предметы или папки только на вкладку «ВСЕ». Выберите Ñту вкладку и перемеÑтите предметы или папки Ñнова. </string> <string name="TooltipOutboxNoTransfer"> - ЧаÑÑ‚ÑŒ Ñтих объектов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð´Ð°Ñ‚ÑŒ или передать. + ЧаÑÑ‚ÑŒ Ñтих объектов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð´Ð°Ñ‚ÑŒ или передать </string> <string name="TooltipOutboxNotInInventory"> - Ваша папка «Торговые иÑходÑщие» может получать вещи только непоÑредÑтвенно из вашего Ð¸Ð½Ð²ÐµÐ½Ñ‚Ð°Ñ€Ñ + Ð’ торговый центр можно помеÑтить только предметы из Ñвоего Ð¸Ð½Ð²ÐµÐ½Ñ‚Ð°Ñ€Ñ </string> - <string name="TooltipOutboxWorn"> - ÐоÑимые предметы Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑтить в папку «Торговые иÑходÑщие» + <string name="TooltipOutboxLinked"> + ПривÑзанные предметы или папки Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑтить в торговый центр </string> <string name="TooltipOutboxCallingCard"> - Визитки Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑтить в папку «Торговые иÑходÑщие» + ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑтить визитки в торговый центр </string> - <string name="TooltipOutboxFolderLevels"> - Глубина Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¿Ð¾Ðº превышает 3 + <string name="TooltipOutboxDragActive"> + Опубликованный ÑпиÑок Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить </string> - <string name="TooltipOutboxTooManyFolders"> - Ð’ папке верхнего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð±Ð¾Ð»ÐµÐµ 20 подпапок + <string name="TooltipOutboxCannotMoveRoot"> + Корневую папку ÑпиÑков товаров торгового центра Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°Ñ‚ÑŒ </string> - <string name="TooltipOutboxTooManyObjects"> - Ð’ папке верхнего ÑƒÑ€Ð¾Ð²Ð½Ñ Ð±Ð¾Ð»ÐµÐµ 200 предметов + <string name="TooltipOutboxMixedStock"> + У вÑех предметов в папке запаÑов должен быть один и тот же тип и разрешение </string> <string name="TooltipDragOntoOwnChild"> Папку Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить в ее подпапку @@ -1060,7 +1078,7 @@ support@secondlife.com. <string name="AgentNameSubst"> (Ð’Ñ‹) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Отключить Ð¸Ð·Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ управлении ÑпиÑками доÑтупа к землевладениÑм </string> @@ -1127,6 +1145,12 @@ support@secondlife.com. <string name="bitmap_image_files"> Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ BMP </string> + <string name="png_image_files"> + Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ PNG + </string> + <string name="save_texture_image_files"> + Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Targa или PNG + </string> <string name="avi_movie_file"> Видео AVI </string> @@ -1376,6 +1400,9 @@ support@secondlife.com. <string name="FavoritesNoMatchingItems"> Перетащите Ñюда закладку, чтобы добавить ее в ÑпиÑок избранного. </string> + <string name="MarketplaceNoMatchingItems"> + Предметы не найдены. Проверьте правильноÑÑ‚ÑŒ Ñтроки поиÑка и повторите попытку. + </string> <string name="InventoryNoTexture"> Ð’ вашем инвентаре нет копии Ñтой текÑтуры </string> @@ -1423,29 +1450,95 @@ support@secondlife.com. <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] Магазин] возвращает ошибки. </string> + <string name="InventoryMarketplaceError"> + Ðто бета-верÑÐ¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸. ЕÑли вы хотите учаÑтвовать в ее теÑтировании, заполните Ñту [http://goo.gl/forms/FCQ7UXkakz форму Google]. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Папка ÑпиÑков товаров торгового центра пуÑта. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Перетащите папки в Ñту облаÑÑ‚ÑŒ, чтобы выÑтавить их на продажу в [[MARKETPLACE_DASHBOARD_URL] Торговом центре]. + </string> + <string name="Marketplace Validation Warning Stock"> + Ð’ папке верÑии должна быть папка запаÑов + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Ошибка: вÑе предметы в папке запаÑов должны быть некопируемыми и одного типа + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Ошибка: папка запаÑов не может Ñодержать подпапки + </string> + <string name="Marketplace Validation Warning Empty"> + : Предупреждение: папка не Ñодержит предметов + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Предупреждение: ÑоздаетÑÑ Ð¿Ð°Ð¿ÐºÐ° запаÑов + </string> + <string name="Marketplace Validation Warning Create Version"> + : Предупреждение: ÑоздаетÑÑ Ð¿Ð°Ð¿ÐºÐ° верÑии + </string> + <string name="Marketplace Validation Warning Move"> + : Предупреждение: перемещаютÑÑ Ð¿Ñ€ÐµÐ´Ð¼ÐµÑ‚Ñ‹ + </string> + <string name="Marketplace Validation Warning Delete"> + : Предупреждение: Ñодержимое папки переноÑитÑÑ Ð² папку запаÑов, пуÑÑ‚Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° удалÑетÑÑ + </string> + <string name="Marketplace Validation Error Stock Item"> + : Ошибка: в папке запаÑов должны ÑодержатьÑÑ Ð½ÐµÐºÐ¾Ð¿Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ðµ предметы + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Предупреждение: в папке верÑии должны быть предметы + </string> + <string name="Marketplace Validation Error"> + : Ошибка: + </string> + <string name="Marketplace Validation Warning"> + : Предупреждение: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Предупреждение: папка верÑии должна Ñодержать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ 1 предмет + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Предупреждение: папка запаÑов должна Ñодержать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ 1 предмет + </string> + <string name="Marketplace Validation No Error"> + Ðет ошибок и предупреждений + </string> <string name="Marketplace Error None"> Ошибок нет </string> + <string name="Marketplace Error Prefix"> + Ошибка: + </string> <string name="Marketplace Error Not Merchant"> - Ошибка. Прежде чем отправлÑÑ‚ÑŒ вещи в магазин, необходимо зарегиÑтрироватьÑÑ ÐºÐ°Ðº торговец (беÑплатно). + Прежде чем отправлÑÑ‚ÑŒ предметы в торговый центр, необходимо зарегиÑтрироватьÑÑ ÐºÐ°Ðº торговец (беÑплатно). + </string> + <string name="Marketplace Error Not Accepted"> + Ðевозможно перемеÑтить предмет в Ñту папку. </string> - <string name="Marketplace Error Empty Folder"> - Ошибка. Ð’ Ñтой папке нет контента. + <string name="Marketplace Error Unsellable Item"> + Ðтот предмет Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð´Ð°Ñ‚ÑŒ в торговом центре. </string> - <string name="Marketplace Error Unassociated Products"> - Ошибка. Ðе удаетÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚ÑŒ Ñту вещь, поÑкольку в вашем торговом аккаунте Ñлишком много вещей, не ÑвÑзанных Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð°Ð¼Ð¸. Чтобы иÑправить Ñту ошибку, войдите на веб-Ñайт торгового центра и уменьшите чиÑло Ñвоих вещей, которые ни Ñ Ñ‡ÐµÐ¼ не ÑвÑзаны. + <string name="MarketplaceNoID"> + нет ID торг. центра </string> - <string name="Marketplace Error Object Limit"> - Ошибка. Ðта вещь Ñодержит Ñлишком много объектов. ИÑправьте Ñту ошибку, Ñложив объекты в коробки и уменьшив их общее чиÑло (должно быть меньше 200). + <string name="MarketplaceLive"> + опубликовано </string> - <string name="Marketplace Error Folder Depth"> - Ошибка. Ðта вещь Ñодержит Ñлишком много уровней вложенных папок. Измените Ñтруктуру так, чтобы уровней вложенных папок было не более 3. + <string name="MarketplaceActive"> + активно </string> - <string name="Marketplace Error Unsellable Item"> - Ошибка. Ðту вещь Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð´Ð°Ñ‚ÑŒ в магазине. + <string name="MarketplaceMax"> + макÑ. </string> - <string name="Marketplace Error Internal Import"> - Ошибка. Ðта вещь Ñоздает проблему. Повторите попытку позже. + <string name="MarketplaceStock"> + Ð·Ð°Ð¿Ð°Ñ + </string> + <string name="MarketplaceNoStock"> + нет в запаÑе + </string> + <string name="MarketplaceUpdating"> + обновление... </string> <string name="Open landmarks"> Открыть закладки @@ -1466,6 +1559,7 @@ support@secondlife.com. Ðет контента </string> <string name="WornOnAttachmentPoint" value="(где ноÑитÑÑ: [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (активно)"/> <string name="PermYes"> Да @@ -1736,6 +1830,15 @@ support@secondlife.com. <string name="Invalid Attachment"> ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° приÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Ошибка: отÑутÑтвует предмет + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Ошибка: отÑутÑтвует базовый предмет + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Ошибка: объект входит в текущий коÑтюм, но не прикреплен + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1871,9 +1974,6 @@ support@secondlife.com. <string name="CompileQueueUnknownFailure"> ÐеизвеÑтный Ñбой загрузки </string> - <string name="CompileNoExperiencePerm"> - ПропуÑк Ñкрипта [SCRIPT] Ñ Ð¿Ñ€Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸ÐµÐ¼ [EXPERIENCE]. - </string> <string name="CompileQueueTitle"> Ход повторной компилÑции </string> @@ -1907,6 +2007,9 @@ support@secondlife.com. <string name="SaveComplete"> Сохранение завершено. </string> + <string name="UploadFailed"> + Ðе удалоÑÑŒ загрузить файл: + </string> <string name="ObjectOutOfRange"> Скрипт (объект вне облаÑти) </string> @@ -1916,6 +2019,9 @@ support@secondlife.com. <string name="GroupsNone"> нет </string> + <string name="CompileNoExperiencePerm"> + ПропуÑк Ñкрипта [SCRIPT] Ñ Ð¿Ñ€Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸ÐµÐ¼ [EXPERIENCE]. + </string> <string name="Group" value="(группа)"/> <string name="Unknown"> (ÐеизвеÑтно) @@ -5076,6 +5182,9 @@ support@secondlife.com. <string name="Command_Marketplace_Label"> Торговый центр </string> + <string name="Command_MarketplaceListings_Label"> + Торговый центр + </string> <string name="Command_MiniMap_Label"> Миникарта </string> @@ -5163,6 +5272,9 @@ support@secondlife.com. <string name="Command_Marketplace_Tooltip"> Покупки </string> + <string name="Command_MarketplaceListings_Tooltip"> + Продайте Ñвои Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ñ + </string> <string name="Command_MiniMap_Tooltip"> Показать людей поблизоÑти </string> @@ -5274,6 +5386,18 @@ support@secondlife.com. <string name="UserDictionary"> [Пользователь] </string> + <string name="logging_calls_disabled_log_empty"> + Разговоры не запиÑываютÑÑ. Чтобы начать запиÑÑŒ разговора, в меню «ÐаÑтройки > Чат» выберите «СохранÑÑ‚ÑŒ: только журнал» или «СохранÑÑ‚ÑŒ: журнал и запиÑи». + </string> + <string name="logging_calls_disabled_log_not_empty"> + Разговоры больше не будут запиÑыватьÑÑ. Чтобы воÑÑтановить запиÑÑŒ разговора, в меню «ÐаÑтройки > Чат» выберите «СохранÑÑ‚ÑŒ: только журнал» или «СохранÑÑ‚ÑŒ: журнал и запиÑи». + </string> + <string name="logging_calls_enabled_log_empty"> + Ðет зарегиÑтрированных разговоров. ЕÑли вы обратитеÑÑŒ к кому-то или наоборот, в журнале поÑвитÑÑ Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. + </string> + <string name="loading_chat_logs"> + Загрузка... + </string> <string name="experience_tools_experience"> Приключение </string> @@ -5355,16 +5479,4 @@ support@secondlife.com. <string name="ExperiencePermissionShort12"> Разрешение </string> - <string name="logging_calls_disabled_log_empty"> - Разговоры не запиÑываютÑÑ. Чтобы начать запиÑÑŒ разговора, в меню «ÐаÑтройки > Чат» выберите «СохранÑÑ‚ÑŒ: только журнал» или «СохранÑÑ‚ÑŒ: журнал и запиÑи». - </string> - <string name="logging_calls_disabled_log_not_empty"> - Разговоры больше не будут запиÑыватьÑÑ. Чтобы воÑÑтановить запиÑÑŒ разговора, в меню «ÐаÑтройки > Чат» выберите «СохранÑÑ‚ÑŒ: только журнал» или «СохранÑÑ‚ÑŒ: журнал и запиÑи». - </string> - <string name="logging_calls_enabled_log_empty"> - Ðет зарегиÑтрированных разговоров. ЕÑли вы обратитеÑÑŒ к кому-то или наоборот, в журнале поÑвитÑÑ Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. - </string> - <string name="loading_chat_logs"> - Загрузка... - </string> </strings> diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml index 7b925e8830d6b1f2302a21d8920af6bbabb52e91..7034de64c9eb2c279569a420d15f8135785e4513 100755 --- a/indra/newview/skins/default/xui/tr/floater_about.xml +++ b/indra/newview/skins/default/xui/tr/floater_about.xml @@ -1,71 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="[CAPITALIZED_APP_NAME] HAKKINDA"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [Sürüm Notları]] - </floater.string> - <floater.string name="AboutCompiler"> - [COMPILER] [COMPILER_VERSION] sürümü ile oluÅŸturuldu - </floater.string> - <floater.string name="AboutPosition"> - <nolink>[HOSTNAME]</nolink> ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız -SLURL: <nolink>[SLURL]</nolink> -(küresel koordinatlar [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU: [CPU] -Bellek: [MEMORY_MB] MB -Ä°ÅŸl. Sis. Sürümü: [OS_VERSION] -Grafik Kartı Ãœreticisi: [GRAPHICS_CARD_VENDOR] -Grafik Kartı: [GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows Grafik Sürücüsü Sürümü: [GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL Sürümü: [OPENGL_VERSION] - -libcurl Sürümü: [LIBCURL_VERSION] -J2C Kod Çözücü Sürümü: [J2C_VERSION] -Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION] -Qt Web Kit Sürümü: [QT_WEBKIT_VERSION] -Ses Sunucusu Sürümü: [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (hiçbiri) - </floater.string> - <floater.string name="AboutTraffic"> - Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - Sunucu sürümü notları URL'si alınırken hata oluÅŸtu. - </floater.string> <tab_container name="about_tab"> <panel label="Bilgi" name="support_panel"> <button label="Panoya Kopyala" name="copy_btn"/> </panel> <panel label="Katkıda Bulunanlar" name="credits_panel"> - <text name="linden_intro"> - Second Life, Linden'lar tarafından geliÅŸtirilmiÅŸtir: - </text> - <text name="contrib_intro"> - Açık kaynak kod katkısında bulunanlar: - </text> - <text_editor name="contrib_names"> - Geçici Ad çalıştırma sırasında deÄŸiÅŸtirilir - </text_editor> - <text name="trans_intro"> - Çevirileri yapanlar: - </text> - <text_editor name="trans_names"> - Geçici Ad çalıştırma sırasında deÄŸiÅŸtirilir - </text_editor> + <text name="linden_intro">Second Life, Lindens tarafından geliÅŸtirilmiÅŸtir ve +açık kaynak kod katkısında bulunanlar ÅŸunlardır:</text> + <text_editor name="contrib_names">Geçici Ad çalıştırma sırasında deÄŸiÅŸtirilir</text_editor> </panel> <panel label="Lisanslar" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Telif Hakkı (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Telif Hakkı (C) 1992-2009 3Dconnexion APR Telif Hakkı (C) 2011 The Apache Software Foundation Collada DOM Telif Hakkı 2006 Sony Computer Entertainment Inc. cURL Telif Hakkı (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -92,8 +37,7 @@ Ses Sunucusu Sürümü: [VOICE_VERSION] Tüm hakları saklıdır. Ayrıntılı bilgi için bkz. licenses.txt - Sesli sohbet için Ses kodlaması: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + Sesli sohbet için Ses kodlaması: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_associate_listing.xml b/indra/newview/skins/default/xui/tr/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf7892993127352696d841b1c6f45356822cfe49 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="Ä°LANI Ä°LÄ°ÅžKÄ°LENDÄ°R"> + <text name="message">Ä°lan KimliÄŸi:</text> + <line_editor name="listing_id">KimliÄŸi buraya girin</line_editor> + <button label="Tamam" name="OK"/> + <button label="Ä°ptal" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/tr/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..237d886c454402ccc9c0aaff6c2ddc21d5b43ca5 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="KONUM YÃœKSEKLİĞİNÄ° AYARLA"> + <slider label="Yükseklik" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml index e49fef1f4673ba661e515a88bc18426f1432cf23..c6a5515c6edf253fa3be3b7375bf5e923d813446 100755 --- a/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="ENVANTER ÖGESÄ° ÖZELLÄ°KLERÄ°"> - <floater.string name="unknown"> - (bilinmiyor) - </floater.string> - <floater.string name="public"> - (kamuya açık) - </floater.string> - <floater.string name="you_can"> - Åžunu yapabilirsiniz: - </floater.string> - <floater.string name="owner_can"> - Sahip ÅŸunu yapabilir: - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - Ad: - </text> - <text name="LabelItemDescTitle"> - Açıklama: - </text> - <text name="LabelCreatorTitle"> - OluÅŸturan: - </text> + <floater.string name="unknown">(bilinmiyor)</floater.string> + <floater.string name="public">(kamuya açık)</floater.string> + <floater.string name="you_can">Åžunu yapabilirsiniz:</floater.string> + <floater.string name="owner_can">Sahip ÅŸunu yapabilir:</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">Ad:</text> + <text name="LabelItemDescTitle">Açıklama:</text> + <text name="LabelCreatorTitle">OluÅŸturan:</text> <button label="Profil..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Sahip: - </text> + <text name="LabelOwnerTitle">Sahip:</text> <button label="Profil..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Alınan: - </text> - <text name="LabelAcquiredDate"> - 24 Mayıs ÇarÅŸ 12:50:46 2006 - </text> - <text name="OwnerLabel"> - Siz: - </text> + <text name="LabelAcquiredTitle">Alınan:</text> + <text name="LabelAcquiredDate">24 Mayıs ÇarÅŸ 12:50:46 2006</text> + <text name="OwnerLabel">Siz:</text> <check_box label="Düzenle" name="CheckOwnerModify"/> <check_box label="Kopyala" name="CheckOwnerCopy"/> <check_box label="Tekrar Sat" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Herkes: - </text> + <text name="AnyoneLabel">Herkes:</text> <check_box label="Kopyala" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grup: - </text> + <text name="GroupLabel">Grup:</text> <check_box label="PaylaÅŸ" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Sonraki sahip: - </text> + <text name="NextOwnerLabel">Sonraki sahip:</text> <check_box label="Düzenle" name="CheckNextOwnerModify"/> <check_box label="Kopyala" name="CheckNextOwnerCopy"/> <check_box label="Tekrar Sat" name="CheckNextOwnerTransfer"/> <check_box label="Satılık" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Kopyala" name="Copy"/> + <combo_box.item label="İçerik" name="Contents"/> <combo_box.item label="Orijinal" name="Original"/> </combo_box> <spinner label="Fiyat:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_item_properties.xml b/indra/newview/skins/default/xui/tr/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..3146384b33f981a456d5e4cdc34f26f3210ba72b --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="ÖĞE ÖZELLÄ°KLERÄ°"/> diff --git a/indra/newview/skins/default/xui/tr/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/tr/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f4837a300f46d09919e9bb30937b717b041c369e --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="PAZARYERÄ° Ä°LANLARI"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">Yükleniyor...</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/tr/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec563535d1860f35073486943f17c5c5ec1e0e7b --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="Pazaryeri Ä°lanlarını Denetle"> + <button label="Tamam" label_selected="Tamam" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_openobject.xml b/indra/newview/skins/default/xui/tr/floater_openobject.xml index adcf5dede2f0fa8554c613c9df0a786b01addec0..38764394285837065e2ac1ef7ae4ca43b1304791 100755 --- a/indra/newview/skins/default/xui/tr/floater_openobject.xml +++ b/indra/newview/skins/default/xui/tr/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="Envantere kopyala" label_selected="Envantere kopyala" name="copy_to_inventory_button"/> - <button label="Kopyala ve dış görünüme ekle" label_selected="Kopyala ve dış görünüme ekle" name="copy_and_wear_button"/> + <text name="border_note"> + Envantere kopyala ve giy + </text> + <button label="Dış görünüme ekle" label_selected="Dış görünüme ekle" name="copy_and_wear_button"/> + <button label="Dış görünümü deÄŸiÅŸtir" label_selected="Dış görünümü deÄŸiÅŸtir" name="copy_and_replace_button"/> + <button label="Sadece envantere kopyala" label_selected="Sadece envantere kopyala" name="copy_to_inventory_button"/> + <button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_pay.xml b/indra/newview/skins/default/xui/tr/floater_pay.xml index 6604e5c37ad6e3dd77529f8ee4255863e0dff812..63334db91097babbbcea9943845747704de608b9 100755 --- a/indra/newview/skins/default/xui/tr/floater_pay.xml +++ b/indra/newview/skins/default/xui/tr/floater_pay.xml @@ -1,21 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Gruba Öde - </string> - <string name="payee_resident"> - Sakine Öde - </string> - <text name="payee_name"> - Kırpmayı Kontrol İçin Test Adı Çok Uzun - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - veya tutarı seç: - </text> - <button label="Öde" label_selected="Öde" name="pay btn"/> - <button label="Ä°ptal" label_selected="Ä°ptal" name="cancel btn"/> + <string name="payee_group">Gruba Öde</string> + <string name="payee_resident">Sakine Öde</string> + <text name="paying_text">ÖdeyeceÄŸiniz miktar:</text> + <text name="payee_name">Kırpmayı Kontrol İçin Test Adı Çok Uzun</text> + <panel label="Ara" name="PatternsPanel"> + <button label="1 L$ Öde" label_selected="1 L$ Öde" name="fastpay 1"/> + <button label="5 L$ Öde" label_selected="5 L$ Öde" name="fastpay 5"/> + <button label="10 L$ Öde" label_selected="10 L$ Öde" name="fastpay 10"/> + <button label="20 L$ Öde" label_selected="20 L$ Öde" name="fastpay 20"/> + </panel> + <panel label="Ara" name="InputPanel"> + <text name="amount text">DiÄŸer bir tutar:</text> + <button label="Öde" label_selected="Öde" name="pay btn"/> + <button label="Ä°ptal" label_selected="Ä°ptal" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_pay_object.xml b/indra/newview/skins/default/xui/tr/floater_pay_object.xml index 7772d3b10184f50230ae1bffcb4b5affc3f77866..d736ededfd0fcc1df929959062123831bbe66cd1 100755 --- a/indra/newview/skins/default/xui/tr/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/tr/floater_pay_object.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - Gruba Öde - </string> - <string name="payee_resident"> - Sakine Öde - </string> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - Nesne yoluyla: - </text> + <string name="payee_group">Gruba Öde</string> + <string name="payee_resident">Sakine Öde</string> + <text name="paying_text">ÖdeyeceÄŸiniz miktar:</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">Nesne yoluyla:</text> <icon name="icon_object" tool_tip="Nesneler"/> - <text name="object_name_text"> - Harika nesnem gerçekten uzun bir adla - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - veya tutarı seç: - </text> - <button label="Öde" label_selected="Öde" name="pay btn"/> - <button label="Ä°ptal" label_selected="Ä°ptal" name="cancel btn"/> + <text name="object_name_text">Harika nesnem gerçekten uzun bir adla</text> + <panel label="Ara" name="PatternsPanel"> + <button label="1 L$ Öde" label_selected="1 L$ Öde" name="fastpay 1"/> + <button label="5 L$ Öde" label_selected="5 L$ Öde" name="fastpay 5"/> + <button label="10 L$ Öde" label_selected="10 L$ Öde" name="fastpay 10"/> + <button label="20 L$ Öde" label_selected="20 L$ Öde" name="fastpay 20"/> + </panel> + <panel label="Ara" name="InputPanel"> + <text name="amount text">DiÄŸer bir tutar:</text> + <button label="Öde" label_selected="Öde" name="pay btn"/> + <button label="Ä°ptal" label_selected="Ä°ptal" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml index ff7c7189791aab7efc6e3304ca3d173ad03fdd5a..c49f817a45af21526bd64dab321ae7040d2e4fa5 100755 --- a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="Görünümüm" name="Change Outfit"/> <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/> <menu_item_call label="Åžeklimi Düzenle" name="Edit My Shape"/> + <menu_item_call label="Konum YüksekliÄŸi" name="Hover Height"/> <menu_item_call label="ArkadaÅŸlarım" name="Friends..."/> <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml index 6996dc612fe38d523ef87411b681283eab3a9bc9..4dfa42c3470517e7ce23b259af185930f5b3786c 100755 --- a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="Görünümüm" name="Chenge Outfit"/> <menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/> <menu_item_call label="Åžeklimi Düzenle" name="Edit My Shape"/> + <menu_item_call label="Konum YüksekliÄŸi" name="Hover Height"/> <menu_item_call label="ArkadaÅŸlarım" name="Friends..."/> <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml index 7239c4be0603ddeeef816b24e2e5d0c819f18652..784e4d18a48097acd7957f918c77d68975d83110 100755 --- a/indra/newview/skins/default/xui/tr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="Ä°lan oluÅŸtur" name="Marketplace Create Listing"/> + <menu_item_call label="Ä°lanı iliÅŸkilendir" name="Marketplace Associate Listing"/> + <menu_item_call label="Ä°lanı al (yenile)" name="Marketplace Get Listing"/> + <menu_item_call label="Hata kontrolü yap" name="Marketplace Check Listing"/> + <menu_item_call label="Ä°lanı düzenle" name="Marketplace Edit Listing"/> + <menu_item_call label="Listele" name="Marketplace List"/> + <menu_item_call label="Listeden kaldır" name="Marketplace Unlist"/> + <menu_item_call label="EtkinleÅŸtir" name="Marketplace Activate"/> + <menu_item_call label="Devre Dışı Bırak" name="Marketplace Deactivate"/> <menu_item_call label="PaylaÅŸ" name="Share"/> <menu_item_call label="Satın Al" name="Task Buy"/> <menu_item_call label="Aç" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="Ekle" name="Wearable Add"/> <menu_item_call label="Çıkar" name="Take Off"/> <menu_item_call label="Satıcı Giden Kutusuna Kopyala" name="Merchant Copy"/> - <menu_item_call label="Pazaryerine Gönder" name="Marketplace Send"/> + <menu_item_call label="Pazaryeri Ä°lanlarına Kopyala" name="Marketplace Copy"/> + <menu_item_call label="Pazaryeri Ä°lanlarına Taşı" name="Marketplace Move"/> <menu_item_call label="--seçenek yok--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_marketplace_view.xml b/indra/newview/skins/default/xui/tr/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..c114f50c921edfd5be593d74cb8f05fed9d37dc1 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="Stok miktarına göre sırala (düşükten yükseÄŸe)" name="sort_by_stock_amount"/> + <menu_item_check label="Sadece ilan klasörlerini göster" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index 25414b35fbc6e05d2ee363ca22050198de139630..cc8d8c895bcfef829fc5f7831f16a39850c0960e 100755 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/> <menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/> + <menu_item_call label="Pazaryeri ilanları..." name="MarketplaceListings"/> <menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/> <menu_item_call label="Tercihler..." name="Preferences"/> <menu_item_call label="Araç çubuÄŸu düğmeleri..." name="Toolbars"/> @@ -249,6 +250,7 @@ <menu_item_check label="Doku Konsolu" name="Texture Console"/> <menu_item_check label="Hata Ayıklama Konsolu" name="Debug Console"/> <menu_item_call label="Bildirimler Konsolu" name="Notifications"/> + <menu_item_check label="Bölge Hata Ayıklama Konsolu" name="Region Debug Console"/> <menu_item_check label="Hızlı Zamanlayıcılar" name="Fast Timers"/> <menu_item_check label="Bellek" name="Memory"/> <menu_item_check label="Sahne Ä°statistikleri" name="Scene Statistics"/> @@ -352,7 +354,7 @@ <menu_item_check label="Nesne Konumlarını Ping Ä°le Ä°nterpole Edin" name="Ping Interpolate Object Positions"/> <menu_item_call label="Paket Bırakın" name="Drop a Packet"/> </menu> - <menu_item_call label="Komut Dosyalı Kameranın Dökümünü Al" name="Dump Scripted Camera"/> + <menu_item_call label="Komut Dosyalı Kameranın Dökümünü Al" name="Dump Scripted Camera"/> <menu label="Kaydedici" name="Recorder"> <menu_item_call label="Oynatmayı BaÅŸlat" name="Start Playback"/> <menu_item_call label="Oynatmayı Durdur" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index b854d3964bb1747407494eead8775322029a689d..a6c69c7ab26ede5a75e12f010d84cc0ffa927265 100755 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -129,6 +129,88 @@ Bir sistem veya aÄŸ hatası nedeniyle Pazaryerine hiçbir klasör gönderilemedi Bir sistem veya aÄŸ hatası nedeniyle Pazaryeri baÅŸlatılamadı. Daha sonra tekrar deneyin. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="StockPasteFailed"> + Stok Klasörüne kopyalama ya da taşıma baÅŸarısız oldu. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantPasteFailed"> + Pazaryeri Ä°lanlarına kopyalama ya da taşıma baÅŸarısız oldu. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantTransactionFailed"> + Pazaryerinde yapılan iÅŸlem baÅŸarısız oldu. Hata kodu: + + Neden: "[ERROR_REASON]" + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + Bu ürünü listeleyemiyoruz ya da sürüm klasörünü etkinleÅŸtiremiyoruz. Bu sorun genellikle ilan açıklama formunda eksik bilgi olmasından kaynaklanır ama klasör yapısındaki hatalar yüzünden de gerçekleÅŸmiÅŸ olabilir. Ä°lanı düzenleyin ya da ilan klasöründe hata olup olmadığını kontrol edin. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantListingFailed"> + Ä°lan Pazaryerinde yayınlanamadı. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + Bu sürüm klasörünü etkinleÅŸtirilemedi. Hata kodu: + + "[ERROR_CODE]" + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + Bu eylem, bu ilanın etkin içeriÄŸini deÄŸiÅŸtirecek. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Pazaryerindeki etkin bir ilanı deÄŸiÅŸtirmek istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + Pazaryeri Ä°lanları penceresine sürüklenen öğeler kopyalanmaz, orijinal konumlarından buraya taşınırlar. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Bir öğeyi envanterden Pazaryerine taşımak istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + Bir ilan klasörü taşınır veya silinirse, Pazaryerindeki ilanınız silinir. Pazaryeri ilanını saklamak isterseniz, deÄŸiÅŸtirmek istediÄŸiniz sürüm klasörünün içeriÄŸini taşıyın veya silin. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Bir ilanı Pazaryerine taşımak ya da Pazaryerinden silmek istediÄŸim zaman doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + Bu öğelerden birini ya da birden fazlasını Pazaryerine kopyalama izniniz yok. Bunları taşıyabilir veya bırakabilirsiniz. + <usetemplate canceltext="Ä°ptal" ignoretext="Kopyalanamaz öğeler içeren bir seçimi Pazaryerine kopyalamaya çalıştığım zaman doÄŸrulama iste" name="yesnocancelbuttons" notext="Öğeleri taşıma" yestext="Öğeleri taşı"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + Bu eylem ilanı listeden kaldıracak. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Pazaryerindeki etkin bir ilanı listeden kaldırmak istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal" yestext="Tamam"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + Bu eylem, mevcut ilanın sürüm klasörünü devre dışı bırakacak. Devam etmek istiyor musunuz? + <usetemplate ignoretext="Pazaryerindeki bir ilanın sürüm klasörünü devre dışı bırakmak istediÄŸimde doÄŸrulama iste" name="okcancelignore" notext="Ä°ptal" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + Bu ilan güncellenemedi. +Bu öğeyi Pazaryeri üzerinde düzenlemek için [[URL] buraya tıklayın]. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + Pazaryeri Ä°lanları klasöründe bulunan giysileri ve vücut bölümlerini kullanamazsınız. + </notification> + <notification name="AlertMerchantListingInvalidID"> + Geçersiz ilan kimliÄŸi. + </notification> + <notification name="AlertMerchantListingActivateRequired"> + Bu ilanda ya birden fazla sürüm klasörü var ya da hiç sürüm klasörü yok. Daha sonra bir sürüm klasörünü bağımsız olarak seçip etkinleÅŸtirmeniz gerekiyor. + <usetemplate ignoretext="Birden fazla sürüm klasörü içeren bir ilan oluÅŸturduÄŸum zaman sürüm klasörünün etkinleÅŸtirilmesi hakkında uyar" name="okignore" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + Farklı türdeki stok öğelerini ayrı stok klasörlerine yerleÅŸtirdik. Böylece klasörünüz listeleyebileceÄŸimiz bir ÅŸekilde düzenlenir. + <usetemplate ignoretext="Stok klasörü listelenmeden önce bölündüğünde uyar" name="okignore" yestext="Tamam"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + Stok boÅŸ olduÄŸu için ilanınızı yayından kaldırdık. Ä°lanı yeniden yayınlamak için stok klasörüne daha fazla birim eklemeniz gerekir. + <usetemplate ignoretext="Bir ilan, stok klasörü boÅŸ olduÄŸu için listeden kaldırılınca uyar" name="okignore" yestext="Tamam"/> + </notification> <notification name="CompileQueueSaveText"> AÅŸağıdaki nedenden dolayı, bir komut dosyası için metin karşıya yüklenirken bir sorun oluÅŸtu: [REASON]. Lütfen daha sonra tekrar deneyin. </notification> @@ -473,6 +555,10 @@ Not: Bu iÅŸlem önbelleÄŸi temizleyecek. DeÄŸiÅŸiklikler Kaydedilsin mi? <usetemplate canceltext="Ä°ptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/> </notification> + <notification name="DeleteNotecard"> + Not kartı silinsin mi? + <usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> Mimik kaydedilemedi. Bu mimikte çok fazla adım var. @@ -1868,6 +1954,9 @@ Binlerce bölgeyi deÄŸiÅŸtirecek ve alan sunucusunu kesintiye uÄŸratacaktır. Ziyaret etmeye çalıştığınız bölge, mevcut tercihlerinizi aÅŸan içeriÄŸe sahip. Ben > Tercihler > Genel sekmesini kullanarak tercihlerinizi deÄŸiÅŸtirebilirsiniz. <usetemplate name="okbutton" yestext="Tamam"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> Ziyaret etmeye çalıştığınız bölge [REGIONMATURITY] içeriÄŸe sahip, buna sadece yetiÅŸkinler eriÅŸebilir. <url name="url"> @@ -2155,6 +2244,10 @@ Envanter öğesi/öğeleri taşınsın mı? <ignore name="ignore" text="Para() komut dosyası içermeyen bir nesne oluÅŸtururken 'Nesne için ödeme yap' eylemi ayarladım"/> </form> </notification> + <notification name="PayConfirmation"> + [TARGET] hedefine [AMOUNT]L$ ödemek istediÄŸinizi doÄŸrulayın. + <usetemplate ignoretext="Ödeme yapılmadan önce doÄŸrulama iste (200L$ üzerinde tutarlar için)" name="okcancelignore" notext="Ä°ptal" yestext="Öde"/> + </notification> <notification name="OpenObjectCannotCopy"> Bu nesne içinde kopyalama izniniz olan bir öğe yok. </notification> @@ -3835,9 +3928,11 @@ Lütfen bir dakika sonra tekrar deneyin. </notification> <notification name="TeleportedByAttachment"> You have been teleported by an attachment on [ITEM_ID] + <usetemplate ignoretext="Işınlama: Bir ek tarafından ışınlandınız" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> '[PARCEL_NAME]' parseli üzerindeki '[OBJECT_NAME]' nesnesi tarafından ışınlandınız + <usetemplate ignoretext="Işınlama: Bir parsel üzerindeki bir nesne tarafından ışınlandınız" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> Sahibi [OWNER_ID] olan '[OBJECT_NAME]' nesnesi tarafından ışınlandınız @@ -4169,7 +4264,7 @@ Daha küçük bir arazi parçası seçmeyi deneyin. <usetemplate ignoretext="Dosyalar taşınamıyor. Önceki yol geri yüklendi." name="okignore" yestext="Tamam"/> </notification> <notification name="DefaultObjectPermissions"> - AÅŸağıdaki nedenden dolayı, varsayılan izinler kaydedilirken bir sorun oluÅŸtu: [REASON]. Varsayılan izinleri ayarlamayı lütfen daha sonra tekrar deneyin. + Varsayılan nesne izinleri kaydedilirken bir sorun oluÅŸtu: [REASON]. Varsayılan izinleri kaydetmeyi lütfen daha sonra tekrar deneyin. <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/tr/panel_login.xml b/indra/newview/skins/default/xui/tr/panel_login.xml index ce1519be890868dcaf1544a9ea8c5d102dfca6e6..8b320ce9aa68c97f3a71408e1d8991167b5b9ec6 100755 --- a/indra/newview/skins/default/xui/tr/panel_login.xml +++ b/indra/newview/skins/default/xui/tr/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Kullanıcı Adı" name="username_combo" tool_tip="KaydolduÄŸunuzda seçtiÄŸiniz kullanıcı adı, örn. mustafayalcin12 veya Faruk Gungoren"/> <line_editor label="Parola" name="password_edit"/> - <check_box label="Beni hatırla" name="remember_check"/> - <text name="forgot_password_text"> - Parolamı unuttum - </text> - <button label="Oturum Aç" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - son konumum - </text> <combo_box label="Sık kullandığım yerler" name="start_location_combo"> + <combo_box.item label="Son konumum" name="MyLastLocation"/> <combo_box.item label="Ana konumum" name="MyHome"/> </combo_box> - <button label="Oturum Aç" name="connect_favorite_btn"/> - <line_editor label="Bir yer adı yazın" name="location_edit"/> - <button label="Oturum Aç" name="connect_location_btn"/> + <button label="Oturum Aç" name="connect_btn"/> + <check_box label="Beni hatırla" name="remember_check"/> + <text name="forgot_password_text">Parolamı unuttum</text> <combo_box label="AÄŸ seç" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..50acc0f92a0d85cf3180ebc1c96c6682c916052f --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Pazaryeri" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="Seçenekleri görüntüleyin/sıralayın"/> + <button name="add_btn" tool_tip="Yeni bir ilan klasörü oluÅŸturun"/> + <button label="Hatalara Karşı Kontrol Et" name="audit_btn" tool_tip="Pazaryeri ilanlarınızı kontrol edin"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="Pazaryeri Ä°lanlarını Filtrele" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..8d857d20f02fa43be16e38226bb7baf089302a7b --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="TÃœMÃœ" name="All Items" tool_tip="Öğeleri listelemek için buraya sürükleyin ve bırakın"/> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..c647a112468e85258fa3d88d4415805f1996d870 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="LÄ°STELENMÄ°Åž" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec9213ff3550163d3554132774bde2994fb28512 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="Ä°LÄ°ÅžKÄ°LENDÄ°RÄ°LMEMÄ°Åž" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..d8c1b0a6d086d29ca7802aa3989149c9215bca8b --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="LÄ°STELENMEMÄ°Åž" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/tr/panel_status_bar.xml b/indra/newview/skins/default/xui/tr/panel_status_bar.xml index 178cbda4a2e000d64c0c39e08b3065417b09e91a..9e2669ec2b38280e3a07523fdf14f2c2b35c3a5e 100755 --- a/indra/newview/skins/default/xui/tr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/tr/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - Paket Kaybı - </panel.string> - <panel.string name="bandwidth_tooltip"> - Bant geniÅŸliÄŸi - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">Paket Kaybı</panel.string> + <panel.string name="bandwidth_tooltip">Bant geniÅŸliÄŸi</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel left="-425" name="balance_bg" width="215"> - <text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$20"/> + <text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$??"/> <button label="L$ Satın Al" name="buyL" tool_tip="Daha fazla L$ satın almak için tıklayın"/> <button label="AlışveriÅŸ yap" name="goShop" tool_tip="Second Life Pazaryeri Aç" width="95"/> </panel> - <text name="TimeText" tool_tip="Geçerli zaman (Pasifik)"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="Geçerli zaman (Pasifik)">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="Tüm Ortam Öğelerini BaÅŸlat/Durdur (Müzik, Video, Web sayfaları)"/> <button name="volume_btn" tool_tip="Küresel Ses Kontrolü"/> </panel> diff --git a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml index 433da27946f8fea6ff5f2cb29b1ce31f80a0d71f..92d57deb1216978712ec0424a23f65f629563a16 100755 --- a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml @@ -72,8 +72,9 @@ <check_box label="Aktar" name="CheckNextOwnerTransfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/> </panel> <check_box label="Satılık" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="ComboBoxSaleType"> <combo_box.item label="Kopyala" name="Copy"/> + <combo_box.item label="İçerik" name="Contents"/> <combo_box.item label="Orijinal" name="Original"/> </combo_box> <spinner label="Fiyat: L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml index 9a4cf54fa79ad9c4a71633fd3934da1cda4bf5e1..ddb4bbf160dffa391566f48b9f5ff99d4e24dfae 100755 --- a/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="Nesne Profili"> - <panel.string name="text deed continued"> - Devret - </panel.string> - <panel.string name="text deed"> - Devret - </panel.string> - <panel.string name="text modify info 1"> - Bu nesneyi deÄŸiÅŸtirebilirsiniz - </panel.string> - <panel.string name="text modify info 2"> - Bu nesneleri deÄŸiÅŸtirebilirsiniz - </panel.string> - <panel.string name="text modify info 3"> - Bu nesneyi deÄŸiÅŸtiremezsiniz - </panel.string> - <panel.string name="text modify info 4"> - Bu nesneleri deÄŸiÅŸtiremezsiniz - </panel.string> - <panel.string name="text modify info 5"> - Bir bölge sınırı üzerinden bu nesneyi deÄŸiÅŸtiremezsiniz - </panel.string> - <panel.string name="text modify info 6"> - Bir bölge sınırı üzerinden bu nesneleri deÄŸiÅŸtiremezsiniz - </panel.string> - <panel.string name="text modify warning"> - Bu nesne baÄŸlantılı parçalara sahip - </panel.string> - <panel.string name="Cost Default"> - Fiyat: L$ - </panel.string> - <panel.string name="Cost Total"> - Toplam Fiyat: L$ - </panel.string> - <panel.string name="Cost Per Unit"> - Birim Fiyatı: L$ - </panel.string> - <panel.string name="Cost Mixed"> - Karma Fiyat - </panel.string> - <panel.string name="Sale Mixed"> - Karma Satış - </panel.string> + <panel.string name="text deed continued">Devret</panel.string> + <panel.string name="text deed">Devret</panel.string> + <panel.string name="text modify info 1">Bu nesneyi deÄŸiÅŸtirebilirsiniz</panel.string> + <panel.string name="text modify info 2">Bu nesneleri deÄŸiÅŸtirebilirsiniz</panel.string> + <panel.string name="text modify info 3">Bu nesneyi deÄŸiÅŸtiremezsiniz</panel.string> + <panel.string name="text modify info 4">Bu nesneleri deÄŸiÅŸtiremezsiniz</panel.string> + <panel.string name="text modify info 5">Bir bölge sınırı üzerinden bu nesneyi deÄŸiÅŸtiremezsiniz</panel.string> + <panel.string name="text modify info 6">Bir bölge sınırı üzerinden bu nesneleri deÄŸiÅŸtiremezsiniz</panel.string> + <panel.string name="text modify warning">Bu nesne baÄŸlantılı parçalara sahip</panel.string> + <panel.string name="Cost Default">Fiyat: L$</panel.string> + <panel.string name="Cost Total">Toplam Fiyat: L$</panel.string> + <panel.string name="Cost Per Unit">Birim Fiyatı: L$</panel.string> + <panel.string name="Cost Mixed">Karma Fiyat</panel.string> + <panel.string name="Sale Mixed">Karma Satış</panel.string> <text name="title" value="Nesne Profili"/> <text name="where" value="(SL Dünyası)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - Ad: - </text> - <text name="Description:"> - Açıklama: - </text> - <text name="CreatorNameLabel"> - OluÅŸturan: - </text> - <text name="Owner:"> - Sahip: - </text> - <text name="Group_label"> - Grup: - </text> + <text name="Name:">Ad:</text> + <text name="Description:">Açıklama:</text> + <text name="CreatorNameLabel">OluÅŸturan:</text> + <text name="Owner:">Sahip:</text> + <text name="Group_label">Grup:</text> <button name="button set group" tool_tip="Bu nesnenin izinlerini paylaÅŸmak için bir grup seçin"/> <name_box initial_value="Yükleniyor..." name="Group Name Proxy"/> <button label="Devret" label_selected="Devret" name="button deed" tool_tip="Bu nesne devredilerek verildiÄŸinde, nesnenin sonraki sahibi için izinler geçerli olur. Grup içerisinde paylaşılan nesneler bir grup yetkilisi tarafından devredilebilir."/> - <text name="label click action"> - Åžu eylem için tıklayın: - </text> + <text name="label click action">Åžu eylem için tıklayın:</text> <combo_box name="clickaction"> <combo_box.item label="Dokun (varsayılan)" name="Touch/grab(default)"/> <combo_box.item label="Nesnenin üzerine otur" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="YakınlaÅŸtır" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - Bu nesneyi deÄŸiÅŸtirebilirsiniz - </text> - <text name="Anyone can:"> - Herkes: - </text> + <text name="perm_modify">Bu nesneyi deÄŸiÅŸtirebilirsiniz</text> + <text name="Anyone can:">Herkes:</text> <check_box label="Kopyala" name="checkbox allow everyone copy"/> <check_box label="Hareket Et" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - Grup: - </text> + <text name="GroupLabel">Grup:</text> <check_box label="PaylaÅŸ" name="checkbox share with group" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için deÄŸiÅŸtirme izinlerinizi paylaÅŸmasına izin verir. Rol kısıtlamalarını etkinleÅŸtirmek için Devretme yapmalısınız."/> - <text name="NextOwnerLabel"> - Sonraki sahip: - </text> + <text name="NextOwnerLabel">Sonraki sahip:</text> <check_box label="DeÄŸiÅŸtir" name="checkbox next owner can modify"/> <check_box label="Kopyala" name="checkbox next owner can copy"/> <check_box label="Aktar" name="checkbox next owner can transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="Fiyat: L$" name="Edit Cost"/> <check_box label="Aramada göster" name="search_check" tool_tip="KiÅŸiler arama sonuçlarında bu nesneyi görebilsin"/> - <text name="pathfinding_attributes_label"> - Yol bulma özellikleri: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">Yol bulma özellikleri:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="Aç" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index b1a513fbf59c8b43c4167c462dfa7fb020be18ac..80fe2b39862bf41eec7bfab1589f55b5834e1dc0 100755 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -454,28 +454,46 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - Satıcı giden kutunuzda öğeler oluÅŸturamazsınız + Pazaryeri Ä°lanları klasöründen öğe oluÅŸturamazsınız + </string> + <string name="TooltipOutboxWorn"> + Ãœzerinizde bulunan öğeleri Pazaryeri Ä°lanları klasörüne koyamazsınız + </string> + <string name="TooltipOutboxFolderLevels"> + İç içe geçmiÅŸ klasörlerin derinliÄŸi [AMOUNT] deÄŸerini geçiyor. İç içe geçmiÅŸ klasörlerin derinliÄŸini azaltın; gerekirse öğeleri kutu içine alın. + </string> + <string name="TooltipOutboxTooManyFolders"> + Alt klasör sayısı [AMOUNT] deÄŸerini geçiyor. Ä°lanınızdaki klasör sayısını azaltın; gerekirse öğeleri kutu içine alın. + </string> + <string name="TooltipOutboxTooManyObjects"> + Öğe sayısı [AMOUNT] deÄŸerini geçiyor. Bir ilanda [AMOUNT] öğeden fazlasını satmak için bazılarını kutu içine almalısınız. + </string> + <string name="TooltipOutboxTooManyStockItems"> + Stok öğelerinin sayısı [AMOUNT] deÄŸerini geçiyor. + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + Öğeleri veya klasörleri sadece TÃœMÃœ sekmesine bırakabilirsiniz. Lütfen bu sekmeyi seçin ve öğelerinizi ya da klasörlerinizi yeniden taşıyın. </string> <string name="TooltipOutboxNoTransfer"> - Bu nesnelerden bir veya daha fazlası satılamaz veya aktarılamaz. + Bu nesnelerden bir veya daha fazlası satılamaz veya aktarılamaz </string> <string name="TooltipOutboxNotInInventory"> - Satıcı giden kutunuza sadece doÄŸrudan kendi envanterinizden öğeler koyabilirsiniz + Pazaryerine sadece envanterinizdeki öğelerden koyabilirsiniz </string> - <string name="TooltipOutboxWorn"> - Giymekte olduÄŸunuz öğeleri Satıcı giden kutunuza koyamazsınız. + <string name="TooltipOutboxLinked"> + BaÄŸlı öğeleri veya klasörleri Pazaryerine koyamazsınız </string> <string name="TooltipOutboxCallingCard"> - Satıcı giden kutunuza arama kartları koyamazsınız + Arama kartlarını Pazaryerine koyamazsınız </string> - <string name="TooltipOutboxFolderLevels"> - İç içe geçmiÅŸ klasörlerin derinliÄŸi üçü geçiyor + <string name="TooltipOutboxDragActive"> + Listeye alınmış bir ilanı taşıyamazsınız </string> - <string name="TooltipOutboxTooManyFolders"> - Ãœst seviyedeki klasördeki alt klasör sayısı 20'yi geçiyor + <string name="TooltipOutboxCannotMoveRoot"> + Pazaryeri ilanları kök klasörünü taşıyamazsınız </string> - <string name="TooltipOutboxTooManyObjects"> - Ãœst seviyedeki klasördeki öğe sayısı 200'ü geçiyor + <string name="TooltipOutboxMixedStock"> + Bir stok klasöründeki tüm öğelerin tipi ve izni aynı olmalıdır </string> <string name="TooltipDragOntoOwnChild"> Bir klasörü alt klasörüne taşıyamazsınız @@ -1060,7 +1078,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="AgentNameSubst"> (Siz) </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> Gayri menkul eriÅŸim listelerini yönetirken uyarıları bastır </string> @@ -1127,6 +1145,12 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="bitmap_image_files"> Bitmap Görüntüler </string> + <string name="png_image_files"> + PNG Görüntüleri + </string> + <string name="save_texture_image_files"> + Targa veya PNG Görüntüleri + </string> <string name="avi_movie_file"> AVI Film Dosyası </string> @@ -1376,6 +1400,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="FavoritesNoMatchingItems"> Bir yer imini favorilerinize eklemek için buraya sürükleyin. </string> + <string name="MarketplaceNoMatchingItems"> + Öğe bulunamadı. Arama dizenizin yazımını kontrol edin ve yeniden deneyin. + </string> <string name="InventoryNoTexture"> Envanterinizde bu dokunun kopyası yok </string> @@ -1423,29 +1450,95 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] MaÄŸazası] hata döndürüyor. </string> + <string name="InventoryMarketplaceError"> + Bu özellik ÅŸu anda Beta aÅŸamasında. Katılmak istiyorsanız lütfen adınızı bu [http://goo.gl/forms/FCQ7UXkakz Google formuna] ekleyin. + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + Pazaryeri Ä°lanları klasörünüz boÅŸ. + </string> + <string name="InventoryMarketplaceListingsNoItems"> + Klasörleri [[MARKETPLACE_DASHBOARD_URL] Pazaryerinde] satılık olarak listelemek için bu alana sürükleyin. + </string> + <string name="Marketplace Validation Warning Stock"> + stok klasörü bir sürüm klasöründe bulunmalıdır + </string> + <string name="Marketplace Validation Error Mixed Stock"> + : Hata: Bir stok klasöründeki tüm öğeler aynı tipte ve kopyalanamaz olmalıdır + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + : Hata: stok klasörü alt klasörler içeremez + </string> + <string name="Marketplace Validation Warning Empty"> + : Uyarı: Klasör hiçbir öğe içermiyor + </string> + <string name="Marketplace Validation Warning Create Stock"> + : Uyarı: stok klasörü oluÅŸturuluyor + </string> + <string name="Marketplace Validation Warning Create Version"> + : Uyarı: sürüm klasörü oluÅŸturuluyor + </string> + <string name="Marketplace Validation Warning Move"> + : Uyarı: Öğeler taşınıyor + </string> + <string name="Marketplace Validation Warning Delete"> + : Uyarı: klasör içeriÄŸi stok klasörüne aktarıldı, boÅŸ klasör kaldırılıyor + </string> + <string name="Marketplace Validation Error Stock Item"> + : Hata: Kopyalanamaz öğeler stok klasöründe saklanmalıdır + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + : Uyarı: Öğeler bir sürüm klasöründe bulunmalıdır + </string> + <string name="Marketplace Validation Error"> + : Hata: + </string> + <string name="Marketplace Validation Warning"> + : Uyarı: + </string> + <string name="Marketplace Validation Error Empty Version"> + : Uyarı: sürüm klasörü en az 1 öğe içermelidir + </string> + <string name="Marketplace Validation Error Empty Stock"> + : Uyarı: Stok klasörü en az 1 öğe içermelidir + </string> + <string name="Marketplace Validation No Error"> + Raporlanacak hiçbir hata ya da uyarı yok + </string> <string name="Marketplace Error None"> Hata yok </string> + <string name="Marketplace Error Prefix"> + Hata: + </string> <string name="Marketplace Error Not Merchant"> - Hata: Öğeleri Pazaryerine göndermeden önce kendinizi bir satıcı olarak belirlemelisiniz (ücretsizdir). + Öğeleri Pazaryerine göndermeden önce kendinizi bir satıcı olarak belirtmeniz gerekir (ücretsizdir). + </string> + <string name="Marketplace Error Not Accepted"> + Öğe bu klasöre taşınamıyor. </string> - <string name="Marketplace Error Empty Folder"> - Hata: Bu klasörün içeriÄŸi boÅŸ. + <string name="Marketplace Error Unsellable Item"> + Bu öğe Pazaryerinde satılamaz. </string> - <string name="Marketplace Error Unassociated Products"> - Hata: Bu öğe karşıya yüklenemedi çünkü satıcı hesabınızda ürünlerle iliÅŸkisiz çok fazla öğe mevcut. Bu hatayı düzeltmek için Pazaryeri web sitesine oturum açın ve iliÅŸkisiz öğe sayınızı azaltın. + <string name="MarketplaceNoID"> + no Mkt ID </string> - <string name="Marketplace Error Object Limit"> - Hata: Bu öğe çok fazla nesne içeriyor. Bu hatayı düzeltmek için nesneleri birlikte kutulara yerleÅŸtirerek, toplam nesne sayısını 200'ün altına düşürün. + <string name="MarketplaceLive"> + listelenmiÅŸ </string> - <string name="Marketplace Error Folder Depth"> - Hata: Bu öğede çok fazla iç içe geçmiÅŸ klasör seviyesi var. Bunu tekrar düzenleyerek maksimum 3 iç içe geçmiÅŸ klasör seviyesine indirin. + <string name="MarketplaceActive"> + etkin </string> - <string name="Marketplace Error Unsellable Item"> - Hata: Bu öğe Pazaryerinde satılamaz. + <string name="MarketplaceMax"> + maks. </string> - <string name="Marketplace Error Internal Import"> - Hata: Bu öğede bir sorun var. Daha sonra tekrar deneyin. + <string name="MarketplaceStock"> + stok + </string> + <string name="MarketplaceNoStock"> + stokta kalmadı + </string> + <string name="MarketplaceUpdating"> + güncelleniyor... </string> <string name="Open landmarks"> Açık yer imleri @@ -1466,6 +1559,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. İçerik yok </string> <string name="WornOnAttachmentPoint" value="([ATTACHMENT_POINT] üzerinde giyilmiÅŸ)"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL] (etkin)"/> <string name="PermYes"> Evet @@ -1736,6 +1830,15 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="Invalid Attachment"> Geçersiz Aksesuar Noktası </string> + <string name="ATTACHMENT_MISSING_ITEM"> + Hata: eksik öğe + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + Hata: Eksik temel öğe + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + Hata: Nesne mevcut dış görünüme dahil ama eklenmemiÅŸ + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS]'lık </string> @@ -1871,9 +1974,6 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="CompileQueueUnknownFailure"> Karşıdan yüklerken bilinmeyen hata </string> - <string name="CompileNoExperiencePerm"> - [SCRIPT] komut dizisi [EXPERIENCE] deneyimiyle atlanıyor. - </string> <string name="CompileQueueTitle"> Tekrar Derleme Ä°lerlemesi </string> @@ -1907,6 +2007,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="SaveComplete"> Kaydetme tamamlandı. </string> + <string name="UploadFailed"> + Dosya karşıya yüklenemedi: + </string> <string name="ObjectOutOfRange"> Komut dosyası (nesne kapsam dışı) </string> @@ -1916,6 +2019,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="GroupsNone"> hiçbiri </string> + <string name="CompileNoExperiencePerm"> + [SCRIPT] komut dizisi [EXPERIENCE] deneyimiyle atlanıyor. + </string> <string name="Group" value="(grup)"/> <string name="Unknown"> (Bilinmiyor) @@ -5077,6 +5183,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="Command_Marketplace_Label"> Pazaryeri </string> + <string name="Command_MarketplaceListings_Label"> + Pazaryeri + </string> <string name="Command_MiniMap_Label"> Mini-harita </string> @@ -5164,6 +5273,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="Command_Marketplace_Tooltip"> AlışveriÅŸ yap </string> + <string name="Command_MarketplaceListings_Tooltip"> + OluÅŸturduÄŸunuz öğeleri satın + </string> <string name="Command_MiniMap_Tooltip"> Yakındaki kiÅŸileri göster </string> @@ -5275,6 +5387,18 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="UserDictionary"> [User] </string> + <string name="logging_calls_disabled_log_empty"> + Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya baÅŸlamak için, Tercihler > Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın. + </string> + <string name="logging_calls_disabled_log_not_empty"> + Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler > Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın. + </string> + <string name="logging_calls_enabled_log_empty"> + Günlüğü tutulmuÅŸ sohbet yok. Siz biriyle iletiÅŸime geçtikten sonra veya biri sizinle iletiÅŸime geçtikten sonra, burada bir günlük giriÅŸi gösterilir. + </string> + <string name="loading_chat_logs"> + Yükleniyor... + </string> <string name="experience_tools_experience"> Deneyim </string> @@ -5356,16 +5480,4 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="ExperiencePermissionShort12"> Ä°zin </string> - <string name="logging_calls_disabled_log_empty"> - Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya baÅŸlamak için, Tercihler > Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın. - </string> - <string name="logging_calls_disabled_log_not_empty"> - Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler > Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın. - </string> - <string name="logging_calls_enabled_log_empty"> - Günlüğü tutulmuÅŸ sohbet yok. Siz biriyle iletiÅŸime geçtikten sonra veya biri sizinle iletiÅŸime geçtikten sonra, burada bir günlük giriÅŸi gösterilir. - </string> - <string name="loading_chat_logs"> - Yükleniyor... - </string> </strings> diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml index 2dfb35fa5458a1c4c5ad43d3686ad2cad4d20ac1..250cbe67e0109d16d691a25c6402583078010a24 100755 --- a/indra/newview/skins/default/xui/zh/floater_about.xml +++ b/indra/newview/skins/default/xui/zh/floater_about.xml @@ -1,71 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_about" title="關於 [CAPITALIZED_APP_NAME]"> - <floater.string name="AboutHeader"> - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) -[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - </floater.string> - <floater.string name="AboutCompiler"> - 以 [COMPILER_VERSION] 版本 [COMPILER] 建置 - </floater.string> - <floater.string name="AboutPosition"> - ä½ çš„æ–¹ä½æ˜¯ [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地å€å:[REGION],主機:<nolink>[HOSTNAME]</nolink> ([HOSTIP]) -第二人生 URL:<nolink>[SLURL]</nolink> -(全域å標:[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) -[SERVER_VERSION] -[SERVER_RELEASE_NOTES_URL] - </floater.string> - <floater.string name="AboutSystem"> - CPU:[CPU] -記憶體:[MEMORY_MB] MB -作æ¥ç³»çµ±ç‰ˆæœ¬ï¼š[OS_VERSION] -顯示å¡ä¾›æ‡‰å•†ï¼š[GRAPHICS_CARD_VENDOR] -顯示å¡ï¼š[GRAPHICS_CARD] - </floater.string> - <floater.string name="AboutDriver"> - Windows 顯示驅動程å¼ç‰ˆæœ¬ï¼š[GRAPHICS_DRIVER_VERSION] - </floater.string> - <floater.string name="AboutLibs"> - OpenGL 版本:[OPENGL_VERSION] - -libcurl 版本: [LIBCURL_VERSION] -J2C 解碼器版本: [J2C_VERSION] -音效驅動程å¼ç‰ˆæœ¬ï¼š [AUDIO_DRIVER_VERSION] -Qt Webkit 版本: [QT_WEBKIT_VERSION] -語音伺æœå™¨ç‰ˆæœ¬ï¼š [VOICE_VERSION] - </floater.string> - <floater.string name="none"> - (無) - </floater.string> - <floater.string name="AboutTraffic"> - å°åŒ…æ失:[PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) - </floater.string> - <floater.string name="ErrorFetchingServerReleaseNotesURL"> - æ“·å–伺æœå™¨ç‰ˆæœ¬èªªæ˜Ž URL 時出錯。 - </floater.string> <tab_container name="about_tab"> <panel label="資訊" name="support_panel"> <button label="覆製到剪貼簿" name="copy_btn"/> </panel> <panel label="貸記" name="credits_panel"> - <text name="linden_intro"> - 「第二人生ã€ç”±ä»¥ä¸‹çš„ Linden 家æ—å¸¶çµ¦ä½ ï¼š - </text> - <text name="contrib_intro"> - 這些人士åšäº†é–‹æ”¾æºç¢¼çš„è²¢ç»ï¼š - </text> - <text_editor name="contrib_names"> - 執行時期被å–代的å‡å稱 - </text_editor> - <text name="trans_intro"> - 以下人士æ供翻è¯ï¼š - </text> - <text_editor name="trans_names"> - 執行時期被å–代的å‡å稱 - </text_editor> + <text name="linden_intro">Second Life 由以下的 Linden 家æ—å¸¶çµ¦ä½ ï¼š +這些人士åšäº†é–‹æ”¾æºç¢¼çš„è²¢ç»ï¼š</text> + <text_editor name="contrib_names">執行時期被å–代的å‡å稱</text_editor> </panel> <panel label="許å¯" name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion + <text_editor name="licenses_editor">3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion APR Copyright (C) 2011 The Apache Software Foundation Collada DOM Copyright 2006 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) @@ -92,8 +37,7 @@ Qt Webkit 版本: [QT_WEBKIT_VERSION] ä¿ç•™ä¸€åˆ‡æ¬Šåˆ©ã€‚ 詳情見 licenses.txt。 - 語音èŠå¤©éŸ³é »æŠ€è¡“:Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> + 語音èŠå¤©éŸ³é »æŠ€è¡“:Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)</text_editor> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_associate_listing.xml b/indra/newview/skins/default/xui/zh/floater_associate_listing.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab0a84dd189b593d40028bab3c2071d1d781bb96 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_associate_listing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="associate listing" title="è¯çµåˆŠç™»"> + <text name="message">刊登 ID:</text> + <line_editor name="listing_id">在æ¤éµå…¥ ID</line_editor> + <button label="確定" name="OK"/> + <button label="å–消" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_edit_hover_height.xml b/indra/newview/skins/default/xui/zh/floater_edit_hover_height.xml new file mode 100644 index 0000000000000000000000000000000000000000..d7c472818396f495ee931c23e8168af1b6d61f95 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_edit_hover_height.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="HoverHeight" title="è¨å®šæ‡¸æµ®é«˜åº¦"> + <slider label="高度" name="HoverHeightSlider"/> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml index 6998df75f33d14dba614c38677f8ad2190c8cb54..4f17b96579c87f9156088f17422a542e43b96948 100755 --- a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml @@ -1,67 +1,36 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="收ç´å€ç‰©å“屬性"> - <floater.string name="unknown"> - (未知) - </floater.string> - <floater.string name="public"> - (公開) - </floater.string> - <floater.string name="you_can"> - ä½ å¯ä»¥ï¼š - </floater.string> - <floater.string name="owner_can"> - 所有人å¯ä»¥ï¼š - </floater.string> - <floater.string name="acquiredDate"> - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - </floater.string> - <text name="LabelItemNameTitle"> - å稱: - </text> - <text name="LabelItemDescTitle"> - æ述: - </text> - <text name="LabelCreatorTitle"> - å‰µé€ è€…ï¼š - </text> + <floater.string name="unknown">(未知)</floater.string> + <floater.string name="public">(公開)</floater.string> + <floater.string name="you_can">ä½ å¯ä»¥ï¼š</floater.string> + <floater.string name="owner_can">所有人å¯ä»¥ï¼š</floater.string> + <floater.string name="acquiredDate">[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]</floater.string> + <text name="LabelItemNameTitle">å稱:</text> + <text name="LabelItemDescTitle">æ述:</text> + <text name="LabelCreatorTitle">å‰µé€ è€…ï¼š</text> <button label="檔案..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - 所有人: - </text> + <text name="LabelOwnerTitle">所有人:</text> <button label="檔案..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - å–得於: - </text> - <text name="LabelAcquiredDate"> - Wed May 24 12:50:46 2006 - </text> - <text name="OwnerLabel"> - ä½ ï¼š - </text> + <text name="LabelAcquiredTitle">å–得於:</text> + <text name="LabelAcquiredDate">Wed May 24 12:50:46 2006</text> + <text name="OwnerLabel">ä½ ï¼š</text> <check_box label="編輯" name="CheckOwnerModify"/> <check_box label="æšåº¨" name="CheckOwnerCopy"/> <check_box label="轉售" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - 任何人: - </text> + <text name="AnyoneLabel">任何人:</text> <check_box label="æšåº¨" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - 群組: - </text> + <text name="GroupLabel">群組:</text> <check_box label="分享" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - 下一個所有人: - </text> + <text name="NextOwnerLabel">下一個所有人:</text> <check_box label="編輯" name="CheckNextOwnerModify"/> <check_box label="æšåº¨" name="CheckNextOwnerCopy"/> <check_box label="轉售" name="CheckNextOwnerTransfer"/> <check_box label="出售" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="æšåº¨" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="複製" name="Copy"/> + <combo_box.item label="內容" name="Contents"/> <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="åƒ¹æ ¼ï¼š" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <text name="CurrencySymbol">L$</text> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_item_properties.xml b/indra/newview/skins/default/xui/zh/floater_item_properties.xml new file mode 100644 index 0000000000000000000000000000000000000000..35dfae62b32d84ebe497970b331ee4f6bca5b6a8 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_item_properties.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Item Properties" title="物å“屬性"/> diff --git a/indra/newview/skins/default/xui/zh/floater_marketplace_listings.xml b/indra/newview/skins/default/xui/zh/floater_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..6da718f230493decedb4e67c37ab28cc56cb1de1 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_marketplace_listings.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_listings" title="MARKETPLACE 刊登"> + <panel name="marketplace_listings_panel"> + <panel> + <panel name="marketplace_listings_inventory_placeholder_panel"> + <text name="marketplace_listings_inventory_placeholder_title">載入ä¸â€¦</text> + </panel> + </panel> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_marketplace_validation.xml b/indra/newview/skins/default/xui/zh/floater_marketplace_validation.xml new file mode 100644 index 0000000000000000000000000000000000000000..ef89de95ada8988e4ad62630835ecbae15313954 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_marketplace_validation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_marketplace_validation" title="æŸ¥æ ¸ Marketplace 刊登清單"> + <button label="確定" label_selected="確定" name="OK"/> + <text_editor name="validation_text">MARKETPLACE_VALIDATION_TEXT</text_editor> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_openobject.xml b/indra/newview/skins/default/xui/zh/floater_openobject.xml index fa8cb0bdf3d116041cda339dbab3b455c306e058..29140eceb94be68451cfcf455e0461f9b78ad66d 100755 --- a/indra/newview/skins/default/xui/zh/floater_openobject.xml +++ b/indra/newview/skins/default/xui/zh/floater_openobject.xml @@ -3,6 +3,11 @@ <text name="object_name"> [DESC]: </text> - <button label="覆製到收ç´å€" label_selected="覆製到收ç´å€" name="copy_to_inventory_button"/> - <button label="複製並新增到è£æ‰®" label_selected="複製並新增到è£æ‰®" name="copy_and_wear_button"/> + <text name="border_note"> + 複製到收ç´å€ä¸¦åŠ 以穿戴 + </text> + <button label="新增到è£æ‰®" label_selected="新增到è£æ‰®" name="copy_and_wear_button"/> + <button label="å–代è£æ‰®" label_selected="å–代è£æ‰®" name="copy_and_replace_button"/> + <button label="åªè¤‡è£½åˆ°æ”¶ç´å€" label_selected="åªè¤‡è£½åˆ°æ”¶ç´å€" name="copy_to_inventory_button"/> + <button label="å–消" label_selected="å–消" name="cancel_button"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay.xml b/indra/newview/skins/default/xui/zh/floater_pay.xml index 69427605a46579470910b65cc66579d613159838..026ead957438c8087d41d88fc93145306c801aba 100755 --- a/indra/newview/skins/default/xui/zh/floater_pay.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay.xml @@ -1,21 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - 支付群組 - </string> - <string name="payee_resident"> - 支付居民 - </string> - <text name="payee_name"> - 測試一個長度éžå¸¸éžå¸¸éžå¸¸é•·çš„å稱,檢查是å¦è¢«åˆ‡æ–· - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 或é¸æ“‡ä¸€å€‹é‡‘é¡ï¼š - </text> - <button label="支付" label_selected="支付" name="pay btn"/> - <button label="å–消" label_selected="å–消" name="cancel btn"/> + <string name="payee_group">支付群組</string> + <string name="payee_resident">支付居民</string> + <text name="paying_text">ä½ æ£åœ¨æ”¯ä»˜ï¼š</text> + <text name="payee_name">測試一個長度éžå¸¸éžå¸¸éžå¸¸é•·çš„å稱,檢查是å¦è¢«åˆ‡æ–·</text> + <panel label="æœå°‹" name="PatternsPanel"> + <button label="支付 L$ 1" label_selected="支付 L$ 1" name="fastpay 1"/> + <button label="支付 L$ 5" label_selected="支付 L$ 5" name="fastpay 5"/> + <button label="支付 L$ 10" label_selected="支付 L$ 10" name="fastpay 10"/> + <button label="支付 L$ 20" label_selected="支付 L$ 20" name="fastpay 20"/> + </panel> + <panel label="æœå°‹" name="InputPanel"> + <text name="amount text">其他金é¡ï¼š</text> + <button label="支付" label_selected="支付" name="pay btn"/> + <button label="å–消" label_selected="å–消" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay_object.xml b/indra/newview/skins/default/xui/zh/floater_pay_object.xml index 7d20b44bc6e2062dd9dbecab0bfdfa9582715d26..c32243a115ae75af4bb3bc25feacd8fee63d9e31 100755 --- a/indra/newview/skins/default/xui/zh/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay_object.xml @@ -1,28 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> - <string name="payee_group"> - 支付群組 - </string> - <string name="payee_resident"> - 支付居民 - </string> - <text name="payee_name"> - Ericacita Moostopolison - </text> - <text name="object_name_label"> - 經由物件: - </text> + <string name="payee_group">支付群組</string> + <string name="payee_resident">支付居民</string> + <text name="paying_text">ä½ æ£åœ¨æ”¯ä»˜ï¼š</text> + <text name="payee_name">Ericacita Moostopolison</text> + <text name="object_name_label">經由物件:</text> <icon name="icon_object" tool_tip="物件"/> - <text name="object_name_text"> - 這是我å稱很長很長很長很長的一個很棒的物件 - </text> - <button label="L$1" label_selected="L$1" name="fastpay 1"/> - <button label="L$5" label_selected="L$5" name="fastpay 5"/> - <button label="L$10" label_selected="L$10" name="fastpay 10"/> - <button label="L$20" label_selected="L$20" name="fastpay 20"/> - <text name="amount text"> - 或é¸æ“‡ä¸€å€‹é‡‘é¡ï¼š - </text> - <button label="支付" label_selected="支付" name="pay btn"/> - <button label="å–消" label_selected="å–消" name="cancel btn"/> + <text name="object_name_text">這是我å稱很長很長很長很長的一個很棒的物件</text> + <panel label="æœå°‹" name="PatternsPanel"> + <button label="支付 L$ 1" label_selected="支付 L$ 1" name="fastpay 1"/> + <button label="支付 L$ 5" label_selected="支付 L$ 5" name="fastpay 5"/> + <button label="支付 L$ 10" label_selected="支付 L$ 10" name="fastpay 10"/> + <button label="支付 L$ 20" label_selected="支付 L$ 20" name="fastpay 20"/> + </panel> + <panel label="æœå°‹" name="InputPanel"> + <text name="amount text">其他金é¡ï¼š</text> + <button label="支付" label_selected="支付" name="pay btn"/> + <button label="å–消" label_selected="å–消" name="cancel btn"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml index eb1bad0ca27477b2eee1b99f5b89a2c481af72c4..d9e6eff897a2842fbc3996434162849f3888f55a 100755 --- a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml @@ -8,6 +8,7 @@ <menu_item_call label="我的外觀" name="Change Outfit"/> <menu_item_call label="編輯我的è£æ‰®" name="Edit Outfit"/> <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="懸浮高度" name="Hover Height"/> <menu_item_call label="我的朋å‹" name="Friends..."/> <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml index 68d0600141bacac139d5a39aacc9fbea556692e0..a644a45df6888d16b481f4b9b9261b0d489b29eb 100755 --- a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml @@ -25,6 +25,7 @@ <menu_item_call label="我的外觀" name="Chenge Outfit"/> <menu_item_call label="編輯我的è£æ‰®" name="Edit Outfit"/> <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="懸浮高度" name="Hover Height"/> <menu_item_call label="我的朋å‹" name="Friends..."/> <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml index 478f987035425a457f76fd31d1514e8f0622f63d..b346e82b77dd8c7679610a7ecc803219fe8f84eb 100755 --- a/indra/newview/skins/default/xui/zh/menu_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml @@ -1,5 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> + <menu_item_call label="新建刊登" name="Marketplace Create Listing"/> + <menu_item_call label="è¯çµåˆŠç™»" name="Marketplace Associate Listing"/> + <menu_item_call label="å–得(刷新)刊登" name="Marketplace Get Listing"/> + <menu_item_call label="檢查是å¦æœ‰èª¤" name="Marketplace Check Listing"/> + <menu_item_call label="編輯刊登" name="Marketplace Edit Listing"/> + <menu_item_call label="刊登" name="Marketplace List"/> + <menu_item_call label="åœæ¢åˆŠç™»" name="Marketplace Unlist"/> + <menu_item_call label="啟用" name="Marketplace Activate"/> + <menu_item_call label="åœç”¨" name="Marketplace Deactivate"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="購買" name="Task Buy"/> <menu_item_call label="打開" name="Task Open"/> @@ -87,6 +96,7 @@ <menu_item_call label="æ·»åŠ " name="Wearable Add"/> <menu_item_call label="脫下" name="Take Off"/> <menu_item_call label="複製到商家發件匣" name="Merchant Copy"/> - <menu_item_call label="é€å¾€ç¬¬äºŒäººç”Ÿè³¼ç‰©å¸‚集" name="Marketplace Send"/> + <menu_item_call label="複製到 Marketplace 刊登" name="Marketplace Copy"/> + <menu_item_call label="移到 Marketplace 刊登" name="Marketplace Move"/> <menu_item_call label="-- ç„¡é¸é … --" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_marketplace_view.xml b/indra/newview/skins/default/xui/zh/menu_marketplace_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..5396b2a8664bbde752e064dcf10590aa737e4643 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/menu_marketplace_view.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_marketplace_sort"> + <menu_item_check label="按å˜é‡æŽ’åºï¼ˆç”±å°‘到多)" name="sort_by_stock_amount"/> + <menu_item_check label="åªé¡¯ç¤ºåˆŠç™»è³‡æ–™å¤¾" name="show_only_listing_folders"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index 45d3feec26f3c2bfa5c81adbfc9dc2977491d0c7..e94f52a40155496fd8d38eb63d10206c79484341 100755 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -23,6 +23,7 @@ </menu> <menu_item_call label="購買 L$…" name="Buy and Sell L$"/> <menu_item_call label="商家發件匣…" name="MerchantOutbox"/> + <menu_item_call label="Marketplace 刊登…" name="MarketplaceListings"/> <menu_item_call label="帳戶主控臺…" name="Manage My Account"/> <menu_item_call label="å好è¨å®šâ€¦" name="Preferences"/> <menu_item_call label="工具列按鈕…" name="Toolbars"/> @@ -249,6 +250,7 @@ <menu_item_check label="æ質控制å°" name="Texture Console"/> <menu_item_check label="除錯控制å°" name="Debug Console"/> <menu_item_call label="通知控制å°" name="Notifications"/> + <menu_item_check label="地å€é™¤éŒ¯æŽ§åˆ¶å°" name="Region Debug Console"/> <menu_item_check label="快速碼錶" name="Fast Timers"/> <menu_item_check label="記憶體" name="Memory"/> <menu_item_check label="å ´æ™¯çµ±è¨ˆè³‡æ–™" name="Scene Statistics"/> @@ -352,7 +354,7 @@ <menu_item_check label="探詢內æ’物件ä½ç½®" name="Ping Interpolate Object Positions"/> <menu_item_call label="丟出一個å°åŒ…" name="Drop a Packet"/> </menu> - <menu_item_call label="傾å°è…³æœ¬æŽ§åˆ¶çš„æ”影機" name="Dump Scripted Camera"/> + <menu_item_call label="傾å°è…³æœ¬æŽ§åˆ¶çš„æ”影機" name="Dump Scripted Camera"/> <menu label="錄製器" name="Recorder"> <menu_item_call label="開始æ’放" name="Start Playback"/> <menu_item_call label="åœæ¢æ’放" name="Stop Playback"/> diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 5b520dd74574bb19e3b1c4194a80154be14e0db5..179f01e90dfd19b95ab97248b0e38ab8104160d2 100755 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -129,6 +129,88 @@ 購物市集åˆå§‹åŒ–失敗,系統或網路出錯。 è«‹ç¨å€™å†è©¦ä¸€æ¬¡ã€‚ <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="StockPasteFailed"> + 複製或移到é™é‡è³‡æ–™å¤¾æ™‚發生å•é¡Œï¼š + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantPasteFailed"> + 複製或移到 Marketplace 刊登時發生å•é¡Œï¼š + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantTransactionFailed"> + å’Œ Marketplace 進行的交易發生如下錯誤: + + åŽŸå› ï¼š'[ERROR_REASON]' + [ERROR_DESCRIPTION] + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantUnprocessableEntity"> + 我們無法刊登這產å“或啓用版本資料夾。 é€šå¸¸é€™æ˜¯å› ç‚ºåˆŠç™»å…§å®¹è¡¨çš„è³‡æ–™ä¸é½Šï¼Œä½†ä¹Ÿå¯èƒ½å› 為資料夾çµæ§‹æœ‰éŒ¯æ‰€è‡´ã€‚ 請編輯刊登內容或檢查刊登資料夾看是å¦æœ‰èª¤ã€‚ + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantListingFailed"> + 刊登到 Marketplace 時,發生錯誤: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="MerchantFolderActivationFailed"> + 啓用æ¤ç‰ˆæœ¬è³‡æ–™å¤¾æ™‚發生錯誤: + + '[ERROR_CODE]' + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="ConfirmMerchantActiveChange"> + 這個動作會改變æ¤åˆŠç™»çš„內容。 ä½ ç¢ºå®šè¦ç¹¼çºŒå—Žï¼Ÿ + <usetemplate ignoretext="在我變更 Marketplace çš„ä¸€é …åˆŠç™»å…§å®¹ä¹‹å‰ï¼Œå…ˆè·Ÿæˆ‘確èª" name="okcancelignore" notext="å–消" yestext="確定"/> + </notification> + <notification name="ConfirmMerchantMoveInventory"> + ä½ æ‹–æ›³åˆ° Marketplace åˆŠç™»è¦–çª—çš„ç‰©é …ï¼Œæœƒå¾žåŽŸä¾†çš„ä½ç½®ç§»å‡ºä¾†ï¼Œä¸æœƒè¢«è¤‡è£½ã€‚ ä½ ç¢ºå®šè¦ç¹¼çºŒå—Žï¼Ÿ + <usetemplate ignoretext="åœ¨æˆ‘æŠŠç‰©é …å¾žæ”¶ç´å€ç§»åˆ° Marketplace 之å‰ï¼Œå…ˆè·Ÿæˆ‘確èª" name="okcancelignore" notext="å–消" yestext="確定"/> + </notification> + <notification name="ConfirmListingCutOrDelete"> + ç§»å‹•æˆ–åˆªé™¤åˆŠç™»è³‡æ–™å¤¾å°‡æœƒåˆªé™¤ä½ çš„ Marketplace 刊登。 å¦‚ä½ å¸Œæœ›ä¿ç•™ Marketplace 刊登,請改而移動或刪除所想修改的版本資料夾的內容。 ä½ ç¢ºå®šè¦ç¹¼çºŒå—Žï¼Ÿ + <usetemplate ignoretext="åœ¨æˆ‘æŠŠç‰©é …å¾ž Marketplace 移出或刪除之å‰ï¼Œå…ˆè·Ÿæˆ‘確èª" name="okcancelignore" notext="å–消" yestext="確定"/> + </notification> + <notification name="ConfirmCopyToMarketplace"> + ä½ ç„¡æ¬Šå°‡é€™äº›ç‰©é …çš„ä¸€æˆ–å¤šå€‹è¤‡è£½åˆ° Marketplace。 ä½ å¯ä»¥ç§»å‹•é€™äº›ç‰©é …,或ä¿ç•™ä¸å‹•ã€‚ + <usetemplate canceltext="å–消" ignoretext="我試著é¸æ“‡è¤‡è£½åˆ° Marketplace 的內容如果å«æœ‰ã€Œç¦æ¢è¤‡è£½ã€çš„ç‰©é …ï¼Œå…ˆå‘我確èª" name="yesnocancelbuttons" notext="ä¿ç•™ä¸ç§»å‹•ç‰©é …" yestext="ç§»å‹•ç‰©é …"/> + </notification> + <notification name="ConfirmMerchantUnlist"> + 這動作會åœç™»é€™å€‹åˆŠç™»ã€‚ ä½ ç¢ºå®šè¦ç¹¼çºŒå—Žï¼Ÿ + <usetemplate ignoretext="在我åœç™» Marketplace çš„ç¾æœ‰åˆŠç™»å…§å®¹å‰ï¼Œå…ˆè·Ÿæˆ‘確èª" name="okcancelignore" notext="å–消" yestext="確定"/> + </notification> + <notification name="ConfirmMerchantClearVersion"> + 這個動作會åœç”¨æ¤åˆŠç™»çš„版本資料夾。 ä½ ç¢ºå®šè¦ç¹¼çºŒå—Žï¼Ÿ + <usetemplate ignoretext="在我åœç”¨ Marketplace æŸé …刊登的版本資料夾之å‰ï¼Œå…ˆè·Ÿæˆ‘確èªã€‚" name="okcancelignore" notext="å–消" yestext="確定"/> + </notification> + <notification name="AlertMerchantListingNotUpdated"> + 這刊登無法更新。 +[[URL] 點按這裡]å³å¯åœ¨ Marketplace 進行編輯。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="AlertMerchantListingCannotWear"> + ä½ ä¸èƒ½ç©¿æˆ´ä½åœ¨ Marketplace 刊登資料夾裡的衣物或身體部ä½ã€‚ + </notification> + <notification name="AlertMerchantListingInvalidID"> + 無效的刊登 ID。 + </notification> + <notification name="AlertMerchantListingActivateRequired"> + 這個刊登有多個版本資料夾或缺少版本資料夾。 ä½ äº‹å¾Œå¿…é ˆé¸æ“‡ä¸€å€‹åŠ 以啓用。 + <usetemplate ignoretext="當我è¦æ–°å»ºå¸¶æœ‰å¤šå€‹ç‰ˆæœ¬è³‡æ–™å¤¾çš„刊登å‰ï¼Œæ醒我啓動一個版本資料夾" name="okignore" yestext="確定"/> + </notification> + <notification name="AlertMerchantStockFolderSplit"> + 我們已經將ä¸åŒé¡žåž‹çš„é™é‡ç‰©é …分開放置到ä¸åŒçš„å˜é‡è³‡æ–™å¤¾ï¼Œé€™æ¨£ä½ 的資料夾æ‰èƒ½å¤ 刊登。 + <usetemplate ignoretext="刊登å‰æŠŠé™é‡è³‡æ–™å¤¾ä¸€åˆ†ç‚ºäºŒæ™‚,告知我" name="okignore" yestext="確定"/> + </notification> + <notification name="AlertMerchantStockFolderEmpty"> + å› ç‚ºå˜é‡çˆ²é›¶ï¼Œæˆ‘å€‘å·²ç¶“æŠŠä½ çš„åˆŠç™»ç‰©ä¸‹æž¶ã€‚ ä½ è‹¥å¸Œæœ›é‡æ–°åˆŠç™»ï¼Œå¿…é ˆå…ˆå¢žåŠ å˜é‡ã€‚ + <usetemplate ignoretext="é™é‡è³‡æ–™å¤¾å¦‚æžœæˆç©ºã€å°Žè‡´åˆŠç™»ç‰©ä¸‹æž¶ï¼Œå‘ŠçŸ¥æˆ‘" name="okignore" yestext="確定"/> + </notification> <notification name="CompileQueueSaveText"> 上傳腳本文å—時出å•é¡Œï¼ŒåŽŸå› :[REASON]。 è«‹ç¨å€™å†è©¦ä¸€æ¬¡ã€‚ </notification> @@ -473,6 +555,10 @@ 儲å˜è®Šæ›´ï¼Ÿ <usetemplate canceltext="å–消" name="yesnocancelbuttons" notext="ä¸è¦å„²å˜" yestext="儲å˜"/> </notification> + <notification name="DeleteNotecard"> + 刪除記事å¡ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–消" yestext="確定"/> + </notification> <notification name="GestureSaveFailedTooManySteps"> 姿勢儲å˜å¤±æ•—。 這個姿勢æ¥é©Ÿå¤ªå¤šã€‚ @@ -1859,6 +1945,9 @@ SHA1 指紋:[MD5_DIGEST] ä½ æ‰€æ¬²å‰å¾€çš„地å€å«æœ‰è¶…éŽä½ ç›®å‰å好的分級的內容。 ä½ å¯ä»¥åˆ°ã€Œæˆ‘自己 > å好è¨å®š > 一般è¨å®šã€è®Šæ›´ä½ çš„å好è¨å®šã€‚ <usetemplate name="okbutton" yestext="確定"/> </notification> + <notification name="SLM_UPDATE_FOLDER"> + [MESSAGE] + </notification> <notification name="RegionEntryAccessBlocked_AdultsOnlyContent"> ä½ æ‰€æ¬²å‰å¾€çš„地å€å«æœ‰ [REGIONMATURITY] 的分級內容,僅é™æˆäººã€‚ <url name="url"> @@ -2146,6 +2235,10 @@ SHA1 指紋:[MD5_DIGEST] <ignore name="ignore" text="我在創建ä¸å« money() 腳本的物件時è¨å®šäº†ã€Œæ”¯ä»˜ç‰©ä»¶ã€å‹•ä½œ"/> </form> </notification> + <notification name="PayConfirmation"> + 確èªä½ 真è¦æ”¯ä»˜ L$[AMOUNT] 給 [TARGET]。 + <usetemplate ignoretext="付款å‰è·Ÿæˆ‘確èªï¼ˆè¶…éŽ L$200 的總é¡ï¼‰" name="okcancelignore" notext="å–消" yestext="支付"/> + </notification> <notification name="OpenObjectCannotCopy"> 這物件ä¸æ²’æœ‰ä»»ä½•å‡†è¨±ä½ è¤‡è£½çš„ç‰©é …ã€‚ </notification> @@ -3832,9 +3925,11 @@ SHA1 指紋:[MD5_DIGEST] </notification> <notification name="TeleportedByAttachment"> ä½ å·²æˆåŠŸè¢« [ITEM_ID] ä¸Šçš„ä¸€å€‹é™„ä»¶çž¬é–“å‚³é€ + <usetemplate ignoretext="瞬間傳é€ï¼šä½ å·²æˆåŠŸè¢«ä¸€å€‹é™„件瞬間傳é€" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOnParcel"> ä½ å·²æˆåŠŸè¢« '[PARCEL_NAME]' 地段的物件 '[OBJECT_NAME]' çž¬é–“å‚³é€ + <usetemplate ignoretext="瞬間傳é€ï¼šä½ 已被一個物件或地段瞬間傳é€æˆåŠŸ" name="notifyignore"/> </notification> <notification name="TeleportedByObjectOwnedBy"> ä½ å·²æˆåŠŸè¢« [OWNER_ID] æ“有的物件 '[OBJECT_NAME]' çž¬é–“å‚³é€ @@ -4166,7 +4261,7 @@ SHA1 指紋:[MD5_DIGEST] <usetemplate ignoretext="無法移動檔案。 å·²æ¢å¾©å‰ä¸€å€‹è·¯å¾‘。" name="okignore" yestext="確定"/> </notification> <notification name="DefaultObjectPermissions"> - 儲å˜é è¨æ¬Šé™æ™‚出å•é¡Œï¼ŒåŽŸå› :[REASON]。 è«‹ç¨å¾Œå†å˜—試儲å˜é è¨æ¬Šé™ã€‚ + 儲å˜é è¨ç‰©ä»¶æ¬Šé™æ™‚出å•é¡Œï¼ŒåŽŸå› :[REASON]。 è«‹ç¨å¾Œå†å˜—試儲å˜é è¨æ¬Šé™ã€‚ <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="ChatHistoryIsBusyAlert"> diff --git a/indra/newview/skins/default/xui/zh/panel_login.xml b/indra/newview/skins/default/xui/zh/panel_login.xml index 09a1af5cf889532dc66e5fcedebc04a07d66b397..5292e5fc38ff3317740a528c50e97a99bbe6ee5a 100755 --- a/indra/newview/skins/default/xui/zh/panel_login.xml +++ b/indra/newview/skins/default/xui/zh/panel_login.xml @@ -1,26 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> - <panel.string name="forgot_password_url"> - http://secondlife.com/account/request.php - </panel.string> + <panel.string name="forgot_password_url">http://secondlife.com/account/request.php</panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="使用者å稱" name="username_combo" tool_tip="使用者åç¨±æ˜¯ä½ è¨»å†Šæ™‚æ‰€æŒ‘é¸çš„,例如 bobsmith12 或 Steller Sunshine"/> <line_editor label="密碼" name="password_edit"/> - <check_box label="記得我" name="remember_check"/> - <text name="forgot_password_text"> - 忘記密碼 - </text> - <button label="登入" name="connect_btn"/> - <text name="At_My_Last_Location_Label"> - 到我上次去的地點 - </text> <combo_box label="我的最愛" name="start_location_combo"> + <combo_box.item label="我上一次ä½ç½®" name="MyLastLocation"/> <combo_box.item label="我的家" name="MyHome"/> </combo_box> - <button label="登入" name="connect_favorite_btn"/> - <line_editor label="éµå…¥ä¸€å€‹åœ°é»ž" name="location_edit"/> - <button label="登入" name="connect_location_btn"/> + <button label="登入" name="connect_btn"/> + <check_box label="記得我" name="remember_check"/> + <text name="forgot_password_text">忘記密碼</text> <combo_box label="é¸æ“‡æ¨¡æ“¬ä¸–ç•Œ" name="server_combo"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings.xml new file mode 100644 index 0000000000000000000000000000000000000000..2eae87c6a0996e66f2304b56e4496e65ab609b08 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Marketplace" name="Marketplace Panel"> + <panel name="tool_panel"> + <menu_button name="sort_btn" tool_tip="檢視/排åºçš„é¸é …"/> + <button name="add_btn" tool_tip="新建一個刊登資料夾"/> + <button label="檢查是å¦æœ‰èª¤" name="audit_btn" tool_tip="æª¢æŸ¥ä½ çš„ Marketplace 刊登"/> + </panel> + <panel name="tab_container_panel"> + <filter_editor label="éŽæ¿¾ Marketplace 刊登清單" name="filter_editor"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_inventory.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_inventory.xml new file mode 100644 index 0000000000000000000000000000000000000000..a052a50bd1112afc11b8778a15f301f7c6f948f8 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="全部" name="All Items" tool_tip="拖曳並置放物å“到這裡,å³å¯åˆŠç™»"/> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_listed.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_listed.xml new file mode 100644 index 0000000000000000000000000000000000000000..3adc66a1d4c219a7178947d2b5d5904193859a49 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_listed.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="已刊登" name="Active Items"/> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unassociated.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unassociated.xml new file mode 100644 index 0000000000000000000000000000000000000000..d582e6615ca4a77ad2f6081d9cc7079390e6b740 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unassociated.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="å·²å–消è¯çµ" name="Unassociated Items"/> diff --git a/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unlisted.xml b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unlisted.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d00f3d9b73482e39f6bf936d5866cdba31ca7b1 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_marketplace_listings_unlisted.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<inventory_panel label="未刊登" name="Inactive Items"/> diff --git a/indra/newview/skins/default/xui/zh/panel_status_bar.xml b/indra/newview/skins/default/xui/zh/panel_status_bar.xml index b4cdff9d6ba829f69c313cbf7db530aadc6d3ecb..2de31eb526f3d777037ab7c331dc5dc91170a689 100755 --- a/indra/newview/skins/default/xui/zh/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_status_bar.xml @@ -1,28 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <panel.string name="packet_loss_tooltip"> - å°åŒ…æ失 - </panel.string> - <panel.string name="bandwidth_tooltip"> - é »å¯¬ - </panel.string> - <panel.string name="time"> - [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] - </panel.string> - <panel.string name="timeTooltip"> - [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] - </panel.string> - <panel.string name="buycurrencylabel"> - L$ [AMT] - </panel.string> + <panel.string name="packet_loss_tooltip">å°åŒ…æ失</panel.string> + <panel.string name="bandwidth_tooltip">é »å¯¬</panel.string> + <panel.string name="time">[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]</panel.string> + <panel.string name="timeTooltip">[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]</panel.string> + <panel.string name="buycurrencylabel">L$ [AMT]</panel.string> <panel name="balance_bg"> - <text name="balance" tool_tip="點按以é‡æ–°æ›´æ–°ä½ çš„ L$ 帳戶餘é¡" value="L$20"/> + <text name="balance" tool_tip="點按以é‡æ–°æ›´æ–°ä½ çš„ L$ 帳戶餘é¡" value="L$??"/> <button label="購買 L$" name="buyL" tool_tip="點按以購買更多 L$"/> <button label="購物" name="goShop" tool_tip="打開第二人生購物市集"/> </panel> - <text name="TimeText" tool_tip="ç›®å‰æ™‚å€ï¼ˆå¤ªå¹³æ´‹ï¼‰"> - 24:00 AM PST - </text> + <text name="TimeText" tool_tip="ç›®å‰æ™‚å€ï¼ˆå¤ªå¹³æ´‹ï¼‰">24:00 AM PST</text> <button name="media_toggle_btn" tool_tip="開始/åœæ¢å…¨éƒ¨åª’體(音樂ã€å½±ç‰‡ã€ç¶²é )"/> <button name="volume_btn" tool_tip="全域音é‡æŽ§åˆ¶"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml index dcb709d2e3806a0171c3cd7ed7937d9c5105ce30..9c5798d256998a61ae6ebe4118eb558855cf11bf 100755 --- a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml @@ -54,12 +54,12 @@ ä½ å¯ä»¥ï¼š </text> <check_box label="修改" name="CheckOwnerModify"/> - <check_box label="æšåº¨" name="CheckOwnerCopy"/> + <check_box label="複製" name="CheckOwnerCopy"/> <check_box label="轉移" name="CheckOwnerTransfer"/> <text name="AnyoneLabel"> 任何人: </text> - <check_box label="æšåº¨" name="CheckEveryoneCopy"/> + <check_box label="複製" name="CheckEveryoneCopy"/> <text name="GroupLabel"> 群組: </text> @@ -68,12 +68,13 @@ 下一個所有人: </text> <check_box label="修改" name="CheckNextOwnerModify"/> - <check_box label="æšåº¨" name="CheckNextOwnerCopy"/> + <check_box label="複製" name="CheckNextOwnerCopy"/> <check_box label="轉移" name="CheckNextOwnerTransfer" tool_tip="下一個所有人å¯è´ˆé€æˆ–轉售這個物件"/> </panel> <check_box label="出售" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="æšåº¨" name="Copy"/> + <combo_box name="ComboBoxSaleType"> + <combo_box.item label="複製" name="Copy"/> + <combo_box.item label="內容" name="Contents"/> <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="åƒ¹æ ¼ï¼š L$" name="Edit Cost"/> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml index 60f44a3d88f9f70e4bbf15ca0779929fd2818571..0884f1789b0daaa91581ab743c1a56c26b531d1c 100755 --- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml @@ -1,71 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="object properties" title="物件檔案"> - <panel.string name="text deed continued"> - 讓渡 - </panel.string> - <panel.string name="text deed"> - 讓渡 - </panel.string> - <panel.string name="text modify info 1"> - ä½ èƒ½ä¿®æ”¹é€™å€‹ç‰©ä»¶ - </panel.string> - <panel.string name="text modify info 2"> - ä½ èƒ½ä¿®æ”¹é€™äº›ç‰©ä»¶ - </panel.string> - <panel.string name="text modify info 3"> - ä½ ä¸èƒ½ä¿®æ”¹é€™å€‹ç‰©ä»¶ - </panel.string> - <panel.string name="text modify info 4"> - ä½ ä¸èƒ½ä¿®æ”¹é€™äº›ç‰©ä»¶ - </panel.string> - <panel.string name="text modify info 5"> - 無法跨地å€ä¿®æ”¹é€™å€‹ç‰©ä»¶ - </panel.string> - <panel.string name="text modify info 6"> - 無法跨地å€ä¿®æ”¹é€™äº›ç‰©ä»¶ - </panel.string> - <panel.string name="text modify warning"> - 這個物件å«æœ‰è¯çµçš„部分 - </panel.string> - <panel.string name="Cost Default"> - åƒ¹æ ¼ï¼š L$ - </panel.string> - <panel.string name="Cost Total"> - 總價:L$ - </panel.string> - <panel.string name="Cost Per Unit"> - 單價:L$ - </panel.string> - <panel.string name="Cost Mixed"> - æ··åˆåƒ¹æ ¼ - </panel.string> - <panel.string name="Sale Mixed"> - æ··åˆéŠ·å”® - </panel.string> + <panel.string name="text deed continued">讓渡</panel.string> + <panel.string name="text deed">讓渡</panel.string> + <panel.string name="text modify info 1">ä½ èƒ½ä¿®æ”¹é€™å€‹ç‰©ä»¶</panel.string> + <panel.string name="text modify info 2">ä½ èƒ½ä¿®æ”¹é€™äº›ç‰©ä»¶</panel.string> + <panel.string name="text modify info 3">ä½ ä¸èƒ½ä¿®æ”¹é€™å€‹ç‰©ä»¶</panel.string> + <panel.string name="text modify info 4">ä½ ä¸èƒ½ä¿®æ”¹é€™äº›ç‰©ä»¶</panel.string> + <panel.string name="text modify info 5">無法跨地å€ä¿®æ”¹é€™å€‹ç‰©ä»¶</panel.string> + <panel.string name="text modify info 6">無法跨地å€ä¿®æ”¹é€™äº›ç‰©ä»¶</panel.string> + <panel.string name="text modify warning">這個物件å«æœ‰è¯çµçš„部分</panel.string> + <panel.string name="Cost Default">åƒ¹æ ¼ï¼š L$</panel.string> + <panel.string name="Cost Total">ç¸½åƒ¹æ ¼ï¼šL$</panel.string> + <panel.string name="Cost Per Unit">單價:L$</panel.string> + <panel.string name="Cost Mixed">æ··åˆåƒ¹æ ¼</panel.string> + <panel.string name="Sale Mixed">æ··åˆéŠ·å”®</panel.string> <text name="title" value="物件檔案"/> <text name="where" value="(在虛擬世界)"/> <panel label="" name="properties_panel"> - <text name="Name:"> - å稱: - </text> - <text name="Description:"> - æ述: - </text> - <text name="CreatorNameLabel"> - å‰µé€ è€…ï¼š - </text> - <text name="Owner:"> - 所有人: - </text> - <text name="Group_label"> - 群組: - </text> + <text name="Name:">å稱:</text> + <text name="Description:">æ述:</text> + <text name="CreatorNameLabel">å‰µé€ è€…ï¼š</text> + <text name="Owner:">所有人:</text> + <text name="Group_label">群組:</text> <button name="button set group" tool_tip="é¸æ“‡ä¸€å€‹ç¾¤çµ„以分享這物件的權é™"/> <name_box initial_value="載入ä¸..." name="Group Name Proxy"/> <button label="讓渡" label_selected="讓渡" name="button deed" tool_tip="「讓渡ã€æœƒæŠŠé€™ç‰©ä»¶è´ˆé€å‡ºåŽ»ä¸¦è³¦äºˆã€Œä¸‹ä¸€å€‹æ‰€æœ‰äººã€æ¬Šé™ã€‚ 群組所分享的物件å¯ç”±ç¾¤çµ„è·å“¡åŠ 以讓渡。"/> - <text name="label click action"> - 點按以: - </text> + <text name="label click action">點按以:</text> <combo_box name="clickaction"> <combo_box.item label="觸碰(é è¨ï¼‰" name="Touch/grab(default)"/> <combo_box.item label="å在物件上" name="Sitonobject"/> @@ -75,21 +35,13 @@ <combo_box.item label="縮放" name="Zoom"/> </combo_box> <panel name="perms_inv"> - <text name="perm_modify"> - ä½ èƒ½ä¿®æ”¹é€™å€‹ç‰©ä»¶ - </text> - <text name="Anyone can:"> - 任何人: - </text> + <text name="perm_modify">ä½ èƒ½ä¿®æ”¹é€™å€‹ç‰©ä»¶</text> + <text name="Anyone can:">任何人:</text> <check_box label="æšåº¨" name="checkbox allow everyone copy"/> <check_box label="移動" name="checkbox allow everyone move"/> - <text name="GroupLabel"> - 群組: - </text> + <text name="GroupLabel">群組:</text> <check_box label="分享" name="checkbox share with group" tool_tip="å…許æ¤ç¾¤çµ„所有æˆå“¡å…±äº«ä½ 修改æ¤ç‰©ä»¶çš„權é™ã€‚ ä½ å¿…é ˆè®“æ¸¡æ‰èƒ½å•Ÿå‹•è§’色é™åˆ¶ã€‚"/> - <text name="NextOwnerLabel"> - 下一個所有人: - </text> + <text name="NextOwnerLabel">下一個所有人:</text> <check_box label="修改" name="checkbox next owner can modify"/> <check_box label="æšåº¨" name="checkbox next owner can copy"/> <check_box label="轉移" name="checkbox next owner can transfer" tool_tip="下一個所有人å¯è´ˆé€æˆ–轉售這個物件"/> @@ -102,27 +54,13 @@ </combo_box> <spinner label="åƒ¹æ ¼ï¼š L$" name="Edit Cost"/> <check_box label="顯示在æœå°‹ä¸" name="search_check" tool_tip="讓其他人å¯ä»¥åœ¨æœå°‹çµæžœä¸å¯Ÿçœ‹åˆ°æ¤ç‰©ä»¶"/> - <text name="pathfinding_attributes_label"> - 尋徑屬性: - </text> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> + <text name="pathfinding_attributes_label">尋徑屬性:</text> + <text name="B:">B:</text> + <text name="O:">O:</text> + <text name="G:">G:</text> + <text name="E:">E:</text> + <text name="N:">N:</text> + <text name="F:">F:</text> </panel> <panel name="button_panel"> <button label="打開" name="open_btn"/> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index e8edf1270bc7cf22a79627a5c06fc4284bec1fc8..6493864b923a416069ca82d6b7406e21e965bb02 100755 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -449,28 +449,46 @@ http://secondlife.com/viewer-access-faq </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipOutboxDragToWorld"> - å•†å®¶ç™¼ä»¶åŒ£å…§çš„ç‰©é …ç„¡æ³•ç”¢ç”Ÿåˆ°è™›æ“¬ä¸–ç•Œ + ä½ ä¸èƒ½å¾ž Marketplace 的刊登資料夾產生物件。 + </string> + <string name="TooltipOutboxWorn"> + ä½ ä¸èƒ½æŠŠæ£åœ¨ç©¿æˆ´çš„物件放到 Marketplace 的刊登資料夾 + </string> + <string name="TooltipOutboxFolderLevels"> + å·¢ç‹€è³‡æ–™å¤¾æ·±åº¦è¶…éŽ [AMOUNT]。 請減少巢狀資料夾的深度,必è¦çš„話請把物件併整起來。 + </string> + <string name="TooltipOutboxTooManyFolders"> + åè³‡æ–™å¤¾æ•¸ç›®è¶…éŽ [AMOUNT]。 請減少刊登的資料夾數目,必è¦çš„話請把物件併整起來。 + </string> + <string name="TooltipOutboxTooManyObjects"> + ç‰©ä»¶æ•¸ç›®è¶…éŽ [AMOUNT]。 若想在åŒä¸€åˆŠç™»ä¸å‡ºå”®è¶…éŽ [AMOUNT] å€‹ç‰©ä»¶ï¼Œä½ éœ€è¦æŠŠç‰©ä»¶ä½µæ•´èµ·ä¾†ã€‚ + </string> + <string name="TooltipOutboxTooManyStockItems"> + é™é‡ç‰©ä»¶æ•¸ç›®è¶…éŽ [AMOUNT]。 + </string> + <string name="TooltipOutboxCannotDropOnRoot"> + ä½ åªèƒ½æŠŠç‰©é …或資料夾拖放到「所有ã€(ALL)é 籤 è«‹é¸å–該é 籤,å†ç§»å‹•ä½ çš„ç‰©é …æˆ–è³‡æ–™å¤¾ã€‚ </string> <string name="TooltipOutboxNoTransfer"> - 至少一個物件無法出售或轉移。 + 至少一個物件無法出售或轉移 </string> <string name="TooltipOutboxNotInInventory"> - ä½ çš„å•†å®¶ç™¼ä»¶åŒ£åªèƒ½æŽ¥å—直接來自收ç´å€çš„ç‰©é …ã€‚ + ä½ åªèƒ½å°‡ç‰©ä»¶å¾žæ”¶ç´å€æ”¾åˆ° Marketplace。 </string> - <string name="TooltipOutboxWorn"> - ä½ ç©¿è‘—ä¸çš„ç‰©é …ç„¡æ³•æ”¾å…¥å•†å®¶ç™¼ä»¶åŒ£ã€‚ + <string name="TooltipOutboxLinked"> + ä½ ä¸èƒ½æŠŠè¯çµçš„物件或資料夾放到 Marketplace </string> <string name="TooltipOutboxCallingCard"> - å片ä¸å¾—放入商家發件匣 + ä½ ä¸èƒ½æŠŠå片放到 Marketplace </string> - <string name="TooltipOutboxFolderLevels"> - å·¢ç‹€è³‡æ–™å¤¾æ·±åº¦è¶…éŽ 3 + <string name="TooltipOutboxDragActive"> + 已登出的刊登內容ä¸å¾—移動 </string> - <string name="TooltipOutboxTooManyFolders"> - é ‚å±¤è³‡æ–™å¤¾çš„åè³‡æ–™å¤¾æ•¸ç›®è¶…éŽ 20 + <string name="TooltipOutboxCannotMoveRoot"> + ä½ ä¸èƒ½ç§»å‹• Marketplace åˆŠç™»çš„æ ¹ç›®éŒ„ </string> - <string name="TooltipOutboxTooManyObjects"> - é ‚å±¤è³‡æ–™å¤¾ç‰©é …æ•¸ç›®è¶…éŽ 200 + <string name="TooltipOutboxMixedStock"> + é™é‡è³‡æ–™å¤¾çš„æ‰€æœ‰ç‰©ä»¶å¿…é ˆæ˜¯ç›¸åŒçš„é¡žåž‹å’Œæ¬Šé™ </string> <string name="TooltipDragOntoOwnChild"> 資料夾ä¸å¾—移到其å資料夾底下 @@ -1055,7 +1073,7 @@ http://secondlife.com/viewer-access-faq <string name="AgentNameSubst"> ï¼ˆä½ ï¼‰ </string> - <string name="JoinAnExperience"/> + <string name="JoinAnExperience"/><!-- intentionally blank --> <string name="SilentlyManageEstateAccess"> 管ç†é ˜å‡ºå…¥è¨±å¯å單時,ä¸é¡¯ç¤ºè¦ç¤º </string> @@ -1122,6 +1140,12 @@ http://secondlife.com/viewer-access-faq <string name="bitmap_image_files"> Bitmap åœ–åƒ </string> + <string name="png_image_files"> + PNG åœ–åƒ + </string> + <string name="save_texture_image_files"> + Targa 或 PNG åœ–åƒ + </string> <string name="avi_movie_file"> AVI è¦–é »æª”æ¡ˆ </string> @@ -1371,6 +1395,9 @@ http://secondlife.com/viewer-access-faq <string name="FavoritesNoMatchingItems"> å°‡ä¸€å€‹åœ°æ¨™æ‹–æ›³åˆ°é€™è£¡ï¼ŒåŠ é€²ã€Œæˆ‘çš„æœ€æ„›ã€ã€‚ </string> + <string name="MarketplaceNoMatchingItems"> + 找ä¸åˆ°ç‰©é …。 請檢查æœå°‹å—串的拼寫,å†è©¦ä¸€æ¬¡ã€‚ + </string> <string name="InventoryNoTexture"> ä½ çš„æ”¶ç´å€è£¡æ²’有這個æ質的副本 </string> @@ -1418,29 +1445,95 @@ http://secondlife.com/viewer-access-faq <string name="InventoryOutboxError"> [[MARKETPLACE_CREATE_STORE_URL] 購物市集商店]æ£å‚³å›žéŒ¯èª¤ã€‚ </string> + <string name="InventoryMarketplaceError"> + 這功能尚在 Beta 測試階段。 å¦‚ä½ æƒ³åƒèˆ‡ï¼Œè«‹åˆ°é€™å€‹[http://goo.gl/forms/FCQ7UXkakz Google 表單]填寫姓å。 + </string> + <string name="InventoryMarketplaceListingsNoItemsTitle"> + ä½ çš„ Marketplace 刊登資料夾是空的。 + </string> + <string name="InventoryMarketplaceListingsNoItems"> + 將資料夾拖曳到這個å€åŸŸï¼Œå³å¯åœ¨[[MARKETPLACE_DASHBOARD_URL] Marketplace]刊登出售。 + </string> + <string name="Marketplace Validation Warning Stock"> + é™é‡è³‡æ–™å¤¾å¿…é ˆæ”¾åœ¨ç‰ˆæœ¬è³‡æ–™å¤¾è£¡ + </string> + <string name="Marketplace Validation Error Mixed Stock"> + :錯誤:é™é‡è³‡æ–™å¤¾çš„æ‰€æœ‰ç‰©ä»¶å¿…é ˆæ˜¯ã€Œç¦æ¢è¤‡è£½ã€ä¸”åŒä¸€é¡žåž‹ + </string> + <string name="Marketplace Validation Error Subfolder In Stock"> + :錯誤:é™é‡è³‡æ–™å¤¾ä¸å¾—å«æœ‰å資料夾 + </string> + <string name="Marketplace Validation Warning Empty"> + :è¦å‘Šï¼šè³‡æ–™å¤¾è£¡æ²’有æ±è¥¿ + </string> + <string name="Marketplace Validation Warning Create Stock"> + :è¦å‘Šï¼šæ–°å»ºé™é‡è³‡æ–™å¤¾ + </string> + <string name="Marketplace Validation Warning Create Version"> + :è¦å‘Šï¼šæ–°å»ºç‰ˆæœ¬è³‡æ–™å¤¾ + </string> + <string name="Marketplace Validation Warning Move"> + :è¦å‘Šï¼šç§»å‹•ç‰©é … + </string> + <string name="Marketplace Validation Warning Delete"> + :è¦å‘Šï¼šè³‡æ–™å¤¾å…§å®¹å·²è½‰ç§»åˆ°é™é‡è³‡æ–™å¤¾ï¼Œç©ºçš„資料夾已移除 + </string> + <string name="Marketplace Validation Error Stock Item"> + :錯誤:「ç¦æ¢è¤‡è£½ã€ç‰©ä»¶å¿…é ˆæ”¾åœ¨é™é‡è³‡æ–™å¤¾è£¡ + </string> + <string name="Marketplace Validation Warning Unwrapped Item"> + :è¦å‘Šï¼šç‰©é …å¿…é ˆæ”¾åœ¨ä¸€å€‹ç‰ˆæœ¬è³‡æ–™å¤¾è£¡ + </string> + <string name="Marketplace Validation Error"> + :錯誤: + </string> + <string name="Marketplace Validation Warning"> + :è¦å‘Šï¼š + </string> + <string name="Marketplace Validation Error Empty Version"> + :è¦å‘Šï¼šç‰ˆæœ¬è³‡æ–™å¤¾å¿…é ˆåŒ…å«è‡³å°‘ä¸€å€‹ç‰©é … + </string> + <string name="Marketplace Validation Error Empty Stock"> + :è¦å‘Šï¼šé™é‡è³‡æ–™å¤¾å¿…é ˆåŒ…å«è‡³å°‘ä¸€å€‹ç‰©é … + </string> + <string name="Marketplace Validation No Error"> + 沒有需è¦å ±å‘Šçš„錯誤或è¦å‘Š + </string> <string name="Marketplace Error None"> 零錯誤 </string> + <string name="Marketplace Error Prefix"> + 錯誤: + </string> <string name="Marketplace Error Not Merchant"> - ç™¼ç”ŸéŒ¯èª¤ï¼šå°‡ç‰©é …é€å¾€ç¬¬äºŒäººç”Ÿè³¼ç‰©å¸‚集之å‰ï¼Œä½ å¿…é ˆå–得商家的身份(å…費)。 + 將物件移到 Marketplace å‰ï¼Œä½ å¿…é ˆå–得商家的身份(å…費)。 + </string> + <string name="Marketplace Error Not Accepted"> + ç„¡æ³•ç§»å‹•è©²è³‡æ–™å¤¾çš„ç‰©é …ã€‚ </string> - <string name="Marketplace Error Empty Folder"> - 錯誤:æ¤è³‡æ–™å¤¾æ²’有內容。 + <string name="Marketplace Error Unsellable Item"> + æ¤ç‰©é …無法在 Marketplace 出售。 </string> - <string name="Marketplace Error Unassociated Products"> - 錯誤:æ¤ç‰©é …ä¸Šå‚³å¤±æ•—ï¼Œå› ç‚ºä½ çš„å•†å®¶å¸³æˆ¶æœ‰å¤ªå¤šå’Œç”¢å“ç„¡é—œè¯çš„ç‰©é …ã€‚ è¦è§£æ±ºé€™å€‹å•é¡Œï¼Œè«‹ç™»å…¥ç¬¬äºŒäººç”Ÿè³¼ç‰©å¸‚é›†ç¶²ç«™ï¼Œæ¸›ä½Žä½ çš„ç„¡é—œè¯ç‰©é …數目。 + <string name="MarketplaceNoID"> + 沒有 Mkt ID </string> - <string name="Marketplace Error Object Limit"> - 錯誤:æ¤ç‰©é …包å«å¤ªå¤šç‰©ä»¶ã€‚ è¦è§£æ±ºé€™éŒ¯èª¤ï¼Œè«‹å°‡ç‰©ä»¶è£ç®±ï¼Œä½¿ç¸½ç‰©ä»¶æ•¸ç›®ä¸è¶…éŽ 200。 + <string name="MarketplaceLive"> + 已刊登 </string> - <string name="Marketplace Error Folder Depth"> - 錯誤:æ¤ç‰©é …å«æœ‰å¤ªå¤šå±¤çš„巢狀資料夾。 è«‹åŠ ä»¥é‡æ–°æ•´ç†ï¼Œè‡³å¤šå…許 3 層的巢狀資料夾。 + <string name="MarketplaceActive"> + ä½¿ç”¨ä¸ </string> - <string name="Marketplace Error Unsellable Item"> - 錯誤:æ¤ç‰©é …無法在第二人生購物市集出售。 + <string name="MarketplaceMax"> + 最多 </string> - <string name="Marketplace Error Internal Import"> - 錯èª¤ï¼šé€™å€‹ç‰©é …有å•é¡Œã€‚ è«‹ç¨å€™å†è©¦ä¸€æ¬¡ã€‚ + <string name="MarketplaceStock"> + é™é‡ + </string> + <string name="MarketplaceNoStock"> + 缺貨 + </string> + <string name="MarketplaceUpdating"> + æ£åœ¨æ›´æ–°â€¦ </string> <string name="Open landmarks"> 開啟地標 @@ -1461,6 +1554,7 @@ http://secondlife.com/viewer-access-faq 無內容 </string> <string name="WornOnAttachmentPoint" value="(已穿 [ATTACHMENT_POINT])"/> + <string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/> <string name="ActiveGesture" value="[GESLABEL](使用ä¸ï¼‰"/> <string name="PermYes"> 是 @@ -1731,6 +1825,15 @@ http://secondlife.com/viewer-access-faq <string name="Invalid Attachment"> 無效的附接點 </string> + <string name="ATTACHMENT_MISSING_ITEM"> + 錯誤:缺少物件 + </string> + <string name="ATTACHMENT_MISSING_BASE_ITEM"> + éŒ¯èª¤ï¼šç¼ºå°‘åŸºæœ¬ç‰©é … + </string> + <string name="ATTACHMENT_NOT_ATTACHED"> + 錯誤:物件在目å‰çš„è£æ‰®è£¡ï¼Œå¯æ˜¯å»æœªé™„è‘— + </string> <string name="YearsMonthsOld"> 年齡:[AGEYEARS] å¹´ [AGEMONTHS] 月 </string> @@ -1866,9 +1969,6 @@ http://secondlife.com/viewer-access-faq <string name="CompileQueueUnknownFailure"> ä¸‹è¼‰å¤±æ•—ï¼ŒåŽŸå› ä¸æ˜Ž </string> - <string name="CompileNoExperiencePerm"> - ç•¥éŽé«”é©— [EXPERIENCE] 的腳本 [SCRIPT]。 - </string> <string name="CompileQueueTitle"> é‡æ–°ç·¨è¯é€²åº¦ </string> @@ -1902,6 +2002,9 @@ http://secondlife.com/viewer-access-faq <string name="SaveComplete"> 儲å˜å®Œç•¢ã€‚ </string> + <string name="UploadFailed"> + 檔案上傳失敗: + </string> <string name="ObjectOutOfRange"> 腳本(物件超出範åœï¼‰ </string> @@ -1911,6 +2014,9 @@ http://secondlife.com/viewer-access-faq <string name="GroupsNone"> ç„¡ </string> + <string name="CompileNoExperiencePerm"> + ç•¥éŽé«”é©— [EXPERIENCE] 的腳本 [SCRIPT]。 + </string> <string name="Group" value="(群組)"/> <string name="Unknown"> (未知) @@ -4400,7 +4506,7 @@ http://secondlife.com/viewer-access-faq 女性姿勢 </string> <string name="Other Gestures"> - 其他���勢 + 其他姿勢 </string> <string name="Speech Gestures"> 演說姿勢 @@ -4662,7 +4768,7 @@ http://secondlife.com/viewer-access-faq 刪除所é¸å–的物å“? </string> <string name="DeleteItem"> - 刪除所é¸å–的物���? + 刪除所é¸å–的物å“? </string> <string name="EmptyOutfitText"> 沒有任何物å“在這個è£æ‰®å…§ @@ -5074,6 +5180,9 @@ http://secondlife.com/viewer-access-faq <string name="Command_Marketplace_Label"> 第二人生購物市集 </string> + <string name="Command_MarketplaceListings_Label"> + Marketplace + </string> <string name="Command_MiniMap_Label"> è¿·ä½ åœ°åœ– </string> @@ -5161,6 +5270,9 @@ http://secondlife.com/viewer-access-faq <string name="Command_Marketplace_Tooltip"> å‰å¾€è³¼ç‰© </string> + <string name="Command_MarketplaceListings_Tooltip"> + å‡ºå”®ä½ çš„å‰µä½œç‰© + </string> <string name="Command_MiniMap_Tooltip"> 顯示附近的人 </string> @@ -5272,6 +5384,18 @@ http://secondlife.com/viewer-access-faq <string name="UserDictionary"> [User] </string> + <string name="logging_calls_disabled_log_empty"> + 交談未留記錄。 若想開始留記錄,請到「å好è¨å®š > èŠå¤©ã€ï¼Œé¸æ“‡ã€Œå„²å˜ï¼šåªç•™æ·å²è¨˜éŒ„ã€æˆ–「儲å˜ï¼šæ·å²è¨˜éŒ„兼交談內容ã€ã€‚ + </string> + <string name="logging_calls_disabled_log_not_empty"> + å°‡ä¸å†ç‚ºäº¤è«‡ç•™è¨˜éŒ„。 若想æ¢å¾©ç•™å˜è¨˜éŒ„,請到「å好è¨å®š > èŠå¤©ã€ï¼Œé¸æ“‡ã€Œå„²å˜ï¼šåªç•™æ·å²è¨˜éŒ„ã€æˆ–「儲å˜ï¼šæ·å²è¨˜éŒ„兼交談內容ã€ã€‚ + </string> + <string name="logging_calls_enabled_log_empty"> + ç›®å‰æ²’有交談記錄。 åœ¨ä½ è¯çµ¡æŸäººæˆ–æŸäººè¯çµ¡ä½ 之後,這裡將留å˜è¨˜éŒ„。 + </string> + <string name="loading_chat_logs"> + 載入ä¸â€¦ + </string> <string name="experience_tools_experience"> 體驗 </string> @@ -5353,16 +5477,4 @@ http://secondlife.com/viewer-access-faq <string name="ExperiencePermissionShort12"> æ¬Šé™ </string> - <string name="logging_calls_disabled_log_empty"> - 交談未留記錄。 若想開始留記錄,請到「å好è¨å®š > èŠå¤©ã€ï¼Œé¸æ“‡ã€Œå„²å˜ï¼šåªç•™æ·å²è¨˜éŒ„ã€æˆ–「儲å˜ï¼šæ·å²è¨˜éŒ„兼交談內容ã€ã€‚ - </string> - <string name="logging_calls_disabled_log_not_empty"> - å°‡ä¸å†ç‚ºäº¤è«‡ç•™è¨˜éŒ„。 若想æ¢å¾©ç•™å˜è¨˜éŒ„,請到「å好è¨å®š > èŠå¤©ã€ï¼Œé¸æ“‡ã€Œå„²å˜ï¼šåªç•™æ·å²è¨˜éŒ„ã€æˆ–「儲å˜ï¼šæ·å²è¨˜éŒ„兼交談內容ã€ã€‚ - </string> - <string name="logging_calls_enabled_log_empty"> - ç›®å‰æ²’有交談記錄。 åœ¨ä½ è¯çµ¡æŸäººæˆ–æŸäººè¯çµ¡ä½ 之後,這裡將留å˜è¨˜éŒ„。 - </string> - <string name="loading_chat_logs"> - 載入ä¸â€¦ - </string> </strings>