summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@lindenlab.com>2009-11-18 17:52:03 -0800
committerBryan O'Sullivan <bos@lindenlab.com>2009-11-18 17:52:03 -0800
commit699eac4ee37b31da78af2323ed15a47e6b386930 (patch)
treea4e29836008554d04a71e582055bdda442209e98 /indra
parent003cac41bcedd06aaaee033019accb8921a3c17c (diff)
Switch some files to Unix line endings
Diffstat (limited to 'indra')
-rw-r--r--indra/cmake/run_build_test.py222
-rw-r--r--indra/llcommon/llallocator.h126
-rw-r--r--indra/llcommon/llcoros.h298
-rw-r--r--indra/llcommon/llfasttimer.h634
-rw-r--r--indra/llcommon/llmemory.h130
-rw-r--r--indra/llcommon/llmemtype.h496
-rw-r--r--indra/llcommon/llpreprocessor.h338
-rw-r--r--indra/llcommon/llstacktrace.cpp284
-rw-r--r--indra/llcommon/llstacktrace.h88
-rw-r--r--indra/llcommon/llstring.h2600
-rw-r--r--indra/llui/lltabcontainer.cpp2
-rw-r--r--indra/media_plugins/quicktime/media_plugin_quicktime.cpp14
-rw-r--r--indra/newview/app_settings/ignorable_dialogs.xml582
-rw-r--r--indra/newview/llimview.cpp5112
-rw-r--r--indra/newview/llinventorybridge.cpp10292
-rw-r--r--indra/newview/llinventoryfunctions.h272
-rw-r--r--indra/newview/llinventorypanel.cpp1780
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp2
-rw-r--r--indra/newview/llpanelmaininventory.cpp2044
-rw-r--r--indra/newview/llpanelmaininventory.h298
-rw-r--r--indra/newview/llpanelmediasettingssecurity.cpp690
-rw-r--r--indra/newview/llpanelobjectinventory.h204
-rw-r--r--indra/newview/llsidepanelinventory.cpp558
-rw-r--r--indra/newview/llsidepanelinventory.h182
-rw-r--r--indra/newview/llsidepanelinventorysubpanel.cpp310
-rw-r--r--indra/newview/llsidepanelinventorysubpanel.h164
-rw-r--r--indra/newview/llsidepaneliteminfo.cpp1766
-rw-r--r--indra/newview/llsidepaneliteminfo.h182
-rw-r--r--indra/newview/skins/default/xui/da/panel_edit_profile.xml90
-rw-r--r--indra/newview/skins/default/xui/de/floater_about.xml80
-rw-r--r--indra/newview/skins/default/xui/de/floater_about_land.xml950
-rw-r--r--indra/newview/skins/default/xui/de/floater_animation_preview.xml368
-rw-r--r--indra/newview/skins/default/xui/de/floater_avatar_picker.xml86
-rw-r--r--indra/newview/skins/default/xui/de/floater_beacons.xml42
-rw-r--r--indra/newview/skins/default/xui/de/floater_build_options.xml22
-rw-r--r--indra/newview/skins/default/xui/de/floater_bulk_perms.xml106
-rw-r--r--indra/newview/skins/default/xui/de/floater_buy_object.xml52
-rw-r--r--indra/newview/skins/default/xui/de/floater_camera.xml46
-rw-r--r--indra/newview/skins/default/xui/de/floater_color_picker.xml64
-rw-r--r--indra/newview/skins/default/xui/de/floater_god_tools.xml204
-rw-r--r--indra/newview/skins/default/xui/de/floater_hardware_settings.xml56
-rw-r--r--indra/newview/skins/default/xui/de/floater_image_preview.xml64
-rw-r--r--indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml134
-rw-r--r--indra/newview/skins/default/xui/de/floater_land_holdings.xml80
-rw-r--r--indra/newview/skins/default/xui/de/floater_live_lsleditor.xml30
-rw-r--r--indra/newview/skins/default/xui/de/floater_map.xml108
-rw-r--r--indra/newview/skins/default/xui/de/floater_media_browser.xml60
-rw-r--r--indra/newview/skins/default/xui/de/floater_mem_leaking.xml36
-rw-r--r--indra/newview/skins/default/xui/de/floater_moveview.xml70
-rw-r--r--indra/newview/skins/default/xui/de/floater_pay.xml38
-rw-r--r--indra/newview/skins/default/xui/de/floater_pay_object.xml58
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_animation.xml24
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_classified.xml12
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_event.xml12
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_notecard.xml44
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_sound.xml22
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_texture.xml34
-rw-r--r--indra/newview/skins/default/xui/de/floater_report_abuse.xml208
-rw-r--r--indra/newview/skins/default/xui/de/floater_script_debug_panel.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_script_preview.xml18
-rw-r--r--indra/newview/skins/default/xui/de/floater_script_queue.xml38
-rw-r--r--indra/newview/skins/default/xui/de/floater_sell_land.xml134
-rw-r--r--indra/newview/skins/default/xui/de/floater_settings_debug.xml26
-rw-r--r--indra/newview/skins/default/xui/de/floater_stats.xml142
-rw-r--r--indra/newview/skins/default/xui/de/floater_tools.xml960
-rw-r--r--indra/newview/skins/default/xui/de/inspect_avatar.xml32
-rw-r--r--indra/newview/skins/default/xui/de/menu_avatar_icon.xml14
-rw-r--r--indra/newview/skins/default/xui/de/menu_favorites.xml20
-rw-r--r--indra/newview/skins/default/xui/de/menu_group_plus.xml10
-rw-r--r--indra/newview/skins/default/xui/de/menu_inventory.xml152
-rw-r--r--indra/newview/skins/default/xui/de/menu_landmark.xml12
-rw-r--r--indra/newview/skins/default/xui/de/menu_mini_map.xml16
-rw-r--r--indra/newview/skins/default/xui/de/menu_navbar.xml20
-rw-r--r--indra/newview/skins/default/xui/de/menu_picks.xml16
-rw-r--r--indra/newview/skins/default/xui/de/menu_place.xml14
-rw-r--r--indra/newview/skins/default/xui/de/menu_slurl.xml12
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_agent.xml12
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_group.xml12
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_http.xml14
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_objectim.xml14
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_parcel.xml10
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_slurl.xml12
-rw-r--r--indra/newview/skins/default/xui/de/menu_url_teleport.xml10
-rw-r--r--indra/newview/skins/default/xui/de/notifications.xml5126
-rw-r--r--indra/newview/skins/default/xui/de/panel_edit_profile.xml76
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_invite.xml58
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_land_money.xml340
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_notices.xml294
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_roles.xml236
-rw-r--r--indra/newview/skins/default/xui/de/panel_im_control_panel.xml18
-rw-r--r--indra/newview/skins/default/xui/de/panel_login.xml38
-rw-r--r--indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_pick_info.xml32
-rw-r--r--indra/newview/skins/default/xui/de/panel_picks.xml18
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_chat.xml84
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml232
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_privacy.xml40
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_setup.xml92
-rw-r--r--indra/newview/skins/default/xui/de/panel_profile.xml82
-rw-r--r--indra/newview/skins/default/xui/de/panel_profile_view.xml30
-rw-r--r--indra/newview/skins/default/xui/de/panel_script_ed.xml86
-rw-r--r--indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml12
-rw-r--r--indra/newview/skins/default/xui/de/panel_status_bar.xml44
-rw-r--r--indra/newview/skins/default/xui/de/panel_world_map.xml114
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml6298
-rw-r--r--indra/newview/skins/default/xui/de/teleport_strings.xml156
-rw-r--r--indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml210
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_notify.xml210
-rw-r--r--indra/newview/skins/default/xui/en/panel_main_inventory.xml934
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_inventory.xml254
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_item_info.xml1022
-rw-r--r--indra/newview/skins/default/xui/es/panel_edit_profile.xml90
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about.xml80
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml960
-rw-r--r--indra/newview/skins/default/xui/fr/floater_animation_preview.xml372
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar_picker.xml82
-rw-r--r--indra/newview/skins/default/xui/fr/floater_beacons.xml42
-rw-r--r--indra/newview/skins/default/xui/fr/floater_build_options.xml22
-rw-r--r--indra/newview/skins/default/xui/fr/floater_bulk_perms.xml106
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_object.xml52
-rw-r--r--indra/newview/skins/default/xui/fr/floater_camera.xml46
-rw-r--r--indra/newview/skins/default/xui/fr/floater_color_picker.xml64
-rw-r--r--indra/newview/skins/default/xui/fr/floater_god_tools.xml212
-rw-r--r--indra/newview/skins/default/xui/fr/floater_hardware_settings.xml56
-rw-r--r--indra/newview/skins/default/xui/fr/floater_image_preview.xml64
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml134
-rw-r--r--indra/newview/skins/default/xui/fr/floater_land_holdings.xml80
-rw-r--r--indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml30
-rw-r--r--indra/newview/skins/default/xui/fr/floater_map.xml108
-rw-r--r--indra/newview/skins/default/xui/fr/floater_media_browser.xml62
-rw-r--r--indra/newview/skins/default/xui/fr/floater_mem_leaking.xml36
-rw-r--r--indra/newview/skins/default/xui/fr/floater_moveview.xml70
-rw-r--r--indra/newview/skins/default/xui/fr/floater_pay.xml40
-rw-r--r--indra/newview/skins/default/xui/fr/floater_pay_object.xml60
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_animation.xml22
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_classified.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_event.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_notecard.xml44
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_sound.xml22
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_texture.xml34
-rw-r--r--indra/newview/skins/default/xui/fr/floater_report_abuse.xml208
-rw-r--r--indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_script_preview.xml18
-rw-r--r--indra/newview/skins/default/xui/fr/floater_script_queue.xml38
-rw-r--r--indra/newview/skins/default/xui/fr/floater_sell_land.xml132
-rw-r--r--indra/newview/skins/default/xui/fr/floater_settings_debug.xml26
-rw-r--r--indra/newview/skins/default/xui/fr/floater_stats.xml142
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml958
-rw-r--r--indra/newview/skins/default/xui/fr/inspect_avatar.xml32
-rw-r--r--indra/newview/skins/default/xui/fr/menu_avatar_icon.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/menu_favorites.xml20
-rw-r--r--indra/newview/skins/default/xui/fr/menu_group_plus.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inventory.xml152
-rw-r--r--indra/newview/skins/default/xui/fr/menu_landmark.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/menu_mini_map.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/menu_navbar.xml20
-rw-r--r--indra/newview/skins/default/xui/fr/menu_picks.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/menu_place.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/menu_slurl.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_agent.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_group.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_http.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_objectim.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_parcel.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_slurl.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/menu_url_teleport.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml5094
-rw-r--r--indra/newview/skins/default/xui/fr/panel_edit_profile.xml76
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_invite.xml58
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_land_money.xml172
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_list_item.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_notices.xml134
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_roles.xml226
-rw-r--r--indra/newview/skins/default/xui/fr/panel_im_control_panel.xml18
-rw-r--r--indra/newview/skins/default/xui/fr/panel_login.xml38
-rw-r--r--indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/panel_picks.xml18
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_chat.xml84
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml232
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml42
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_setup.xml92
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_sound.xml80
-rw-r--r--indra/newview/skins/default/xui/fr/panel_profile.xml82
-rw-r--r--indra/newview/skins/default/xui/fr/panel_profile_view.xml30
-rw-r--r--indra/newview/skins/default/xui/fr/panel_script_ed.xml86
-rw-r--r--indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/panel_status_bar.xml44
-rw-r--r--indra/newview/skins/default/xui/fr/panel_world_map.xml114
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml6298
-rw-r--r--indra/newview/skins/default/xui/fr/teleport_strings.xml154
-rw-r--r--indra/newview/skins/default/xui/it/panel_edit_profile.xml90
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about.xml80
-rw-r--r--indra/newview/skins/default/xui/ja/floater_about_land.xml950
-rw-r--r--indra/newview/skins/default/xui/ja/floater_animation_preview.xml366
-rw-r--r--indra/newview/skins/default/xui/ja/floater_avatar_picker.xml80
-rw-r--r--indra/newview/skins/default/xui/ja/floater_beacons.xml42
-rw-r--r--indra/newview/skins/default/xui/ja/floater_build_options.xml22
-rw-r--r--indra/newview/skins/default/xui/ja/floater_bulk_perms.xml106
-rw-r--r--indra/newview/skins/default/xui/ja/floater_buy_object.xml52
-rw-r--r--indra/newview/skins/default/xui/ja/floater_camera.xml46
-rw-r--r--indra/newview/skins/default/xui/ja/floater_color_picker.xml62
-rw-r--r--indra/newview/skins/default/xui/ja/floater_god_tools.xml194
-rw-r--r--indra/newview/skins/default/xui/ja/floater_hardware_settings.xml56
-rw-r--r--indra/newview/skins/default/xui/ja/floater_image_preview.xml64
-rw-r--r--indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml134
-rw-r--r--indra/newview/skins/default/xui/ja/floater_land_holdings.xml80
-rw-r--r--indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml30
-rw-r--r--indra/newview/skins/default/xui/ja/floater_map.xml108
-rw-r--r--indra/newview/skins/default/xui/ja/floater_media_browser.xml60
-rw-r--r--indra/newview/skins/default/xui/ja/floater_mem_leaking.xml36
-rw-r--r--indra/newview/skins/default/xui/ja/floater_moveview.xml70
-rw-r--r--indra/newview/skins/default/xui/ja/floater_pay.xml38
-rw-r--r--indra/newview/skins/default/xui/ja/floater_pay_object.xml58
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_animation.xml22
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_classified.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_event.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_notecard.xml44
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_sound.xml22
-rw-r--r--indra/newview/skins/default/xui/ja/floater_preview_texture.xml34
-rw-r--r--indra/newview/skins/default/xui/ja/floater_report_abuse.xml206
-rw-r--r--indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_script_preview.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/floater_script_queue.xml38
-rw-r--r--indra/newview/skins/default/xui/ja/floater_sell_land.xml140
-rw-r--r--indra/newview/skins/default/xui/ja/floater_settings_debug.xml26
-rw-r--r--indra/newview/skins/default/xui/ja/floater_stats.xml142
-rw-r--r--indra/newview/skins/default/xui/ja/floater_tools.xml954
-rw-r--r--indra/newview/skins/default/xui/ja/inspect_avatar.xml32
-rw-r--r--indra/newview/skins/default/xui/ja/menu_avatar_icon.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/menu_favorites.xml20
-rw-r--r--indra/newview/skins/default/xui/ja/menu_group_plus.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/menu_inventory.xml152
-rw-r--r--indra/newview/skins/default/xui/ja/menu_landmark.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/menu_mini_map.xml16
-rw-r--r--indra/newview/skins/default/xui/ja/menu_navbar.xml20
-rw-r--r--indra/newview/skins/default/xui/ja/menu_picks.xml16
-rw-r--r--indra/newview/skins/default/xui/ja/menu_place.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/menu_slurl.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_agent.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_group.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_http.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_objectim.xml14
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_parcel.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_slurl.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/menu_url_teleport.xml10
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml5370
-rw-r--r--indra/newview/skins/default/xui/ja/panel_edit_profile.xml76
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_invite.xml60
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_land_money.xml170
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_list_item.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_notices.xml132
-rw-r--r--indra/newview/skins/default/xui/ja/panel_group_roles.xml236
-rw-r--r--indra/newview/skins/default/xui/ja/panel_im_control_panel.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_login.xml38
-rw-r--r--indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/panel_pick_info.xml32
-rw-r--r--indra/newview/skins/default/xui/ja/panel_picks.xml18
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_chat.xml84
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml232
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml40
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_setup.xml92
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_sound.xml144
-rw-r--r--indra/newview/skins/default/xui/ja/panel_profile.xml82
-rw-r--r--indra/newview/skins/default/xui/ja/panel_profile_view.xml30
-rw-r--r--indra/newview/skins/default/xui/ja/panel_script_ed.xml86
-rw-r--r--indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml12
-rw-r--r--indra/newview/skins/default/xui/ja/panel_status_bar.xml44
-rw-r--r--indra/newview/skins/default/xui/ja/panel_world_map.xml114
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml6298
-rw-r--r--indra/newview/skins/default/xui/ja/teleport_strings.xml158
-rw-r--r--indra/newview/skins/default/xui/nl/panel_edit_profile.xml90
-rw-r--r--indra/newview/skins/default/xui/pl/panel_edit_profile.xml90
-rw-r--r--indra/newview/skins/default/xui/pt/panel_edit_profile.xml90
279 files changed, 43828 insertions, 43828 deletions
diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py
index 17bce6f434..fff78ecbe3 100644
--- a/indra/cmake/run_build_test.py
+++ b/indra/cmake/run_build_test.py
@@ -1,111 +1,111 @@
-#!/usr/bin/python
-"""\
-@file run_build_test.py
-@author Nat Goodspeed
-@date 2009-09-03
-@brief Helper script to allow CMake to run some command after setting
- environment variables.
-
-CMake has commands to run an external program. But remember that each CMake
-command must be backed by multiple build-system implementations. Unfortunately
-it seems CMake can't promise that every target build system can set specified
-environment variables before running the external program of interest.
-
-This helper script is a workaround. It simply sets the requested environment
-variables and then executes the program specified on the rest of its command
-line.
-
-Example:
-
-python run_build_test.py -DFOO=bar myprog somearg otherarg
-
-sets environment variable FOO=bar, then runs:
-myprog somearg otherarg
-
-$LicenseInfo:firstyear=2009&license=internal$
-Copyright (c) 2009, Linden Research, Inc.
-$/LicenseInfo$
-"""
-
-import os
-import sys
-import subprocess
-
-def main(command, libpath=[], vars={}):
- """Pass:
- command is a sequence (e.g. a list) of strings. The first item in the list
- must be the command name, the rest are its arguments.
-
- libpath is a sequence of directory pathnames. These will be appended to
- the platform-specific dynamic library search path environment variable.
-
- vars is a dict of arbitrary (var, value) pairs to be added to the
- environment before running 'command'.
-
- This function runs the specified command, waits for it to terminate and
- returns its return code. This will be negative if the command terminated
- with a signal, else it will be the process's specified exit code.
- """
- # Handle platform-dependent libpath first.
- if sys.platform == "win32":
- lpvars = ["PATH"]
- elif sys.platform == "darwin":
- lpvars = ["LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH"]
- elif sys.platform.startswith("linux"):
- lpvars = ["LD_LIBRARY_PATH"]
- else:
- # No idea what the right pathname might be! But only crump if this
- # feature is requested.
- if libpath:
- raise NotImplemented("run_build_test: unknown platform %s" % sys.platform)
- lpvars = []
- for var in lpvars:
- # Split the existing path. Bear in mind that the variable in question
- # might not exist; instead of KeyError, just use an empty string.
- dirs = os.environ.get(var, "").split(os.pathsep)
- # Append the sequence in libpath
-## print "%s += %r" % (var, libpath)
- dirs.extend(libpath)
- # Now rebuild the path string. This way we use a minimum of separators
- # -- and we avoid adding a pointless separator when libpath is empty.
- os.environ[var] = os.pathsep.join(dirs)
- # Now handle arbitrary environment variables. The tricky part is ensuring
- # that all the keys and values we try to pass are actually strings.
-## if vars:
-## print "Setting:"
-## for key, value in vars.iteritems():
-## print "%s=%s" % (key, value)
- os.environ.update(dict([(str(key), str(value)) for key, value in vars.iteritems()]))
- # Run the child process.
-## print "Running: %s" % " ".join(command)
- return subprocess.call(command)
-
-if __name__ == "__main__":
- from optparse import OptionParser
- parser = OptionParser(usage="usage: %prog [options] command args...")
- # We want optparse support for the options we ourselves handle -- but we
- # DO NOT want it looking at options for the executable we intend to run,
- # rejecting them as invalid because we don't define them. So configure the
- # parser to stop looking for options as soon as it sees the first
- # positional argument (traditional Unix syntax).
- parser.disable_interspersed_args()
- parser.add_option("-D", "--define", dest="vars", default=[], action="append",
- metavar="VAR=value",
- help="Add VAR=value to the env variables defined")
- parser.add_option("-l", "--libpath", dest="libpath", default=[], action="append",
- metavar="DIR",
- help="Add DIR to the platform-dependent DLL search path")
- opts, args = parser.parse_args()
- # What we have in opts.vars is a list of strings of the form "VAR=value"
- # or possibly just "VAR". What we want is a dict. We can build that dict by
- # constructing a list of ["VAR", "value"] pairs -- so split each
- # "VAR=value" string on the '=' sign (but only once, in case we have
- # "VAR=some=user=string"). To handle the case of just "VAR", append "" to
- # the list returned by split(), then slice off anything after the pair we
- # want.
- rc = main(command=args, libpath=opts.libpath,
- vars=dict([(pair.split('=', 1) + [""])[:2] for pair in opts.vars]))
- if rc not in (None, 0):
- print >>sys.stderr, "Failure running: %s" % " ".join(args)
- print >>sys.stderr, "Error: %s" % rc
- sys.exit((rc < 0) and 255 or rc)
+#!/usr/bin/python
+"""\
+@file run_build_test.py
+@author Nat Goodspeed
+@date 2009-09-03
+@brief Helper script to allow CMake to run some command after setting
+ environment variables.
+
+CMake has commands to run an external program. But remember that each CMake
+command must be backed by multiple build-system implementations. Unfortunately
+it seems CMake can't promise that every target build system can set specified
+environment variables before running the external program of interest.
+
+This helper script is a workaround. It simply sets the requested environment
+variables and then executes the program specified on the rest of its command
+line.
+
+Example:
+
+python run_build_test.py -DFOO=bar myprog somearg otherarg
+
+sets environment variable FOO=bar, then runs:
+myprog somearg otherarg
+
+$LicenseInfo:firstyear=2009&license=internal$
+Copyright (c) 2009, Linden Research, Inc.
+$/LicenseInfo$
+"""
+
+import os
+import sys
+import subprocess
+
+def main(command, libpath=[], vars={}):
+ """Pass:
+ command is a sequence (e.g. a list) of strings. The first item in the list
+ must be the command name, the rest are its arguments.
+
+ libpath is a sequence of directory pathnames. These will be appended to
+ the platform-specific dynamic library search path environment variable.
+
+ vars is a dict of arbitrary (var, value) pairs to be added to the
+ environment before running 'command'.
+
+ This function runs the specified command, waits for it to terminate and
+ returns its return code. This will be negative if the command terminated
+ with a signal, else it will be the process's specified exit code.
+ """
+ # Handle platform-dependent libpath first.
+ if sys.platform == "win32":
+ lpvars = ["PATH"]
+ elif sys.platform == "darwin":
+ lpvars = ["LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH"]
+ elif sys.platform.startswith("linux"):
+ lpvars = ["LD_LIBRARY_PATH"]
+ else:
+ # No idea what the right pathname might be! But only crump if this
+ # feature is requested.
+ if libpath:
+ raise NotImplemented("run_build_test: unknown platform %s" % sys.platform)
+ lpvars = []
+ for var in lpvars:
+ # Split the existing path. Bear in mind that the variable in question
+ # might not exist; instead of KeyError, just use an empty string.
+ dirs = os.environ.get(var, "").split(os.pathsep)
+ # Append the sequence in libpath
+## print "%s += %r" % (var, libpath)
+ dirs.extend(libpath)
+ # Now rebuild the path string. This way we use a minimum of separators
+ # -- and we avoid adding a pointless separator when libpath is empty.
+ os.environ[var] = os.pathsep.join(dirs)
+ # Now handle arbitrary environment variables. The tricky part is ensuring
+ # that all the keys and values we try to pass are actually strings.
+## if vars:
+## print "Setting:"
+## for key, value in vars.iteritems():
+## print "%s=%s" % (key, value)
+ os.environ.update(dict([(str(key), str(value)) for key, value in vars.iteritems()]))
+ # Run the child process.
+## print "Running: %s" % " ".join(command)
+ return subprocess.call(command)
+
+if __name__ == "__main__":
+ from optparse import OptionParser
+ parser = OptionParser(usage="usage: %prog [options] command args...")
+ # We want optparse support for the options we ourselves handle -- but we
+ # DO NOT want it looking at options for the executable we intend to run,
+ # rejecting them as invalid because we don't define them. So configure the
+ # parser to stop looking for options as soon as it sees the first
+ # positional argument (traditional Unix syntax).
+ parser.disable_interspersed_args()
+ parser.add_option("-D", "--define", dest="vars", default=[], action="append",
+ metavar="VAR=value",
+ help="Add VAR=value to the env variables defined")
+ parser.add_option("-l", "--libpath", dest="libpath", default=[], action="append",
+ metavar="DIR",
+ help="Add DIR to the platform-dependent DLL search path")
+ opts, args = parser.parse_args()
+ # What we have in opts.vars is a list of strings of the form "VAR=value"
+ # or possibly just "VAR". What we want is a dict. We can build that dict by
+ # constructing a list of ["VAR", "value"] pairs -- so split each
+ # "VAR=value" string on the '=' sign (but only once, in case we have
+ # "VAR=some=user=string"). To handle the case of just "VAR", append "" to
+ # the list returned by split(), then slice off anything after the pair we
+ # want.
+ rc = main(command=args, libpath=opts.libpath,
+ vars=dict([(pair.split('=', 1) + [""])[:2] for pair in opts.vars]))
+ if rc not in (None, 0):
+ print >>sys.stderr, "Failure running: %s" % " ".join(args)
+ print >>sys.stderr, "Error: %s" % rc
+ sys.exit((rc < 0) and 255 or rc)
diff --git a/indra/llcommon/llallocator.h b/indra/llcommon/llallocator.h
index 0d6f18c5d4..50129b4526 100644
--- a/indra/llcommon/llallocator.h
+++ b/indra/llcommon/llallocator.h
@@ -1,63 +1,63 @@
-/**
- * @file llallocator.h
- * @brief Declaration of the LLAllocator class.
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2009-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLALLOCATOR_H
-#define LL_LLALLOCATOR_H
-
-#include <string>
-
-#include "llmemtype.h"
-#include "llallocator_heap_profile.h"
-
-class LL_COMMON_API LLAllocator {
- friend class LLMemoryView;
- friend class LLMemType;
-
-private:
- static void pushMemType(S32 type);
- static S32 popMemType();
-
-public:
- void setProfilingEnabled(bool should_enable);
-
- static bool isProfiling();
-
- LLAllocatorHeapProfile const & getProfile();
-
-private:
- std::string getRawProfile();
-
-private:
- LLAllocatorHeapProfile mProf;
-};
-
-#endif // LL_LLALLOCATOR_H
+/**
+ * @file llallocator.h
+ * @brief Declaration of the LLAllocator class.
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLALLOCATOR_H
+#define LL_LLALLOCATOR_H
+
+#include <string>
+
+#include "llmemtype.h"
+#include "llallocator_heap_profile.h"
+
+class LL_COMMON_API LLAllocator {
+ friend class LLMemoryView;
+ friend class LLMemType;
+
+private:
+ static void pushMemType(S32 type);
+ static S32 popMemType();
+
+public:
+ void setProfilingEnabled(bool should_enable);
+
+ static bool isProfiling();
+
+ LLAllocatorHeapProfile const & getProfile();
+
+private:
+ std::string getRawProfile();
+
+private:
+ LLAllocatorHeapProfile mProf;
+};
+
+#endif // LL_LLALLOCATOR_H
diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h
index 6c5fa5af6d..141b0df43c 100644
--- a/indra/llcommon/llcoros.h
+++ b/indra/llcommon/llcoros.h
@@ -1,149 +1,149 @@
-/**
- * @file llcoros.h
- * @author Nat Goodspeed
- * @date 2009-06-02
- * @brief Manage running boost::coroutine instances
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- * Copyright (c) 2009, Linden Research, Inc.
- * $/LicenseInfo$
- */
-
-#if ! defined(LL_LLCOROS_H)
-#define LL_LLCOROS_H
-
-#include <boost/coroutine/coroutine.hpp>
-#include "llsingleton.h"
-#include <boost/ptr_container/ptr_map.hpp>
-#include <string>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/iteration/local.hpp>
-#include <stdexcept>
-
-/**
- * Registry of named Boost.Coroutine instances
- *
- * The Boost.Coroutine library supports the general case of a coroutine
- * accepting arbitrary parameters and yielding multiple (sets of) results. For
- * such use cases, it's natural for the invoking code to retain the coroutine
- * instance: the consumer repeatedly calls into the coroutine, perhaps passing
- * new parameter values, prompting it to yield its next result.
- *
- * Our typical coroutine usage is different, though. For us, coroutines
- * provide an alternative to the @c Responder pattern. Our typical coroutine
- * has @c void return, invoked in fire-and-forget mode: the handler for some
- * user gesture launches the coroutine and promptly returns to the main loop.
- * The coroutine initiates some action that will take multiple frames (e.g. a
- * capability request), waits for its result, processes it and silently steals
- * away.
- *
- * This usage poses two (related) problems:
- *
- * # Who should own the coroutine instance? If it's simply local to the
- * handler code that launches it, return from the handler will destroy the
- * coroutine object, terminating the coroutine.
- * # Once the coroutine terminates, in whatever way, who's responsible for
- * cleaning up the coroutine object?
- *
- * LLCoros is a Singleton collection of currently-active coroutine instances.
- * Each has a name. You ask LLCoros to launch a new coroutine with a suggested
- * name prefix; from your prefix it generates a distinct name, registers the
- * new coroutine and returns the actual name.
- *
- * The name can be used to kill off the coroutine prematurely, if needed. It
- * can also provide diagnostic info: we can look up the name of the
- * currently-running coroutine.
- *
- * Finally, the next frame ("mainloop" event) after the coroutine terminates,
- * LLCoros will notice its demise and destroy it.
- */
-class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>
-{
-public:
- /// Canonical boost::coroutines::coroutine signature we use
- typedef boost::coroutines::coroutine<void()> coro;
- /// Canonical 'self' type
- typedef coro::self self;
-
- /**
- * Create and start running a new coroutine with specified name. The name
- * string you pass is a suggestion; it will be tweaked for uniqueness. The
- * actual name is returned to you.
- *
- * Usage looks like this, for (e.g.) two coroutine parameters:
- * @code
- * class MyClass
- * {
- * public:
- * ...
- * // Do NOT NOT NOT accept reference params other than 'self'!
- * // Pass by value only!
- * void myCoroutineMethod(LLCoros::self& self, std::string, LLSD);
- * ...
- * };
- * ...
- * std::string name = LLCoros::instance().launch(
- * "mycoro", boost::bind(&MyClass::myCoroutineMethod, this, _1,
- * "somestring", LLSD(17));
- * @endcode
- *
- * Your function/method must accept LLCoros::self& as its first parameter.
- * It can accept any other parameters you want -- but ONLY BY VALUE!
- * Other reference parameters are a BAD IDEA! You Have Been Warned. See
- * DEV-32777 comments for an explanation.
- *
- * Pass a callable that accepts the single LLCoros::self& parameter. It
- * may work to pass a free function whose only parameter is 'self'; for
- * all other cases use boost::bind(). Of course, for a non-static class
- * method, the first parameter must be the class instance. Use the
- * placeholder _1 for the 'self' parameter. Any other parameters should be
- * passed via the bind() expression.
- *
- * launch() tweaks the suggested name so it won't collide with any
- * existing coroutine instance, creates the coroutine instance, registers
- * it with the tweaked name and runs it until its first wait. At that
- * point it returns the tweaked name.
- */
- template <typename CALLABLE>
- std::string launch(const std::string& prefix, const CALLABLE& callable)
- {
- return launchImpl(prefix, new coro(callable));
- }
-
- /**
- * Abort a running coroutine by name. Normally, when a coroutine either
- * runs to completion or terminates with an exception, LLCoros quietly
- * cleans it up. This is for use only when you must explicitly interrupt
- * one prematurely. Returns @c true if the specified name was found and
- * still running at the time.
- */
- bool kill(const std::string& name);
-
- /**
- * From within a coroutine, pass its @c self object to look up the
- * (tweaked) name string by which this coroutine is registered. Returns
- * the empty string if not found (e.g. if the coroutine was launched by
- * hand rather than using LLCoros::launch()).
- */
- template <typename COROUTINE_SELF>
- std::string getName(const COROUTINE_SELF& self) const
- {
- return getNameByID(self.get_id());
- }
-
- /// getName() by self.get_id()
- std::string getNameByID(const void* self_id) const;
-
-private:
- friend class LLSingleton<LLCoros>;
- LLCoros();
- std::string launchImpl(const std::string& prefix, coro* newCoro);
- std::string generateDistinctName(const std::string& prefix) const;
- bool cleanup(const LLSD&);
-
- typedef boost::ptr_map<std::string, coro> CoroMap;
- CoroMap mCoros;
-};
-
-#endif /* ! defined(LL_LLCOROS_H) */
+/**
+ * @file llcoros.h
+ * @author Nat Goodspeed
+ * @date 2009-06-02
+ * @brief Manage running boost::coroutine instances
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * Copyright (c) 2009, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+#if ! defined(LL_LLCOROS_H)
+#define LL_LLCOROS_H
+
+#include <boost/coroutine/coroutine.hpp>
+#include "llsingleton.h"
+#include <boost/ptr_container/ptr_map.hpp>
+#include <string>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/iteration/local.hpp>
+#include <stdexcept>
+
+/**
+ * Registry of named Boost.Coroutine instances
+ *
+ * The Boost.Coroutine library supports the general case of a coroutine
+ * accepting arbitrary parameters and yielding multiple (sets of) results. For
+ * such use cases, it's natural for the invoking code to retain the coroutine
+ * instance: the consumer repeatedly calls into the coroutine, perhaps passing
+ * new parameter values, prompting it to yield its next result.
+ *
+ * Our typical coroutine usage is different, though. For us, coroutines
+ * provide an alternative to the @c Responder pattern. Our typical coroutine
+ * has @c void return, invoked in fire-and-forget mode: the handler for some
+ * user gesture launches the coroutine and promptly returns to the main loop.
+ * The coroutine initiates some action that will take multiple frames (e.g. a
+ * capability request), waits for its result, processes it and silently steals
+ * away.
+ *
+ * This usage poses two (related) problems:
+ *
+ * # Who should own the coroutine instance? If it's simply local to the
+ * handler code that launches it, return from the handler will destroy the
+ * coroutine object, terminating the coroutine.
+ * # Once the coroutine terminates, in whatever way, who's responsible for
+ * cleaning up the coroutine object?
+ *
+ * LLCoros is a Singleton collection of currently-active coroutine instances.
+ * Each has a name. You ask LLCoros to launch a new coroutine with a suggested
+ * name prefix; from your prefix it generates a distinct name, registers the
+ * new coroutine and returns the actual name.
+ *
+ * The name can be used to kill off the coroutine prematurely, if needed. It
+ * can also provide diagnostic info: we can look up the name of the
+ * currently-running coroutine.
+ *
+ * Finally, the next frame ("mainloop" event) after the coroutine terminates,
+ * LLCoros will notice its demise and destroy it.
+ */
+class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>
+{
+public:
+ /// Canonical boost::coroutines::coroutine signature we use
+ typedef boost::coroutines::coroutine<void()> coro;
+ /// Canonical 'self' type
+ typedef coro::self self;
+
+ /**
+ * Create and start running a new coroutine with specified name. The name
+ * string you pass is a suggestion; it will be tweaked for uniqueness. The
+ * actual name is returned to you.
+ *
+ * Usage looks like this, for (e.g.) two coroutine parameters:
+ * @code
+ * class MyClass
+ * {
+ * public:
+ * ...
+ * // Do NOT NOT NOT accept reference params other than 'self'!
+ * // Pass by value only!
+ * void myCoroutineMethod(LLCoros::self& self, std::string, LLSD);
+ * ...
+ * };
+ * ...
+ * std::string name = LLCoros::instance().launch(
+ * "mycoro", boost::bind(&MyClass::myCoroutineMethod, this, _1,
+ * "somestring", LLSD(17));
+ * @endcode
+ *
+ * Your function/method must accept LLCoros::self& as its first parameter.
+ * It can accept any other parameters you want -- but ONLY BY VALUE!
+ * Other reference parameters are a BAD IDEA! You Have Been Warned. See
+ * DEV-32777 comments for an explanation.
+ *
+ * Pass a callable that accepts the single LLCoros::self& parameter. It
+ * may work to pass a free function whose only parameter is 'self'; for
+ * all other cases use boost::bind(). Of course, for a non-static class
+ * method, the first parameter must be the class instance. Use the
+ * placeholder _1 for the 'self' parameter. Any other parameters should be
+ * passed via the bind() expression.
+ *
+ * launch() tweaks the suggested name so it won't collide with any
+ * existing coroutine instance, creates the coroutine instance, registers
+ * it with the tweaked name and runs it until its first wait. At that
+ * point it returns the tweaked name.
+ */
+ template <typename CALLABLE>
+ std::string launch(const std::string& prefix, const CALLABLE& callable)
+ {
+ return launchImpl(prefix, new coro(callable));
+ }
+
+ /**
+ * Abort a running coroutine by name. Normally, when a coroutine either
+ * runs to completion or terminates with an exception, LLCoros quietly
+ * cleans it up. This is for use only when you must explicitly interrupt
+ * one prematurely. Returns @c true if the specified name was found and
+ * still running at the time.
+ */
+ bool kill(const std::string& name);
+
+ /**
+ * From within a coroutine, pass its @c self object to look up the
+ * (tweaked) name string by which this coroutine is registered. Returns
+ * the empty string if not found (e.g. if the coroutine was launched by
+ * hand rather than using LLCoros::launch()).
+ */
+ template <typename COROUTINE_SELF>
+ std::string getName(const COROUTINE_SELF& self) const
+ {
+ return getNameByID(self.get_id());
+ }
+
+ /// getName() by self.get_id()
+ std::string getNameByID(const void* self_id) const;
+
+private:
+ friend class LLSingleton<LLCoros>;
+ LLCoros();
+ std::string launchImpl(const std::string& prefix, coro* newCoro);
+ std::string generateDistinctName(const std::string& prefix) const;
+ bool cleanup(const LLSD&);
+
+ typedef boost::ptr_map<std::string, coro> CoroMap;
+ CoroMap mCoros;
+};
+
+#endif /* ! defined(LL_LLCOROS_H) */
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 905d736d62..45b84ea3ea 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -1,317 +1,317 @@
-/**
- * @file llfasttimer.h
- * @brief Declaration of a fast timer.
- *
- * $LicenseInfo:firstyear=2004&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_FASTTIMER_H
-#define LL_FASTTIMER_H
-
-#include "llinstancetracker.h"
-
-#define FAST_TIMER_ON 1
-
-#if LL_WINDOWS
-
-// shift off lower 8 bits for lower resolution but longer term timing
-// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
-inline U32 get_cpu_clock_count_32()
-{
- U32 ret_val;
- __asm
- {
- _emit 0x0f
- _emit 0x31
- shr eax,8
- shl edx,24
- or eax, edx
- mov dword ptr [ret_val], eax
- }
- return ret_val;
-}
-
-// return full timer value, still shifted by 8 bits
-inline U64 get_cpu_clock_count_64()
-{
- U64 ret_val;
- __asm
- {
- _emit 0x0f
- _emit 0x31
- mov eax,eax
- mov edx,edx
- mov dword ptr [ret_val+4], edx
- mov dword ptr [ret_val], eax
- }
- return ret_val >> 8;
-}
-
-#endif // LL_WINDOWS
-
-#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
-inline U32 get_cpu_clock_count_32()
-{
- U64 x;
- __asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
- return (U32)x >> 8;
-}
-
-inline U32 get_cpu_clock_count_64()
-{
- U64 x;
- __asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
- return x >> 8;
-}
-#endif
-
-#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__))
-//
-// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock
-//
-// Just use gettimeofday implementation for now
-
-inline U32 get_cpu_clock_count_32()
-{
- return (U32)get_clock_count();
-}
-
-inline U32 get_cpu_clock_count_64()
-{
- return get_clock_count();
-}
-#endif
-
-class LLMutex;
-
-#include <queue>
-#include "llsd.h"
-
-
-class LL_COMMON_API LLFastTimer
-{
-public:
- // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances
- class LL_COMMON_API NamedTimer
- : public LLInstanceTracker<NamedTimer>
- {
- friend class DeclareTimer;
- public:
- ~NamedTimer();
-
- enum { HISTORY_NUM = 60 };
-
- const std::string& getName() const { return mName; }
- NamedTimer* getParent() const { return mParent; }
- void setParent(NamedTimer* parent);
- S32 getDepth();
- std::string getToolTip(S32 history_index = -1);
-
- typedef std::vector<NamedTimer*>::const_iterator child_const_iter;
- child_const_iter beginChildren();
- child_const_iter endChildren();
- std::vector<NamedTimer*>& getChildren();
-
- void setCollapsed(bool collapsed) { mCollapsed = collapsed; }
- bool getCollapsed() const { return mCollapsed; }
-
- U32 getCountAverage() const { return mCountAverage; }
- U32 getCallAverage() const { return mCallAverage; }
-
- U32 getHistoricalCount(S32 history_index = 0) const;
- U32 getHistoricalCalls(S32 history_index = 0) const;
-
- static NamedTimer& getRootNamedTimer();
-
- struct FrameState
- {
- FrameState(NamedTimer* timerp);
-
- U32 mSelfTimeCounter;
- U32 mCalls;
- FrameState* mParent; // info for caller timer
- FrameState* mLastCaller; // used to bootstrap tree construction
- NamedTimer* mTimer;
- U16 mActiveCount; // number of timers with this ID active on stack
- bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame
- };
-
- S32 getFrameStateIndex() const { return mFrameStateIndex; }
-
- FrameState& getFrameState() const;
-
-
- private:
- friend class LLFastTimer;
- friend class NamedTimerFactory;
-
- //
- // methods
- //
- NamedTimer(const std::string& name);
- // recursive call to gather total time from children
- static void accumulateTimings();
-
- // updates cumulative times and hierarchy,
- // can be called multiple times in a frame, at any point
- static void processTimes();
-
- static void buildHierarchy();
- static void resetFrame();
- static void reset();
-
-
- //
- // members
- //
- S32 mFrameStateIndex;
-
- std::string mName;
-
- U32 mTotalTimeCounter;
-
- U32 mCountAverage;
- U32 mCallAverage;
-
- U32* mCountHistory;
- U32* mCallHistory;
-
- // tree structure
- NamedTimer* mParent; // NamedTimer of caller(parent)
- std::vector<NamedTimer*> mChildren;
- bool mCollapsed; // don't show children
- bool mNeedsSorting; // sort children whenever child added
-
- };
-
- // used to statically declare a new named timer
- class LL_COMMON_API DeclareTimer
- : public LLInstanceTracker<DeclareTimer>
- {
- public:
- DeclareTimer(const std::string& name, bool open);
- DeclareTimer(const std::string& name);
-
- static void updateCachedPointers();
-
- // convertable to NamedTimer::FrameState for convenient usage of LLFastTimer(declared_timer)
- operator NamedTimer::FrameState&() { return *mFrameState; }
- private:
- NamedTimer& mTimer;
- NamedTimer::FrameState* mFrameState;
- };
-
-
-public:
- static LLMutex* sLogLock;
- static std::queue<LLSD> sLogQueue;
- static BOOL sLog;
- static BOOL sMetricLog;
-
- typedef std::vector<NamedTimer::FrameState> info_list_t;
- static info_list_t& getFrameStateList();
-
- enum RootTimerMarker { ROOT };
- LLFastTimer(RootTimerMarker);
-
- LLFastTimer(NamedTimer::FrameState& timer)
- : mFrameState(&timer)
- {
-#if FAST_TIMER_ON
- NamedTimer::FrameState* frame_state = &timer;
- U32 cur_time = get_cpu_clock_count_32();
- mStartSelfTime = cur_time;
- mStartTotalTime = cur_time;
-
- frame_state->mActiveCount++;
- frame_state->mCalls++;
- // keep current parent as long as it is active when we are
- frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0);
-
- mLastTimer = sCurTimer;
- sCurTimer = this;
-#endif
- }
-
- ~LLFastTimer()
- {
-#if FAST_TIMER_ON
- NamedTimer::FrameState* frame_state = mFrameState;
- U32 cur_time = get_cpu_clock_count_32();
- frame_state->mSelfTimeCounter += cur_time - mStartSelfTime;
-
- frame_state->mActiveCount--;
- LLFastTimer* last_timer = mLastTimer;
- sCurTimer = last_timer;
-
- // store last caller to bootstrap tree creation
- frame_state->mLastCaller = last_timer->mFrameState;
-
- // we are only tracking self time, so subtract our total time delta from parents
- U32 total_time = cur_time - mStartTotalTime;
- last_timer->mStartSelfTime += total_time;
-#endif
- }
-
-
- // call this once a frame to reset timers
- static void nextFrame();
-
- // dumps current cumulative frame stats to log
- // call nextFrame() to reset timers
- static void dumpCurTimes();
-
- // call this to reset timer hierarchy, averages, etc.
- static void reset();
-
- static U64 countsPerSecond();
- static S32 getLastFrameIndex() { return sLastFrameIndex; }
- static S32 getCurFrameIndex() { return sCurFrameIndex; }
-
- static void writeLog(std::ostream& os);
- static const NamedTimer* getTimerByName(const std::string& name);
-
-public:
- static bool sPauseHistory;
- static bool sResetHistory;
-
-private:
- typedef std::vector<LLFastTimer*> timer_stack_t;
- static LLFastTimer* sCurTimer;
- static S32 sCurFrameIndex;
- static S32 sLastFrameIndex;
- static U64 sLastFrameTime;
- static info_list_t* sTimerInfos;
-
- U32 mStartSelfTime; // start time + time of all child timers
- U32 mStartTotalTime; // start time + time of all child timers
- NamedTimer::FrameState* mFrameState;
- LLFastTimer* mLastTimer;
-};
-
-#endif // LL_LLFASTTIMER_H
+/**
+ * @file llfasttimer.h
+ * @brief Declaration of a fast timer.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FASTTIMER_H
+#define LL_FASTTIMER_H
+
+#include "llinstancetracker.h"
+
+#define FAST_TIMER_ON 1
+
+#if LL_WINDOWS
+
+// shift off lower 8 bits for lower resolution but longer term timing
+// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing
+inline U32 get_cpu_clock_count_32()
+{
+ U32 ret_val;
+ __asm
+ {
+ _emit 0x0f
+ _emit 0x31
+ shr eax,8
+ shl edx,24
+ or eax, edx
+ mov dword ptr [ret_val], eax
+ }
+ return ret_val;
+}
+
+// return full timer value, still shifted by 8 bits
+inline U64 get_cpu_clock_count_64()
+{
+ U64 ret_val;
+ __asm
+ {
+ _emit 0x0f
+ _emit 0x31
+ mov eax,eax
+ mov edx,edx
+ mov dword ptr [ret_val+4], edx
+ mov dword ptr [ret_val], eax
+ }
+ return ret_val >> 8;
+}
+
+#endif // LL_WINDOWS
+
+#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
+inline U32 get_cpu_clock_count_32()
+{
+ U64 x;
+ __asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
+ return (U32)x >> 8;
+}
+
+inline U32 get_cpu_clock_count_64()
+{
+ U64 x;
+ __asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
+ return x >> 8;
+}
+#endif
+
+#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__))
+//
+// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock
+//
+// Just use gettimeofday implementation for now
+
+inline U32 get_cpu_clock_count_32()
+{
+ return (U32)get_clock_count();
+}
+
+inline U32 get_cpu_clock_count_64()
+{
+ return get_clock_count();
+}
+#endif
+
+class LLMutex;
+
+#include <queue>
+#include "llsd.h"
+
+
+class LL_COMMON_API LLFastTimer
+{
+public:
+ // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances
+ class LL_COMMON_API NamedTimer
+ : public LLInstanceTracker<NamedTimer>
+ {
+ friend class DeclareTimer;
+ public:
+ ~NamedTimer();
+
+ enum { HISTORY_NUM = 60 };
+
+ const std::string& getName() const { return mName; }
+ NamedTimer* getParent() const { return mParent; }
+ void setParent(NamedTimer* parent);
+ S32 getDepth();
+ std::string getToolTip(S32 history_index = -1);
+
+ typedef std::vector<NamedTimer*>::const_iterator child_const_iter;
+ child_const_iter beginChildren();
+ child_const_iter endChildren();
+ std::vector<NamedTimer*>& getChildren();
+
+ void setCollapsed(bool collapsed) { mCollapsed = collapsed; }
+ bool getCollapsed() const { return mCollapsed; }
+
+ U32 getCountAverage() const { return mCountAverage; }
+ U32 getCallAverage() const { return mCallAverage; }
+
+ U32 getHistoricalCount(S32 history_index = 0) const;
+ U32 getHistoricalCalls(S32 history_index = 0) const;
+
+ static NamedTimer& getRootNamedTimer();
+
+ struct FrameState
+ {
+ FrameState(NamedTimer* timerp);
+
+ U32 mSelfTimeCounter;
+ U32 mCalls;
+ FrameState* mParent; // info for caller timer
+ FrameState* mLastCaller; // used to bootstrap tree construction
+ NamedTimer* mTimer;
+ U16 mActiveCount; // number of timers with this ID active on stack
+ bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame
+ };
+
+ S32 getFrameStateIndex() const { return mFrameStateIndex; }
+
+ FrameState& getFrameState() const;
+
+
+ private:
+ friend class LLFastTimer;
+ friend class NamedTimerFactory;
+
+ //
+ // methods
+ //
+ NamedTimer(const std::string& name);
+ // recursive call to gather total time from children
+ static void accumulateTimings();
+
+ // updates cumulative times and hierarchy,
+ // can be called multiple times in a frame, at any point
+ static void processTimes();
+
+ static void buildHierarchy();
+ static void resetFrame();
+ static void reset();
+
+
+ //
+ // members
+ //
+ S32 mFrameStateIndex;
+
+ std::string mName;
+
+ U32 mTotalTimeCounter;
+
+ U32 mCountAverage;
+ U32 mCallAverage;
+
+ U32* mCountHistory;
+ U32* mCallHistory;
+
+ // tree structure
+ NamedTimer* mParent; // NamedTimer of caller(parent)
+ std::vector<NamedTimer*> mChildren;
+ bool mCollapsed; // don't show children
+ bool mNeedsSorting; // sort children whenever child added
+
+ };
+
+ // used to statically declare a new named timer
+ class LL_COMMON_API DeclareTimer
+ : public LLInstanceTracker<DeclareTimer>
+ {
+ public:
+ DeclareTimer(const std::string& name, bool open);
+ DeclareTimer(const std::string& name);
+
+ static void updateCachedPointers();
+
+ // convertable to NamedTimer::FrameState for convenient usage of LLFastTimer(declared_timer)
+ operator NamedTimer::FrameState&() { return *mFrameState; }
+ private:
+ NamedTimer& mTimer;
+ NamedTimer::FrameState* mFrameState;
+ };
+
+
+public:
+ static LLMutex* sLogLock;
+ static std::queue<LLSD> sLogQueue;
+ static BOOL sLog;
+ static BOOL sMetricLog;
+
+ typedef std::vector<NamedTimer::FrameState> info_list_t;
+ static info_list_t& getFrameStateList();
+
+ enum RootTimerMarker { ROOT };
+ LLFastTimer(RootTimerMarker);
+
+ LLFastTimer(NamedTimer::FrameState& timer)
+ : mFrameState(&timer)
+ {
+#if FAST_TIMER_ON
+ NamedTimer::FrameState* frame_state = &timer;
+ U32 cur_time = get_cpu_clock_count_32();
+ mStartSelfTime = cur_time;
+ mStartTotalTime = cur_time;
+
+ frame_state->mActiveCount++;
+ frame_state->mCalls++;
+ // keep current parent as long as it is active when we are
+ frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0);
+
+ mLastTimer = sCurTimer;
+ sCurTimer = this;
+#endif
+ }
+
+ ~LLFastTimer()
+ {
+#if FAST_TIMER_ON
+ NamedTimer::FrameState* frame_state = mFrameState;
+ U32 cur_time = get_cpu_clock_count_32();
+ frame_state->mSelfTimeCounter += cur_time - mStartSelfTime;
+
+ frame_state->mActiveCount--;
+ LLFastTimer* last_timer = mLastTimer;
+ sCurTimer = last_timer;
+
+ // store last caller to bootstrap tree creation
+ frame_state->mLastCaller = last_timer->mFrameState;
+
+ // we are only tracking self time, so subtract our total time delta from parents
+ U32 total_time = cur_time - mStartTotalTime;
+ last_timer->mStartSelfTime += total_time;
+#endif
+ }
+
+
+ // call this once a frame to reset timers
+ static void nextFrame();
+
+ // dumps current cumulative frame stats to log
+ // call nextFrame() to reset timers
+ static void dumpCurTimes();
+
+ // call this to reset timer hierarchy, averages, etc.
+ static void reset();
+
+ static U64 countsPerSecond();
+ static S32 getLastFrameIndex() { return sLastFrameIndex; }
+ static S32 getCurFrameIndex() { return sCurFrameIndex; }
+
+ static void writeLog(std::ostream& os);
+ static const NamedTimer* getTimerByName(const std::string& name);
+
+public:
+ static bool sPauseHistory;
+ static bool sResetHistory;
+
+private:
+ typedef std::vector<LLFastTimer*> timer_stack_t;
+ static LLFastTimer* sCurTimer;
+ static S32 sCurFrameIndex;
+ static S32 sLastFrameIndex;
+ static U64 sLastFrameTime;
+ static info_list_t* sTimerInfos;
+
+ U32 mStartSelfTime; // start time + time of all child timers
+ U32 mStartTotalTime; // start time + time of all child timers
+ NamedTimer::FrameState* mFrameState;
+ LLFastTimer* mLastTimer;
+};
+
+#endif // LL_LLFASTTIMER_H
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index 09f19532b7..1c6f64dd8b 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -1,65 +1,65 @@
-/**
- * @file llmemory.h
- * @brief Memory allocation/deallocation header-stuff goes here.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-#ifndef LLMEMORY_H
-#define LLMEMORY_H
-
-
-
-extern S32 gTotalDAlloc;
-extern S32 gTotalDAUse;
-extern S32 gDACount;
-
-extern void* ll_allocate (size_t size);
-extern void ll_release (void *p);
-
-class LL_COMMON_API LLMemory
-{
-public:
- static void initClass();
- static void cleanupClass();
- static void freeReserve();
- // Return the resident set size of the current process, in bytes.
- // Return value is zero if not known.
- static U64 getCurrentRSS();
-private:
- static char* reserveMem;
-};
-
-// LLRefCount moved to llrefcount.h
-
-// LLPointer moved to llpointer.h
-
-// LLSafeHandle moved to llsafehandle.h
-
-// LLSingleton moved to llsingleton.h
-
-#endif
+/**
+ * @file llmemory.h
+ * @brief Memory allocation/deallocation header-stuff goes here.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+#ifndef LLMEMORY_H
+#define LLMEMORY_H
+
+
+
+extern S32 gTotalDAlloc;
+extern S32 gTotalDAUse;
+extern S32 gDACount;
+
+extern void* ll_allocate (size_t size);
+extern void ll_release (void *p);
+
+class LL_COMMON_API LLMemory
+{
+public:
+ static void initClass();
+ static void cleanupClass();
+ static void freeReserve();
+ // Return the resident set size of the current process, in bytes.
+ // Return value is zero if not known.
+ static U64 getCurrentRSS();
+private:
+ static char* reserveMem;
+};
+
+// LLRefCount moved to llrefcount.h
+
+// LLPointer moved to llpointer.h
+
+// LLSafeHandle moved to llsafehandle.h
+
+// LLSingleton moved to llsingleton.h
+
+#endif
diff --git a/indra/llcommon/llmemtype.h b/indra/llcommon/llmemtype.h
index 5952a3a7c5..677fad3034 100644
--- a/indra/llcommon/llmemtype.h
+++ b/indra/llcommon/llmemtype.h
@@ -1,248 +1,248 @@
-/**
- * @file llmemtype.h
- * @brief Runtime memory usage debugging utilities.
- *
- * $LicenseInfo:firstyear=2005&license=viewergpl$
- *
- * Copyright (c) 2005-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_MEMTYPE_H
-#define LL_MEMTYPE_H
-
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-
-#include "linden_common.h"
-//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-// WARNING: Never commit with MEM_TRACK_MEM == 1
-//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-#define MEM_TRACK_MEM (0 && LL_WINDOWS)
-
-#include <vector>
-
-#define MEM_TYPE_NEW(T)
-
-class LL_COMMON_API LLMemType
-{
-public:
-
- // class we'll initialize all instances of as
- // static members of MemType. Then use
- // to construct any new mem type.
- class LL_COMMON_API DeclareMemType
- {
- public:
- DeclareMemType(char const * st);
- ~DeclareMemType();
-
- S32 mID;
- char const * mName;
-
- // array so we can map an index ID to Name
- static std::vector<char const *> mNameList;
- };
-
- LLMemType(DeclareMemType& dt);
- ~LLMemType();
-
- static char const * getNameFromID(S32 id);
-
- static DeclareMemType MTYPE_INIT;
- static DeclareMemType MTYPE_STARTUP;
- static DeclareMemType MTYPE_MAIN;
- static DeclareMemType MTYPE_FRAME;
-
- static DeclareMemType MTYPE_GATHER_INPUT;
- static DeclareMemType MTYPE_JOY_KEY;
-
- static DeclareMemType MTYPE_IDLE;
- static DeclareMemType MTYPE_IDLE_PUMP;
- static DeclareMemType MTYPE_IDLE_NETWORK;
- static DeclareMemType MTYPE_IDLE_UPDATE_REGIONS;
- static DeclareMemType MTYPE_IDLE_UPDATE_VIEWER_REGION;
- static DeclareMemType MTYPE_IDLE_UPDATE_SURFACE;
- static DeclareMemType MTYPE_IDLE_UPDATE_PARCEL_OVERLAY;
- static DeclareMemType MTYPE_IDLE_AUDIO;
-
- static DeclareMemType MTYPE_CACHE_PROCESS_PENDING;
- static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_ASKS;
- static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_REPLIES;
-
- static DeclareMemType MTYPE_MESSAGE_CHECK_ALL;
- static DeclareMemType MTYPE_MESSAGE_PROCESS_ACKS;
-
- static DeclareMemType MTYPE_RENDER;
- static DeclareMemType MTYPE_SLEEP;
-
- static DeclareMemType MTYPE_NETWORK;
- static DeclareMemType MTYPE_PHYSICS;
- static DeclareMemType MTYPE_INTERESTLIST;
-
- static DeclareMemType MTYPE_IMAGEBASE;
- static DeclareMemType MTYPE_IMAGERAW;
- static DeclareMemType MTYPE_IMAGEFORMATTED;
-
- static DeclareMemType MTYPE_APPFMTIMAGE;
- static DeclareMemType MTYPE_APPRAWIMAGE;
- static DeclareMemType MTYPE_APPAUXRAWIMAGE;
-
- static DeclareMemType MTYPE_DRAWABLE;
-
- static DeclareMemType MTYPE_OBJECT;
- static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE;
- static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE_CORE;
-
- static DeclareMemType MTYPE_DISPLAY;
- static DeclareMemType MTYPE_DISPLAY_UPDATE;
- static DeclareMemType MTYPE_DISPLAY_UPDATE_CAMERA;
- static DeclareMemType MTYPE_DISPLAY_UPDATE_GEOM;
- static DeclareMemType MTYPE_DISPLAY_SWAP;
- static DeclareMemType MTYPE_DISPLAY_UPDATE_HUD;
- static DeclareMemType MTYPE_DISPLAY_GEN_REFLECTION;
- static DeclareMemType MTYPE_DISPLAY_IMAGE_UPDATE;
- static DeclareMemType MTYPE_DISPLAY_STATE_SORT;
- static DeclareMemType MTYPE_DISPLAY_SKY;
- static DeclareMemType MTYPE_DISPLAY_RENDER_GEOM;
- static DeclareMemType MTYPE_DISPLAY_RENDER_FLUSH;
- static DeclareMemType MTYPE_DISPLAY_RENDER_UI;
- static DeclareMemType MTYPE_DISPLAY_RENDER_ATTACHMENTS;
-
- static DeclareMemType MTYPE_VERTEX_DATA;
- static DeclareMemType MTYPE_VERTEX_CONSTRUCTOR;
- static DeclareMemType MTYPE_VERTEX_DESTRUCTOR;
- static DeclareMemType MTYPE_VERTEX_CREATE_VERTICES;
- static DeclareMemType MTYPE_VERTEX_CREATE_INDICES;
- static DeclareMemType MTYPE_VERTEX_DESTROY_BUFFER;
- static DeclareMemType MTYPE_VERTEX_DESTROY_INDICES;
- static DeclareMemType MTYPE_VERTEX_UPDATE_VERTS;
- static DeclareMemType MTYPE_VERTEX_UPDATE_INDICES;
- static DeclareMemType MTYPE_VERTEX_ALLOCATE_BUFFER;
- static DeclareMemType MTYPE_VERTEX_RESIZE_BUFFER;
- static DeclareMemType MTYPE_VERTEX_MAP_BUFFER;
- static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_VERTICES;
- static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_INDICES;
- static DeclareMemType MTYPE_VERTEX_UNMAP_BUFFER;
- static DeclareMemType MTYPE_VERTEX_SET_STRIDE;
- static DeclareMemType MTYPE_VERTEX_SET_BUFFER;
- static DeclareMemType MTYPE_VERTEX_SETUP_VERTEX_BUFFER;
- static DeclareMemType MTYPE_VERTEX_CLEANUP_CLASS;
-
- static DeclareMemType MTYPE_SPACE_PARTITION;
-
- static DeclareMemType MTYPE_PIPELINE;
- static DeclareMemType MTYPE_PIPELINE_INIT;
- static DeclareMemType MTYPE_PIPELINE_CREATE_BUFFERS;
- static DeclareMemType MTYPE_PIPELINE_RESTORE_GL;
- static DeclareMemType MTYPE_PIPELINE_UNLOAD_SHADERS;
- static DeclareMemType MTYPE_PIPELINE_LIGHTING_DETAIL;
- static DeclareMemType MTYPE_PIPELINE_GET_POOL_TYPE;
- static DeclareMemType MTYPE_PIPELINE_ADD_POOL;
- static DeclareMemType MTYPE_PIPELINE_ALLOCATE_DRAWABLE;
- static DeclareMemType MTYPE_PIPELINE_ADD_OBJECT;
- static DeclareMemType MTYPE_PIPELINE_CREATE_OBJECTS;
- static DeclareMemType MTYPE_PIPELINE_UPDATE_MOVE;
- static DeclareMemType MTYPE_PIPELINE_UPDATE_GEOM;
- static DeclareMemType MTYPE_PIPELINE_MARK_VISIBLE;
- static DeclareMemType MTYPE_PIPELINE_MARK_MOVED;
- static DeclareMemType MTYPE_PIPELINE_MARK_SHIFT;
- static DeclareMemType MTYPE_PIPELINE_SHIFT_OBJECTS;
- static DeclareMemType MTYPE_PIPELINE_MARK_TEXTURED;
- static DeclareMemType MTYPE_PIPELINE_MARK_REBUILD;
- static DeclareMemType MTYPE_PIPELINE_UPDATE_CULL;
- static DeclareMemType MTYPE_PIPELINE_STATE_SORT;
- static DeclareMemType MTYPE_PIPELINE_POST_SORT;
-
- static DeclareMemType MTYPE_PIPELINE_RENDER_HUD_ELS;
- static DeclareMemType MTYPE_PIPELINE_RENDER_HL;
- static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM;
- static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED;
- static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_POST_DEF;
- static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_SHADOW;
- static DeclareMemType MTYPE_PIPELINE_RENDER_SELECT;
- static DeclareMemType MTYPE_PIPELINE_REBUILD_POOLS;
- static DeclareMemType MTYPE_PIPELINE_QUICK_LOOKUP;
- static DeclareMemType MTYPE_PIPELINE_RENDER_OBJECTS;
- static DeclareMemType MTYPE_PIPELINE_GENERATE_IMPOSTOR;
- static DeclareMemType MTYPE_PIPELINE_RENDER_BLOOM;
-
- static DeclareMemType MTYPE_UPKEEP_POOLS;
-
- static DeclareMemType MTYPE_AVATAR;
- static DeclareMemType MTYPE_AVATAR_MESH;
- static DeclareMemType MTYPE_PARTICLES;
- static DeclareMemType MTYPE_REGIONS;
-
- static DeclareMemType MTYPE_INVENTORY;
- static DeclareMemType MTYPE_INVENTORY_DRAW;
- static DeclareMemType MTYPE_INVENTORY_BUILD_NEW_VIEWS;
- static DeclareMemType MTYPE_INVENTORY_DO_FOLDER;
- static DeclareMemType MTYPE_INVENTORY_POST_BUILD;
- static DeclareMemType MTYPE_INVENTORY_FROM_XML;
- static DeclareMemType MTYPE_INVENTORY_CREATE_NEW_ITEM;
- static DeclareMemType MTYPE_INVENTORY_VIEW_INIT;
- static DeclareMemType MTYPE_INVENTORY_VIEW_SHOW;
- static DeclareMemType MTYPE_INVENTORY_VIEW_TOGGLE;
-
- static DeclareMemType MTYPE_ANIMATION;
- static DeclareMemType MTYPE_VOLUME;
- static DeclareMemType MTYPE_PRIMITIVE;
-
- static DeclareMemType MTYPE_SCRIPT;
- static DeclareMemType MTYPE_SCRIPT_RUN;
- static DeclareMemType MTYPE_SCRIPT_BYTECODE;
-
- static DeclareMemType MTYPE_IO_PUMP;
- static DeclareMemType MTYPE_IO_TCP;
- static DeclareMemType MTYPE_IO_BUFFER;
- static DeclareMemType MTYPE_IO_HTTP_SERVER;
- static DeclareMemType MTYPE_IO_SD_SERVER;
- static DeclareMemType MTYPE_IO_SD_CLIENT;
- static DeclareMemType MTYPE_IO_URL_REQUEST;
-
- static DeclareMemType MTYPE_DIRECTX_INIT;
-
- static DeclareMemType MTYPE_TEMP1;
- static DeclareMemType MTYPE_TEMP2;
- static DeclareMemType MTYPE_TEMP3;
- static DeclareMemType MTYPE_TEMP4;
- static DeclareMemType MTYPE_TEMP5;
- static DeclareMemType MTYPE_TEMP6;
- static DeclareMemType MTYPE_TEMP7;
- static DeclareMemType MTYPE_TEMP8;
- static DeclareMemType MTYPE_TEMP9;
-
- static DeclareMemType MTYPE_OTHER; // Special; used by display code
-
- S32 mTypeIndex;
-};
-
-//----------------------------------------------------------------------------
-
-#endif
-
+/**
+ * @file llmemtype.h
+ * @brief Runtime memory usage debugging utilities.
+ *
+ * $LicenseInfo:firstyear=2005&license=viewergpl$
+ *
+ * Copyright (c) 2005-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_MEMTYPE_H
+#define LL_MEMTYPE_H
+
+//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+
+//----------------------------------------------------------------------------
+
+#include "linden_common.h"
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+// WARNING: Never commit with MEM_TRACK_MEM == 1
+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#define MEM_TRACK_MEM (0 && LL_WINDOWS)
+
+#include <vector>
+
+#define MEM_TYPE_NEW(T)
+
+class LL_COMMON_API LLMemType
+{
+public:
+
+ // class we'll initialize all instances of as
+ // static members of MemType. Then use
+ // to construct any new mem type.
+ class LL_COMMON_API DeclareMemType
+ {
+ public:
+ DeclareMemType(char const * st);
+ ~DeclareMemType();
+
+ S32 mID;
+ char const * mName;
+
+ // array so we can map an index ID to Name
+ static std::vector<char const *> mNameList;
+ };
+
+ LLMemType(DeclareMemType& dt);
+ ~LLMemType();
+
+ static char const * getNameFromID(S32 id);
+
+ static DeclareMemType MTYPE_INIT;
+ static DeclareMemType MTYPE_STARTUP;
+ static DeclareMemType MTYPE_MAIN;
+ static DeclareMemType MTYPE_FRAME;
+
+ static DeclareMemType MTYPE_GATHER_INPUT;
+ static DeclareMemType MTYPE_JOY_KEY;
+
+ static DeclareMemType MTYPE_IDLE;
+ static DeclareMemType MTYPE_IDLE_PUMP;
+ static DeclareMemType MTYPE_IDLE_NETWORK;
+ static DeclareMemType MTYPE_IDLE_UPDATE_REGIONS;
+ static DeclareMemType MTYPE_IDLE_UPDATE_VIEWER_REGION;
+ static DeclareMemType MTYPE_IDLE_UPDATE_SURFACE;
+ static DeclareMemType MTYPE_IDLE_UPDATE_PARCEL_OVERLAY;
+ static DeclareMemType MTYPE_IDLE_AUDIO;
+
+ static DeclareMemType MTYPE_CACHE_PROCESS_PENDING;
+ static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_ASKS;
+ static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_REPLIES;
+
+ static DeclareMemType MTYPE_MESSAGE_CHECK_ALL;
+ static DeclareMemType MTYPE_MESSAGE_PROCESS_ACKS;
+
+ static DeclareMemType MTYPE_RENDER;
+ static DeclareMemType MTYPE_SLEEP;
+
+ static DeclareMemType MTYPE_NETWORK;
+ static DeclareMemType MTYPE_PHYSICS;
+ static DeclareMemType MTYPE_INTERESTLIST;
+
+ static DeclareMemType MTYPE_IMAGEBASE;
+ static DeclareMemType MTYPE_IMAGERAW;
+ static DeclareMemType MTYPE_IMAGEFORMATTED;
+
+ static DeclareMemType MTYPE_APPFMTIMAGE;
+ static DeclareMemType MTYPE_APPRAWIMAGE;
+ static DeclareMemType MTYPE_APPAUXRAWIMAGE;
+
+ static DeclareMemType MTYPE_DRAWABLE;
+
+ static DeclareMemType MTYPE_OBJECT;
+ static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE;
+ static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE_CORE;
+
+ static DeclareMemType MTYPE_DISPLAY;
+ static DeclareMemType MTYPE_DISPLAY_UPDATE;
+ static DeclareMemType MTYPE_DISPLAY_UPDATE_CAMERA;
+ static DeclareMemType MTYPE_DISPLAY_UPDATE_GEOM;
+ static DeclareMemType MTYPE_DISPLAY_SWAP;
+ static DeclareMemType MTYPE_DISPLAY_UPDATE_HUD;
+ static DeclareMemType MTYPE_DISPLAY_GEN_REFLECTION;
+ static DeclareMemType MTYPE_DISPLAY_IMAGE_UPDATE;
+ static DeclareMemType MTYPE_DISPLAY_STATE_SORT;
+ static DeclareMemType MTYPE_DISPLAY_SKY;
+ static DeclareMemType MTYPE_DISPLAY_RENDER_GEOM;
+ static DeclareMemType MTYPE_DISPLAY_RENDER_FLUSH;
+ static DeclareMemType MTYPE_DISPLAY_RENDER_UI;
+ static DeclareMemType MTYPE_DISPLAY_RENDER_ATTACHMENTS;
+
+ static DeclareMemType MTYPE_VERTEX_DATA;
+ static DeclareMemType MTYPE_VERTEX_CONSTRUCTOR;
+ static DeclareMemType MTYPE_VERTEX_DESTRUCTOR;
+ static DeclareMemType MTYPE_VERTEX_CREATE_VERTICES;
+ static DeclareMemType MTYPE_VERTEX_CREATE_INDICES;
+ static DeclareMemType MTYPE_VERTEX_DESTROY_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_DESTROY_INDICES;
+ static DeclareMemType MTYPE_VERTEX_UPDATE_VERTS;
+ static DeclareMemType MTYPE_VERTEX_UPDATE_INDICES;
+ static DeclareMemType MTYPE_VERTEX_ALLOCATE_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_RESIZE_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_MAP_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_VERTICES;
+ static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_INDICES;
+ static DeclareMemType MTYPE_VERTEX_UNMAP_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_SET_STRIDE;
+ static DeclareMemType MTYPE_VERTEX_SET_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_SETUP_VERTEX_BUFFER;
+ static DeclareMemType MTYPE_VERTEX_CLEANUP_CLASS;
+
+ static DeclareMemType MTYPE_SPACE_PARTITION;
+
+ static DeclareMemType MTYPE_PIPELINE;
+ static DeclareMemType MTYPE_PIPELINE_INIT;
+ static DeclareMemType MTYPE_PIPELINE_CREATE_BUFFERS;
+ static DeclareMemType MTYPE_PIPELINE_RESTORE_GL;
+ static DeclareMemType MTYPE_PIPELINE_UNLOAD_SHADERS;
+ static DeclareMemType MTYPE_PIPELINE_LIGHTING_DETAIL;
+ static DeclareMemType MTYPE_PIPELINE_GET_POOL_TYPE;
+ static DeclareMemType MTYPE_PIPELINE_ADD_POOL;
+ static DeclareMemType MTYPE_PIPELINE_ALLOCATE_DRAWABLE;
+ static DeclareMemType MTYPE_PIPELINE_ADD_OBJECT;
+ static DeclareMemType MTYPE_PIPELINE_CREATE_OBJECTS;
+ static DeclareMemType MTYPE_PIPELINE_UPDATE_MOVE;
+ static DeclareMemType MTYPE_PIPELINE_UPDATE_GEOM;
+ static DeclareMemType MTYPE_PIPELINE_MARK_VISIBLE;
+ static DeclareMemType MTYPE_PIPELINE_MARK_MOVED;
+ static DeclareMemType MTYPE_PIPELINE_MARK_SHIFT;
+ static DeclareMemType MTYPE_PIPELINE_SHIFT_OBJECTS;
+ static DeclareMemType MTYPE_PIPELINE_MARK_TEXTURED;
+ static DeclareMemType MTYPE_PIPELINE_MARK_REBUILD;
+ static DeclareMemType MTYPE_PIPELINE_UPDATE_CULL;
+ static DeclareMemType MTYPE_PIPELINE_STATE_SORT;
+ static DeclareMemType MTYPE_PIPELINE_POST_SORT;
+
+ static DeclareMemType MTYPE_PIPELINE_RENDER_HUD_ELS;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_HL;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_POST_DEF;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_SHADOW;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_SELECT;
+ static DeclareMemType MTYPE_PIPELINE_REBUILD_POOLS;
+ static DeclareMemType MTYPE_PIPELINE_QUICK_LOOKUP;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_OBJECTS;
+ static DeclareMemType MTYPE_PIPELINE_GENERATE_IMPOSTOR;
+ static DeclareMemType MTYPE_PIPELINE_RENDER_BLOOM;
+
+ static DeclareMemType MTYPE_UPKEEP_POOLS;
+
+ static DeclareMemType MTYPE_AVATAR;
+ static DeclareMemType MTYPE_AVATAR_MESH;
+ static DeclareMemType MTYPE_PARTICLES;
+ static DeclareMemType MTYPE_REGIONS;
+
+ static DeclareMemType MTYPE_INVENTORY;
+ static DeclareMemType MTYPE_INVENTORY_DRAW;
+ static DeclareMemType MTYPE_INVENTORY_BUILD_NEW_VIEWS;
+ static DeclareMemType MTYPE_INVENTORY_DO_FOLDER;
+ static DeclareMemType MTYPE_INVENTORY_POST_BUILD;
+ static DeclareMemType MTYPE_INVENTORY_FROM_XML;
+ static DeclareMemType MTYPE_INVENTORY_CREATE_NEW_ITEM;
+ static DeclareMemType MTYPE_INVENTORY_VIEW_INIT;
+ static DeclareMemType MTYPE_INVENTORY_VIEW_SHOW;
+ static DeclareMemType MTYPE_INVENTORY_VIEW_TOGGLE;
+
+ static DeclareMemType MTYPE_ANIMATION;
+ static DeclareMemType MTYPE_VOLUME;
+ static DeclareMemType MTYPE_PRIMITIVE;
+
+ static DeclareMemType MTYPE_SCRIPT;
+ static DeclareMemType MTYPE_SCRIPT_RUN;
+ static DeclareMemType MTYPE_SCRIPT_BYTECODE;
+
+ static DeclareMemType MTYPE_IO_PUMP;
+ static DeclareMemType MTYPE_IO_TCP;
+ static DeclareMemType MTYPE_IO_BUFFER;
+ static DeclareMemType MTYPE_IO_HTTP_SERVER;
+ static DeclareMemType MTYPE_IO_SD_SERVER;
+ static DeclareMemType MTYPE_IO_SD_CLIENT;
+ static DeclareMemType MTYPE_IO_URL_REQUEST;
+
+ static DeclareMemType MTYPE_DIRECTX_INIT;
+
+ static DeclareMemType MTYPE_TEMP1;
+ static DeclareMemType MTYPE_TEMP2;
+ static DeclareMemType MTYPE_TEMP3;
+ static DeclareMemType MTYPE_TEMP4;
+ static DeclareMemType MTYPE_TEMP5;
+ static DeclareMemType MTYPE_TEMP6;
+ static DeclareMemType MTYPE_TEMP7;
+ static DeclareMemType MTYPE_TEMP8;
+ static DeclareMemType MTYPE_TEMP9;
+
+ static DeclareMemType MTYPE_OTHER; // Special; used by display code
+
+ S32 mTypeIndex;
+};
+
+//----------------------------------------------------------------------------
+
+#endif
+
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index dda9a95597..bb3301df9f 100644
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -1,169 +1,169 @@
-/**
- * @file llpreprocessor.h
- * @brief This file should be included in all Linden Lab files and
- * should only contain special preprocessor directives
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LLPREPROCESSOR_H
-#define LLPREPROCESSOR_H
-
-// Figure out endianness of platform
-#ifdef LL_LINUX
-#define __ENABLE_WSTRING
-#include <endian.h>
-#endif // LL_LINUX
-
-#if LL_SOLARIS
-# ifdef __sparc // Since we're talking Solaris 10 and up, only 64 bit is supported.
-# define LL_BIG_ENDIAN 1
-# define LL_SOLARIS_ALIGNED_CPU 1 // used to designate issues where SPARC alignment is addressed
-# define LL_SOLARIS_NON_MESA_GL 1 // The SPARC GL does not provide a MESA-based GL API
-# endif
-# include <sys/isa_defs.h> // ensure we know which end is up
-#endif // LL_SOLARIS
-
-#if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)) || (defined(LL_SOLARIS) && defined(__i386)))
-#define LL_LITTLE_ENDIAN 1
-#else
-#define LL_BIG_ENDIAN 1
-#endif
-
-// Per-compiler switches
-#ifdef __GNUC__
-#define LL_FORCE_INLINE inline __attribute__((always_inline))
-#else
-#define LL_FORCE_INLINE __forceinline
-#endif
-
-// Figure out differences between compilers
-#if defined(__GNUC__)
- #define GCC_VERSION (__GNUC__ * 10000 \
- + __GNUC_MINOR__ * 100 \
- + __GNUC_PATCHLEVEL__)
- #ifndef LL_GNUC
- #define LL_GNUC 1
- #endif
-#elif defined(__MSVC_VER__) || defined(_MSC_VER)
- #ifndef LL_MSVC
- #define LL_MSVC 1
- #endif
- #if _MSC_VER < 1400
- #define LL_MSVC7 //Visual C++ 2003 or earlier
- #endif
-#endif
-
-// Deal with minor differences on Unixy OSes.
-#if LL_DARWIN || LL_LINUX
- // Different name, same functionality.
- #define stricmp strcasecmp
- #define strnicmp strncasecmp
-
- // Not sure why this is different, but...
- #ifndef MAX_PATH
- #define MAX_PATH PATH_MAX
- #endif // not MAX_PATH
-
-#endif
-
-
-// Static linking with apr on windows needs to be declared.
-#if LL_WINDOWS && !LL_COMMON_LINK_SHARED
-#ifndef APR_DECLARE_STATIC
-#define APR_DECLARE_STATIC // For APR on Windows
-#endif
-#ifndef APU_DECLARE_STATIC
-#define APU_DECLARE_STATIC // For APR util on Windows
-#endif
-#endif
-
-#if defined(LL_WINDOWS)
-#define BOOST_REGEX_NO_LIB 1
-#define CURL_STATICLIB 1
-#ifndef XML_STATIC
-#define XML_STATIC
-#endif
-#endif // LL_WINDOWS
-
-
-// Deal with VC6 problems
-#if LL_MSVC
-#pragma warning( 3 : 4701 ) // "local variable used without being initialized" Treat this as level 3, not level 4.
-#pragma warning( 3 : 4702 ) // "unreachable code" Treat this as level 3, not level 4.
-#pragma warning( 3 : 4189 ) // "local variable initialized but not referenced" Treat this as level 3, not level 4.
-//#pragma warning( 3 : 4018 ) // "signed/unsigned mismatch" Treat this as level 3, not level 4.
-#pragma warning( 3 : 4263 ) // 'function' : member function does not override any base class virtual member function
-#pragma warning( 3 : 4264 ) // "'virtual_function' : no override available for virtual member function from base 'class'; function is hidden"
-#pragma warning( 3 : 4265 ) // "class has virtual functions, but destructor is not virtual"
-#pragma warning( 3 : 4266 ) // 'function' : no override available for virtual member function from base 'type'; function is hidden
-#pragma warning (disable : 4180) // qualifier applied to function type has no meaning; ignored
-#pragma warning( disable : 4284 ) // silly MS warning deep inside their <map> include file
-#pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation.
-#pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
-#pragma warning( disable : 4996 ) // warning: deprecated
-
-// level 4 warnings that we need to disable:
-#pragma warning (disable : 4100) // unreferenced formal parameter
-#pragma warning (disable : 4127) // conditional expression is constant (e.g. while(1) )
-#pragma warning (disable : 4244) // possible loss of data on conversions
-#pragma warning (disable : 4396) // the inline specifier cannot be used when a friend declaration refers to a specialization of a function template
-#pragma warning (disable : 4512) // assignment operator could not be generated
-#pragma warning (disable : 4706) // assignment within conditional (even if((x = y)) )
-
-#pragma warning (disable : 4251) // member needs to have dll-interface to be used by clients of class
-#pragma warning (disable : 4275) // non dll-interface class used as base for dll-interface class
-#endif // LL_MSVC
-
-#if LL_WINDOWS
-#define LL_DLLEXPORT __declspec(dllexport)
-#define LL_DLLIMPORT __declspec(dllimport)
-#elif LL_LINUX
-#define LL_DLLEXPORT __attribute__ ((visibility("default")))
-#define LL_DLLIMPORT
-#else
-#define LL_DLLEXPORT
-#define LL_DLLIMPORT
-#endif // LL_WINDOWS
-
-#if LL_COMMON_LINK_SHARED
-// CMake automagically defines llcommon_EXPORTS only when building llcommon
-// sources, and only when llcommon is a shared library (i.e. when
-// LL_COMMON_LINK_SHARED). We must still test LL_COMMON_LINK_SHARED because
-// otherwise we can't distinguish between (non-llcommon source) and (llcommon
-// not shared).
-# if defined(llcommon_EXPORTS)
-# define LL_COMMON_API LL_DLLEXPORT
-# else //llcommon_EXPORTS
-# define LL_COMMON_API LL_DLLIMPORT
-# endif //llcommon_EXPORTS
-#else // LL_COMMON_LINK_SHARED
-# define LL_COMMON_API
-#endif // LL_COMMON_LINK_SHARED
-
-#endif // not LL_LINDEN_PREPROCESSOR_H
+/**
+ * @file llpreprocessor.h
+ * @brief This file should be included in all Linden Lab files and
+ * should only contain special preprocessor directives
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LLPREPROCESSOR_H
+#define LLPREPROCESSOR_H
+
+// Figure out endianness of platform
+#ifdef LL_LINUX
+#define __ENABLE_WSTRING
+#include <endian.h>
+#endif // LL_LINUX
+
+#if LL_SOLARIS
+# ifdef __sparc // Since we're talking Solaris 10 and up, only 64 bit is supported.
+# define LL_BIG_ENDIAN 1
+# define LL_SOLARIS_ALIGNED_CPU 1 // used to designate issues where SPARC alignment is addressed
+# define LL_SOLARIS_NON_MESA_GL 1 // The SPARC GL does not provide a MESA-based GL API
+# endif
+# include <sys/isa_defs.h> // ensure we know which end is up
+#endif // LL_SOLARIS
+
+#if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)) || (defined(LL_SOLARIS) && defined(__i386)))
+#define LL_LITTLE_ENDIAN 1
+#else
+#define LL_BIG_ENDIAN 1
+#endif
+
+// Per-compiler switches
+#ifdef __GNUC__
+#define LL_FORCE_INLINE inline __attribute__((always_inline))
+#else
+#define LL_FORCE_INLINE __forceinline
+#endif
+
+// Figure out differences between compilers
+#if defined(__GNUC__)
+ #define GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
+ #ifndef LL_GNUC
+ #define LL_GNUC 1
+ #endif
+#elif defined(__MSVC_VER__) || defined(_MSC_VER)
+ #ifndef LL_MSVC
+ #define LL_MSVC 1
+ #endif
+ #if _MSC_VER < 1400
+ #define LL_MSVC7 //Visual C++ 2003 or earlier
+ #endif
+#endif
+
+// Deal with minor differences on Unixy OSes.
+#if LL_DARWIN || LL_LINUX
+ // Different name, same functionality.
+ #define stricmp strcasecmp
+ #define strnicmp strncasecmp
+
+ // Not sure why this is different, but...
+ #ifndef MAX_PATH
+ #define MAX_PATH PATH_MAX
+ #endif // not MAX_PATH
+
+#endif
+
+
+// Static linking with apr on windows needs to be declared.
+#if LL_WINDOWS && !LL_COMMON_LINK_SHARED
+#ifndef APR_DECLARE_STATIC
+#define APR_DECLARE_STATIC // For APR on Windows
+#endif
+#ifndef APU_DECLARE_STATIC
+#define APU_DECLARE_STATIC // For APR util on Windows
+#endif
+#endif
+
+#if defined(LL_WINDOWS)
+#define BOOST_REGEX_NO_LIB 1
+#define CURL_STATICLIB 1
+#ifndef XML_STATIC
+#define XML_STATIC
+#endif
+#endif // LL_WINDOWS
+
+
+// Deal with VC6 problems
+#if LL_MSVC
+#pragma warning( 3 : 4701 ) // "local variable used without being initialized" Treat this as level 3, not level 4.
+#pragma warning( 3 : 4702 ) // "unreachable code" Treat this as level 3, not level 4.
+#pragma warning( 3 : 4189 ) // "local variable initialized but not referenced" Treat this as level 3, not level 4.
+//#pragma warning( 3 : 4018 ) // "signed/unsigned mismatch" Treat this as level 3, not level 4.
+#pragma warning( 3 : 4263 ) // 'function' : member function does not override any base class virtual member function
+#pragma warning( 3 : 4264 ) // "'virtual_function' : no override available for virtual member function from base 'class'; function is hidden"
+#pragma warning( 3 : 4265 ) // "class has virtual functions, but destructor is not virtual"
+#pragma warning( 3 : 4266 ) // 'function' : no override available for virtual member function from base 'type'; function is hidden
+#pragma warning (disable : 4180) // qualifier applied to function type has no meaning; ignored
+#pragma warning( disable : 4284 ) // silly MS warning deep inside their <map> include file
+#pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation.
+#pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
+#pragma warning( disable : 4996 ) // warning: deprecated
+
+// level 4 warnings that we need to disable:
+#pragma warning (disable : 4100) // unreferenced formal parameter
+#pragma warning (disable : 4127) // conditional expression is constant (e.g. while(1) )
+#pragma warning (disable : 4244) // possible loss of data on conversions
+#pragma warning (disable : 4396) // the inline specifier cannot be used when a friend declaration refers to a specialization of a function template
+#pragma warning (disable : 4512) // assignment operator could not be generated
+#pragma warning (disable : 4706) // assignment within conditional (even if((x = y)) )
+
+#pragma warning (disable : 4251) // member needs to have dll-interface to be used by clients of class
+#pragma warning (disable : 4275) // non dll-interface class used as base for dll-interface class
+#endif // LL_MSVC
+
+#if LL_WINDOWS
+#define LL_DLLEXPORT __declspec(dllexport)
+#define LL_DLLIMPORT __declspec(dllimport)
+#elif LL_LINUX
+#define LL_DLLEXPORT __attribute__ ((visibility("default")))
+#define LL_DLLIMPORT
+#else
+#define LL_DLLEXPORT
+#define LL_DLLIMPORT
+#endif // LL_WINDOWS
+
+#if LL_COMMON_LINK_SHARED
+// CMake automagically defines llcommon_EXPORTS only when building llcommon
+// sources, and only when llcommon is a shared library (i.e. when
+// LL_COMMON_LINK_SHARED). We must still test LL_COMMON_LINK_SHARED because
+// otherwise we can't distinguish between (non-llcommon source) and (llcommon
+// not shared).
+# if defined(llcommon_EXPORTS)
+# define LL_COMMON_API LL_DLLEXPORT
+# else //llcommon_EXPORTS
+# define LL_COMMON_API LL_DLLIMPORT
+# endif //llcommon_EXPORTS
+#else // LL_COMMON_LINK_SHARED
+# define LL_COMMON_API
+#endif // LL_COMMON_LINK_SHARED
+
+#endif // not LL_LINDEN_PREPROCESSOR_H
diff --git a/indra/llcommon/llstacktrace.cpp b/indra/llcommon/llstacktrace.cpp
index 3cb074257b..6558df70a4 100644
--- a/indra/llcommon/llstacktrace.cpp
+++ b/indra/llcommon/llstacktrace.cpp
@@ -1,142 +1,142 @@
-/**
- * @file llstacktrace.cpp
- * @brief stack tracing functionality
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-#include "llstacktrace.h"
-
-#ifdef LL_WINDOWS
-
-#include <iostream>
-#include <sstream>
-
-#include "windows.h"
-#include "Dbghelp.h"
-
-typedef USHORT NTAPI RtlCaptureStackBackTrace_Function(
- IN ULONG frames_to_skip,
- IN ULONG frames_to_capture,
- OUT PVOID *backtrace,
- OUT PULONG backtrace_hash);
-
-static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn =
- (RtlCaptureStackBackTrace_Function*)
- GetProcAddress(GetModuleHandleA("ntdll.dll"), "RtlCaptureStackBackTrace");
-
-bool ll_get_stack_trace(std::vector<std::string>& lines)
-{
- const S32 MAX_STACK_DEPTH = 32;
- const S32 STRING_NAME_LENGTH = 200;
- const S32 FRAME_SKIP = 2;
- static BOOL symbolsLoaded = false;
- static BOOL firstCall = true;
-
- HANDLE hProc = GetCurrentProcess();
-
- // load the symbols if they're not loaded
- if(!symbolsLoaded && firstCall)
- {
- symbolsLoaded = SymInitialize(hProc, NULL, true);
- firstCall = false;
- }
-
- // if loaded, get the call stack
- if(symbolsLoaded)
- {
- // create the frames to hold the addresses
- void* frames[MAX_STACK_DEPTH];
- memset(frames, 0, sizeof(void*)*MAX_STACK_DEPTH);
- S32 depth = 0;
-
- // get the addresses
- depth = RtlCaptureStackBackTrace_fn(FRAME_SKIP, MAX_STACK_DEPTH, frames, NULL);
-
- IMAGEHLP_LINE64 line;
- memset(&line, 0, sizeof(IMAGEHLP_LINE64));
- line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
-
- // create something to hold address info
- PIMAGEHLP_SYMBOL64 pSym;
- pSym = (PIMAGEHLP_SYMBOL64)malloc(sizeof(IMAGEHLP_SYMBOL64) + STRING_NAME_LENGTH);
- memset(pSym, 0, sizeof(IMAGEHLP_SYMBOL64) + STRING_NAME_LENGTH);
- pSym->MaxNameLength = STRING_NAME_LENGTH;
- pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
-
- // get address info for each address frame
- // and store
- for(S32 i=0; i < depth; i++)
- {
- std::stringstream stack_line;
- BOOL ret;
-
- DWORD64 addr = (DWORD64)frames[i];
- ret = SymGetSymFromAddr64(hProc, addr, 0, pSym);
- if(ret)
- {
- stack_line << pSym->Name << " ";
- }
-
- DWORD dummy;
- ret = SymGetLineFromAddr64(hProc, addr, &dummy, &line);
- if(ret)
- {
- std::string file_name = line.FileName;
- std::string::size_type index = file_name.rfind("\\");
- stack_line << file_name.substr(index + 1, file_name.size()) << ":" << line.LineNumber;
- }
-
- lines.push_back(stack_line.str());
- }
-
- free(pSym);
-
- // TODO: figure out a way to cleanup symbol loading
- // Not hugely necessary, however.
- //SymCleanup(hProc);
- return true;
- }
- else
- {
- lines.push_back("Stack Trace Failed. PDB symbol info not loaded");
- }
-
- return false;
-}
-
-#else
-
-bool ll_get_stack_trace(std::vector<std::string>& lines)
-{
- return false;
-}
-
-#endif
-
+/**
+ * @file llstacktrace.cpp
+ * @brief stack tracing functionality
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "llstacktrace.h"
+
+#ifdef LL_WINDOWS
+
+#include <iostream>
+#include <sstream>
+
+#include "windows.h"
+#include "Dbghelp.h"
+
+typedef USHORT NTAPI RtlCaptureStackBackTrace_Function(
+ IN ULONG frames_to_skip,
+ IN ULONG frames_to_capture,
+ OUT PVOID *backtrace,
+ OUT PULONG backtrace_hash);
+
+static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn =
+ (RtlCaptureStackBackTrace_Function*)
+ GetProcAddress(GetModuleHandleA("ntdll.dll"), "RtlCaptureStackBackTrace");
+
+bool ll_get_stack_trace(std::vector<std::string>& lines)
+{
+ const S32 MAX_STACK_DEPTH = 32;
+ const S32 STRING_NAME_LENGTH = 200;
+ const S32 FRAME_SKIP = 2;
+ static BOOL symbolsLoaded = false;
+ static BOOL firstCall = true;
+
+ HANDLE hProc = GetCurrentProcess();
+
+ // load the symbols if they're not loaded
+ if(!symbolsLoaded && firstCall)
+ {
+ symbolsLoaded = SymInitialize(hProc, NULL, true);
+ firstCall = false;
+ }
+
+ // if loaded, get the call stack
+ if(symbolsLoaded)
+ {
+ // create the frames to hold the addresses
+ void* frames[MAX_STACK_DEPTH];
+ memset(frames, 0, sizeof(void*)*MAX_STACK_DEPTH);
+ S32 depth = 0;
+
+ // get the addresses
+ depth = RtlCaptureStackBackTrace_fn(FRAME_SKIP, MAX_STACK_DEPTH, frames, NULL);
+
+ IMAGEHLP_LINE64 line;
+ memset(&line, 0, sizeof(IMAGEHLP_LINE64));
+ line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
+
+ // create something to hold address info
+ PIMAGEHLP_SYMBOL64 pSym;
+ pSym = (PIMAGEHLP_SYMBOL64)malloc(sizeof(IMAGEHLP_SYMBOL64) + STRING_NAME_LENGTH);
+ memset(pSym, 0, sizeof(IMAGEHLP_SYMBOL64) + STRING_NAME_LENGTH);
+ pSym->MaxNameLength = STRING_NAME_LENGTH;
+ pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
+
+ // get address info for each address frame
+ // and store
+ for(S32 i=0; i < depth; i++)
+ {
+ std::stringstream stack_line;
+ BOOL ret;
+
+ DWORD64 addr = (DWORD64)frames[i];
+ ret = SymGetSymFromAddr64(hProc, addr, 0, pSym);
+ if(ret)
+ {
+ stack_line << pSym->Name << " ";
+ }
+
+ DWORD dummy;
+ ret = SymGetLineFromAddr64(hProc, addr, &dummy, &line);
+ if(ret)
+ {
+ std::string file_name = line.FileName;
+ std::string::size_type index = file_name.rfind("\\");
+ stack_line << file_name.substr(index + 1, file_name.size()) << ":" << line.LineNumber;
+ }
+
+ lines.push_back(stack_line.str());
+ }
+
+ free(pSym);
+
+ // TODO: figure out a way to cleanup symbol loading
+ // Not hugely necessary, however.
+ //SymCleanup(hProc);
+ return true;
+ }
+ else
+ {
+ lines.push_back("Stack Trace Failed. PDB symbol info not loaded");
+ }
+
+ return false;
+}
+
+#else
+
+bool ll_get_stack_trace(std::vector<std::string>& lines)
+{
+ return false;
+}
+
+#endif
+
diff --git a/indra/llcommon/llstacktrace.h b/indra/llcommon/llstacktrace.h
index b84b1aa6ad..9f857f0fd3 100644
--- a/indra/llcommon/llstacktrace.h
+++ b/indra/llcommon/llstacktrace.h
@@ -1,44 +1,44 @@
-/**
- * @file llstacktrace.h
- * @brief stack trace functions
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-
-#ifndef LL_LLSTACKTRACE_H
-#define LL_LLSTACKTRACE_H
-
-#include "stdtypes.h"
-#include <vector>
-#include <string>
-
-LL_COMMON_API bool ll_get_stack_trace(std::vector<std::string>& lines);
-
-#endif
-
+/**
+ * @file llstacktrace.h
+ * @brief stack trace functions
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+
+#ifndef LL_LLSTACKTRACE_H
+#define LL_LLSTACKTRACE_H
+
+#include "stdtypes.h"
+#include <vector>
+#include <string>
+
+LL_COMMON_API bool ll_get_stack_trace(std::vector<std::string>& lines);
+
+#endif
+
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index edbb007f61..31e70e0fe4 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -1,1300 +1,1300 @@
-/**
- * @file llstring.h
- * @brief String utility functions and std::string class.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLSTRING_H
-#define LL_LLSTRING_H
-
-#include <string>
-#include <cstdio>
-#include <locale>
-#include <iomanip>
-#include "llsd.h"
-#include "llfasttimer.h"
-
-#if LL_LINUX || LL_SOLARIS
-#include <wctype.h>
-#include <wchar.h>
-#endif
-
-#include <string.h>
-
-#if LL_SOLARIS
-// stricmp and strnicmp do not exist on Solaris:
-#define stricmp strcasecmp
-#define strnicmp strncasecmp
-#endif
-
-const char LL_UNKNOWN_CHAR = '?';
-
-#if LL_DARWIN || LL_LINUX || LL_SOLARIS
-// Template specialization of char_traits for U16s. Only necessary on Mac and Linux (exists on Windows already)
-#include <cstring>
-
-namespace std
-{
-template<>
-struct char_traits<U16>
-{
- typedef U16 char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
- typedef mbstate_t state_type;
-
- static void
- assign(char_type& __c1, const char_type& __c2)
- { __c1 = __c2; }
-
- static bool
- eq(const char_type& __c1, const char_type& __c2)
- { return __c1 == __c2; }
-
- static bool
- lt(const char_type& __c1, const char_type& __c2)
- { return __c1 < __c2; }
-
- static int
- compare(const char_type* __s1, const char_type* __s2, size_t __n)
- { return memcmp(__s1, __s2, __n * sizeof(char_type)); }
-
- static size_t
- length(const char_type* __s)
- {
- const char_type *cur_char = __s;
- while (*cur_char != 0)
- {
- ++cur_char;
- }
- return cur_char - __s;
- }
-
- static const char_type*
- find(const char_type* __s, size_t __n, const char_type& __a)
- { return static_cast<const char_type*>(memchr(__s, __a, __n * sizeof(char_type))); }
-
- static char_type*
- move(char_type* __s1, const char_type* __s2, size_t __n)
- { return static_cast<char_type*>(memmove(__s1, __s2, __n * sizeof(char_type))); }
-
- static char_type*
- copy(char_type* __s1, const char_type* __s2, size_t __n)
- { return static_cast<char_type*>(memcpy(__s1, __s2, __n * sizeof(char_type))); } /* Flawfinder: ignore */
-
- static char_type*
- assign(char_type* __s, size_t __n, char_type __a)
- {
- // This isn't right.
- //return static_cast<char_type*>(memset(__s, __a, __n * sizeof(char_type)));
-
- // I don't think there's a standard 'memset' for 16-bit values.
- // Do this the old-fashioned way.
-
- size_t __i;
- for(__i = 0; __i < __n; __i++)
- {
- __s[__i] = __a;
- }
- return __s;
- }
-
- static char_type
- to_char_type(const int_type& __c)
- { return static_cast<char_type>(__c); }
-
- static int_type
- to_int_type(const char_type& __c)
- { return static_cast<int_type>(__c); }
-
- static bool
- eq_int_type(const int_type& __c1, const int_type& __c2)
- { return __c1 == __c2; }
-
- static int_type
- eof() { return static_cast<int_type>(EOF); }
-
- static int_type
- not_eof(const int_type& __c)
- { return (__c == eof()) ? 0 : __c; }
- };
-};
-#endif
-
-class LL_COMMON_API LLStringOps
-{
-private:
- static long sPacificTimeOffset;
- static long sLocalTimeOffset;
- static bool sPacificDaylightTime;
- static std::map<std::string, std::string> datetimeToCodes;
-
-public:
- static char toUpper(char elem) { return toupper((unsigned char)elem); }
- static llwchar toUpper(llwchar elem) { return towupper(elem); }
-
- static char toLower(char elem) { return tolower((unsigned char)elem); }
- static llwchar toLower(llwchar elem) { return towlower(elem); }
-
- static bool isSpace(char elem) { return isspace((unsigned char)elem) != 0; }
- static bool isSpace(llwchar elem) { return iswspace(elem) != 0; }
-
- static bool isUpper(char elem) { return isupper((unsigned char)elem) != 0; }
- static bool isUpper(llwchar elem) { return iswupper(elem) != 0; }
-
- static bool isLower(char elem) { return islower((unsigned char)elem) != 0; }
- static bool isLower(llwchar elem) { return iswlower(elem) != 0; }
-
- static bool isDigit(char a) { return isdigit((unsigned char)a) != 0; }
- static bool isDigit(llwchar a) { return iswdigit(a) != 0; }
-
- static bool isPunct(char a) { return ispunct((unsigned char)a) != 0; }
- static bool isPunct(llwchar a) { return iswpunct(a) != 0; }
-
- static bool isAlnum(char a) { return isalnum((unsigned char)a) != 0; }
- static bool isAlnum(llwchar a) { return iswalnum(a) != 0; }
-
- static S32 collate(const char* a, const char* b) { return strcoll(a, b); }
- static S32 collate(const llwchar* a, const llwchar* b);
-
- static void setupDatetimeInfo(bool pacific_daylight_time);
- static long getPacificTimeOffset(void) { return sPacificTimeOffset;}
- static long getLocalTimeOffset(void) { return sLocalTimeOffset;}
- // Is the Pacific time zone (aka server time zone)
- // currently in daylight savings time?
- static bool getPacificDaylightTime(void) { return sPacificDaylightTime;}
-
- static std::string getDatetimeCode (std::string key);
-};
-
-/**
- * @brief Return a string constructed from in without crashing if the
- * pointer is NULL.
- */
-LL_COMMON_API std::string ll_safe_string(const char* in);
-LL_COMMON_API std::string ll_safe_string(const char* in, S32 maxlen);
-
-
-// Allowing assignments from non-strings into format_map_t is apparently
-// *really* error-prone, so subclass std::string with just basic c'tors.
-class LLFormatMapString
-{
-public:
- LLFormatMapString() {};
- LLFormatMapString(const char* s) : mString(ll_safe_string(s)) {};
- LLFormatMapString(const std::string& s) : mString(s) {};
- operator std::string() const { return mString; }
- bool operator<(const LLFormatMapString& rhs) const { return mString < rhs.mString; }
- std::size_t length() const { return mString.length(); }
-
-private:
- std::string mString;
-};
-
-template <class T>
-class LLStringUtilBase
-{
-private:
- static std::string sLocale;
-
-public:
- typedef typename std::basic_string<T>::size_type size_type;
-
-public:
- /////////////////////////////////////////////////////////////////////////////////////////
- // Static Utility functions that operate on std::strings
-
- static std::basic_string<T> null;
-
- typedef std::map<LLFormatMapString, LLFormatMapString> format_map_t;
- LL_COMMON_API static void getTokens(const std::basic_string<T>& instr, std::vector<std::basic_string<T> >& tokens, const std::basic_string<T>& delims);
- LL_COMMON_API static void formatNumber(std::basic_string<T>& numStr, std::basic_string<T> decimals);
- LL_COMMON_API static bool formatDatetime(std::basic_string<T>& replacement, std::basic_string<T> token, std::basic_string<T> param, S32 secFromEpoch);
- LL_COMMON_API static S32 format(std::basic_string<T>& s, const format_map_t& substitutions);
- LL_COMMON_API static S32 format(std::basic_string<T>& s, const LLSD& substitutions);
- LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const format_map_t& substitutions);
- LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const LLSD& substitutions);
- static void setLocale (std::string inLocale) {sLocale = inLocale;};
- static std::string getLocale (void) {return sLocale;};
-
- static bool isValidIndex(const std::basic_string<T>& string, size_type i)
- {
- return !string.empty() && (0 <= i) && (i <= string.size());
- }
-
- static void trimHead(std::basic_string<T>& string);
- static void trimTail(std::basic_string<T>& string);
- static void trim(std::basic_string<T>& string) { trimHead(string); trimTail(string); }
- static void truncate(std::basic_string<T>& string, size_type count);
-
- static void toUpper(std::basic_string<T>& string);
- static void toLower(std::basic_string<T>& string);
-
- // True if this is the head of s.
- static BOOL isHead( const std::basic_string<T>& string, const T* s );
-
- /**
- * @brief Returns true if string starts with substr
- *
- * If etither string or substr are empty, this method returns false.
- */
- static bool startsWith(
- const std::basic_string<T>& string,
- const std::basic_string<T>& substr);
-
- /**
- * @brief Returns true if string ends in substr
- *
- * If etither string or substr are empty, this method returns false.
- */
- static bool endsWith(
- const std::basic_string<T>& string,
- const std::basic_string<T>& substr);
-
- static void addCRLF(std::basic_string<T>& string);
- static void removeCRLF(std::basic_string<T>& string);
-
- static void replaceTabsWithSpaces( std::basic_string<T>& string, size_type spaces_per_tab );
- static void replaceNonstandardASCII( std::basic_string<T>& string, T replacement );
- static void replaceChar( std::basic_string<T>& string, T target, T replacement );
- static void replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement );
-
- static BOOL containsNonprintable(const std::basic_string<T>& string);
- static void stripNonprintable(std::basic_string<T>& string);
-
- /**
- * @brief Unsafe way to make ascii characters. You should probably
- * only call this when interacting with the host operating system.
- * The 1 byte std::string does not work correctly.
- * The 2 and 4 byte std::string probably work, so LLWStringUtil::_makeASCII
- * should work.
- */
- static void _makeASCII(std::basic_string<T>& string);
-
- // Conversion to other data types
- static BOOL convertToBOOL(const std::basic_string<T>& string, BOOL& value);
- static BOOL convertToU8(const std::basic_string<T>& string, U8& value);
- static BOOL convertToS8(const std::basic_string<T>& string, S8& value);
- static BOOL convertToS16(const std::basic_string<T>& string, S16& value);
- static BOOL convertToU16(const std::basic_string<T>& string, U16& value);
- static BOOL convertToU32(const std::basic_string<T>& string, U32& value);
- static BOOL convertToS32(const std::basic_string<T>& string, S32& value);
- static BOOL convertToF32(const std::basic_string<T>& string, F32& value);
- static BOOL convertToF64(const std::basic_string<T>& string, F64& value);
-
- /////////////////////////////////////////////////////////////////////////////////////////
- // Utility functions for working with char*'s and strings
-
- // Like strcmp but also handles empty strings. Uses
- // current locale.
- static S32 compareStrings(const T* lhs, const T* rhs);
- static S32 compareStrings(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs);
-
- // case insensitive version of above. Uses current locale on
- // Win32, and falls back to a non-locale aware comparison on
- // Linux.
- static S32 compareInsensitive(const T* lhs, const T* rhs);
- static S32 compareInsensitive(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs);
-
- // Case sensitive comparison with good handling of numbers. Does not use current locale.
- // a.k.a. strdictcmp()
- static S32 compareDict(const std::basic_string<T>& a, const std::basic_string<T>& b);
-
- // Case *in*sensitive comparison with good handling of numbers. Does not use current locale.
- // a.k.a. strdictcmp()
- static S32 compareDictInsensitive(const std::basic_string<T>& a, const std::basic_string<T>& b);
-
- // Puts compareDict() in a form appropriate for LL container classes to use for sorting.
- static BOOL precedesDict( const std::basic_string<T>& a, const std::basic_string<T>& b );
-
- // A replacement for strncpy.
- // If the dst buffer is dst_size bytes long or more, ensures that dst is null terminated and holds
- // up to dst_size-1 characters of src.
- static void copy(T* dst, const T* src, size_type dst_size);
-
- // Copies src into dst at a given offset.
- static void copyInto(std::basic_string<T>& dst, const std::basic_string<T>& src, size_type offset);
-
- static bool isPartOfWord(T c) { return (c == (T)'_') || LLStringOps::isAlnum(c); }
-
-
-#ifdef _DEBUG
- LL_COMMON_API static void testHarness();
-#endif
-
-private:
- LL_COMMON_API static size_type getSubstitution(const std::basic_string<T>& instr, size_type& start, std::vector<std::basic_string<T> >& tokens);
-};
-
-template<class T> std::basic_string<T> LLStringUtilBase<T>::null;
-template<class T> std::string LLStringUtilBase<T>::sLocale;
-
-typedef LLStringUtilBase<char> LLStringUtil;
-typedef LLStringUtilBase<llwchar> LLWStringUtil;
-typedef std::basic_string<llwchar> LLWString;
-
-//@ Use this where we want to disallow input in the form of "foo"
-// This is used to catch places where english text is embedded in the code
-// instead of in a translatable XUI file.
-class LLStringExplicit : public std::string
-{
-public:
- explicit LLStringExplicit(const char* s) : std::string(s) {}
- LLStringExplicit(const std::string& s) : std::string(s) {}
- LLStringExplicit(const std::string& s, size_type pos, size_type n = std::string::npos) : std::string(s, pos, n) {}
-};
-
-struct LLDictionaryLess
-{
-public:
- bool operator()(const std::string& a, const std::string& b)
- {
- return (LLStringUtil::precedesDict(a, b) ? true : false);
- }
-};
-
-
-/**
- * Simple support functions
- */
-
-/**
- * @brief chop off the trailing characters in a string.
- *
- * This function works on bytes rather than glyphs, so this will
- * incorrectly truncate non-single byte strings.
- * Use utf8str_truncate() for utf8 strings
- * @return a copy of in string minus the trailing count bytes.
- */
-inline std::string chop_tail_copy(
- const std::string& in,
- std::string::size_type count)
-{
- return std::string(in, 0, in.length() - count);
-}
-
-/**
- * @brief This translates a nybble stored as a hex value from 0-f back
- * to a nybble in the low order bits of the return byte.
- */
-LL_COMMON_API U8 hex_as_nybble(char hex);
-
-/**
- * @brief read the contents of a file into a string.
- *
- * Since this function has no concept of character encoding, most
- * anything you do with this method ill-advised. Please avoid.
- * @param str [out] The string which will have.
- * @param filename The full name of the file to read.
- * @return Returns true on success. If false, str is unmodified.
- */
-LL_COMMON_API bool _read_file_into_string(std::string& str, const std::string& filename);
-LL_COMMON_API bool iswindividual(llwchar elem);
-
-/**
- * Unicode support
- */
-
-// Make the incoming string a utf8 string. Replaces any unknown glyph
-// with the UNKOWN_CHARACTER. Once any unknown glph is found, the rest
-// of the data may not be recovered.
-LL_COMMON_API std::string rawstr_to_utf8(const std::string& raw);
-
-//
-// We should never use UTF16 except when communicating with Win32!
-//
-typedef std::basic_string<U16> llutf16string;
-
-LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len);
-LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str);
-
-LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str, S32 len);
-LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str);
-
-LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str, S32 len);
-LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str );
-
-LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str, S32 len);
-LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str);
-// Same function, better name. JC
-inline LLWString utf8string_to_wstring(const std::string& utf8_string) { return utf8str_to_wstring(utf8_string); }
-
-//
-LL_COMMON_API S32 wchar_to_utf8chars(llwchar inchar, char* outchars);
-
-LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str, S32 len);
-LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str);
-
-LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str, S32 len);
-LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str);
-
-// Length of this UTF32 string in bytes when transformed to UTF8
-LL_COMMON_API S32 wstring_utf8_length(const LLWString& wstr);
-
-// Length in bytes of this wide char in a UTF8 string
-LL_COMMON_API S32 wchar_utf8_length(const llwchar wc);
-
-LL_COMMON_API std::string utf8str_tolower(const std::string& utf8str);
-
-// Length in llwchar (UTF-32) of the first len units (16 bits) of the given UTF-16 string.
-LL_COMMON_API S32 utf16str_wstring_length(const llutf16string &utf16str, S32 len);
-
-// Length in utf16string (UTF-16) of wlen wchars beginning at woffset.
-LL_COMMON_API S32 wstring_utf16_length(const LLWString & wstr, S32 woffset, S32 wlen);
-
-// Length in wstring (i.e., llwchar count) of a part of a wstring specified by utf16 length (i.e., utf16 units.)
-LL_COMMON_API S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset, S32 utf16_length, BOOL *unaligned = NULL);
-
-/**
- * @brief Properly truncate a utf8 string to a maximum byte count.
- *
- * The returned string may be less than max_len if the truncation
- * happens in the middle of a glyph. If max_len is longer than the
- * string passed in, the return value == utf8str.
- * @param utf8str A valid utf8 string to truncate.
- * @param max_len The maximum number of bytes in the return value.
- * @return Returns a valid utf8 string with byte count <= max_len.
- */
-LL_COMMON_API std::string utf8str_truncate(const std::string& utf8str, const S32 max_len);
-
-LL_COMMON_API std::string utf8str_trim(const std::string& utf8str);
-
-LL_COMMON_API S32 utf8str_compare_insensitive(
- const std::string& lhs,
- const std::string& rhs);
-
-/**
- * @brief Replace all occurences of target_char with replace_char
- *
- * @param utf8str A utf8 string to process.
- * @param target_char The wchar to be replaced
- * @param replace_char The wchar which is written on replace
- */
-LL_COMMON_API std::string utf8str_substChar(
- const std::string& utf8str,
- const llwchar target_char,
- const llwchar replace_char);
-
-LL_COMMON_API std::string utf8str_makeASCII(const std::string& utf8str);
-
-// Hack - used for evil notecards.
-LL_COMMON_API std::string mbcsstring_makeASCII(const std::string& str);
-
-LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str);
-
-
-#if LL_WINDOWS
-/* @name Windows string helpers
- */
-//@{
-
-/**
- * @brief Implementation the expected snprintf interface.
- *
- * If the size of the passed in buffer is not large enough to hold the string,
- * two bad things happen:
- * 1. resulting formatted string is NOT null terminated
- * 2. Depending on the platform, the return value could be a) the required
- * size of the buffer to copy the entire formatted string or b) -1.
- * On Windows with VS.Net 2003, it returns -1 e.g.
- *
- * safe_snprintf always adds a NULL terminator so that the caller does not
- * need to check for return value or need to add the NULL terminator.
- * It does not, however change the return value - to let the caller know
- * that the passed in buffer size was not large enough to hold the
- * formatted string.
- *
- */
-
-// Deal with the differeneces on Windows
-namespace snprintf_hack
-{
- LL_COMMON_API int snprintf(char *str, size_t size, const char *format, ...);
-}
-
-using snprintf_hack::snprintf;
-
-/**
- * @brief Convert a wide string to std::string
- *
- * This replaces the unsafe W2A macro from ATL.
- */
-LL_COMMON_API std::string ll_convert_wide_to_string(const wchar_t* in);
-
-//@}
-#endif // LL_WINDOWS
-
-/**
- * Many of the 'strip' and 'replace' methods of LLStringUtilBase need
- * specialization to work with the signed char type.
- * Sadly, it is not possible (AFAIK) to specialize a single method of
- * a template class.
- * That stuff should go here.
- */
-namespace LLStringFn
-{
- /**
- * @brief Replace all non-printable characters with replacement in
- * string.
- * NOTE - this will zap non-ascii
- *
- * @param [in,out] string the to modify. out value is the string
- * with zero non-printable characters.
- * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
- */
- LL_COMMON_API void replace_nonprintable_in_ascii(
- std::basic_string<char>& string,
- char replacement);
-
-
- /**
- * @brief Replace all non-printable characters and pipe characters
- * with replacement in a string.
- * NOTE - this will zap non-ascii
- *
- * @param [in,out] the string to modify. out value is the string
- * with zero non-printable characters and zero pipe characters.
- * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
- */
- LL_COMMON_API void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str,
- char replacement);
-
-
- /**
- * @brief Remove all characters that are not allowed in XML 1.0.
- * Returns a copy of the string with those characters removed.
- * Works with US ASCII and UTF-8 encoded strings. JC
- */
- LL_COMMON_API std::string strip_invalid_xml(const std::string& input);
-
-
- /**
- * @brief Replace all control characters (0 <= c < 0x20) with replacement in
- * string. This is safe for utf-8
- *
- * @param [in,out] string the to modify. out value is the string
- * with zero non-printable characters.
- * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
- */
- LL_COMMON_API void replace_ascii_controlchars(
- std::basic_string<char>& string,
- char replacement);
-}
-
-////////////////////////////////////////////////////////////
-// NOTE: LLStringUtil::format, getTokens, and support functions moved to llstring.cpp.
-// There is no LLWStringUtil::format implementation currently.
-// Calling thse for anything other than LLStringUtil will produce link errors.
-
-////////////////////////////////////////////////////////////
-
-
-// static
-template<class T>
-S32 LLStringUtilBase<T>::compareStrings(const T* lhs, const T* rhs)
-{
- S32 result;
- if( lhs == rhs )
- {
- result = 0;
- }
- else
- if ( !lhs || !lhs[0] )
- {
- result = ((!rhs || !rhs[0]) ? 0 : 1);
- }
- else
- if ( !rhs || !rhs[0])
- {
- result = -1;
- }
- else
- {
- result = LLStringOps::collate(lhs, rhs);
- }
- return result;
-}
-
-//static
-template<class T>
-S32 LLStringUtilBase<T>::compareStrings(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs)
-{
- return LLStringOps::collate(lhs.c_str(), rhs.c_str());
-}
-
-// static
-template<class T>
-S32 LLStringUtilBase<T>::compareInsensitive(const T* lhs, const T* rhs )
-{
- S32 result;
- if( lhs == rhs )
- {
- result = 0;
- }
- else
- if ( !lhs || !lhs[0] )
- {
- result = ((!rhs || !rhs[0]) ? 0 : 1);
- }
- else
- if ( !rhs || !rhs[0] )
- {
- result = -1;
- }
- else
- {
- std::basic_string<T> lhs_string(lhs);
- std::basic_string<T> rhs_string(rhs);
- LLStringUtilBase<T>::toUpper(lhs_string);
- LLStringUtilBase<T>::toUpper(rhs_string);
- result = LLStringOps::collate(lhs_string.c_str(), rhs_string.c_str());
- }
- return result;
-}
-
-//static
-template<class T>
-S32 LLStringUtilBase<T>::compareInsensitive(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs)
-{
- std::basic_string<T> lhs_string(lhs);
- std::basic_string<T> rhs_string(rhs);
- LLStringUtilBase<T>::toUpper(lhs_string);
- LLStringUtilBase<T>::toUpper(rhs_string);
- return LLStringOps::collate(lhs_string.c_str(), rhs_string.c_str());
-}
-
-// Case sensitive comparison with good handling of numbers. Does not use current locale.
-// a.k.a. strdictcmp()
-
-//static
-template<class T>
-S32 LLStringUtilBase<T>::compareDict(const std::basic_string<T>& astr, const std::basic_string<T>& bstr)
-{
- const T* a = astr.c_str();
- const T* b = bstr.c_str();
- T ca, cb;
- S32 ai, bi, cnt = 0;
- S32 bias = 0;
-
- ca = *(a++);
- cb = *(b++);
- while( ca && cb ){
- if( bias==0 ){
- if( LLStringOps::isUpper(ca) ){ ca = LLStringOps::toLower(ca); bias--; }
- if( LLStringOps::isUpper(cb) ){ cb = LLStringOps::toLower(cb); bias++; }
- }else{
- if( LLStringOps::isUpper(ca) ){ ca = LLStringOps::toLower(ca); }
- if( LLStringOps::isUpper(cb) ){ cb = LLStringOps::toLower(cb); }
- }
- if( LLStringOps::isDigit(ca) ){
- if( cnt-->0 ){
- if( cb!=ca ) break;
- }else{
- if( !LLStringOps::isDigit(cb) ) break;
- for(ai=0; LLStringOps::isDigit(a[ai]); ai++);
- for(bi=0; LLStringOps::isDigit(b[bi]); bi++);
- if( ai<bi ){ ca=0; break; }
- if( bi<ai ){ cb=0; break; }
- if( ca!=cb ) break;
- cnt = ai;
- }
- }else if( ca!=cb ){ break;
- }
- ca = *(a++);
- cb = *(b++);
- }
- if( ca==cb ) ca += bias;
- return ca-cb;
-}
-
-// static
-template<class T>
-S32 LLStringUtilBase<T>::compareDictInsensitive(const std::basic_string<T>& astr, const std::basic_string<T>& bstr)
-{
- const T* a = astr.c_str();
- const T* b = bstr.c_str();
- T ca, cb;
- S32 ai, bi, cnt = 0;
-
- ca = *(a++);
- cb = *(b++);
- while( ca && cb ){
- if( LLStringOps::isUpper(ca) ){ ca = LLStringOps::toLower(ca); }
- if( LLStringOps::isUpper(cb) ){ cb = LLStringOps::toLower(cb); }
- if( LLStringOps::isDigit(ca) ){
- if( cnt-->0 ){
- if( cb!=ca ) break;
- }else{
- if( !LLStringOps::isDigit(cb) ) break;
- for(ai=0; LLStringOps::isDigit(a[ai]); ai++);
- for(bi=0; LLStringOps::isDigit(b[bi]); bi++);
- if( ai<bi ){ ca=0; break; }
- if( bi<ai ){ cb=0; break; }
- if( ca!=cb ) break;
- cnt = ai;
- }
- }else if( ca!=cb ){ break;
- }
- ca = *(a++);
- cb = *(b++);
- }
- return ca-cb;
-}
-
-// Puts compareDict() in a form appropriate for LL container classes to use for sorting.
-// static
-template<class T>
-BOOL LLStringUtilBase<T>::precedesDict( const std::basic_string<T>& a, const std::basic_string<T>& b )
-{
- if( a.size() && b.size() )
- {
- return (LLStringUtilBase<T>::compareDict(a.c_str(), b.c_str()) < 0);
- }
- else
- {
- return (!b.empty());
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::toUpper(std::basic_string<T>& string)
-{
- if( !string.empty() )
- {
- std::transform(
- string.begin(),
- string.end(),
- string.begin(),
- (T(*)(T)) &LLStringOps::toUpper);
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::toLower(std::basic_string<T>& string)
-{
- if( !string.empty() )
- {
- std::transform(
- string.begin(),
- string.end(),
- string.begin(),
- (T(*)(T)) &LLStringOps::toLower);
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::trimHead(std::basic_string<T>& string)
-{
- if( !string.empty() )
- {
- size_type i = 0;
- while( i < string.length() && LLStringOps::isSpace( string[i] ) )
- {
- i++;
- }
- string.erase(0, i);
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::trimTail(std::basic_string<T>& string)
-{
- if( string.size() )
- {
- size_type len = string.length();
- size_type i = len;
- while( i > 0 && LLStringOps::isSpace( string[i-1] ) )
- {
- i--;
- }
-
- string.erase( i, len - i );
- }
-}
-
-
-// Replace line feeds with carriage return-line feed pairs.
-//static
-template<class T>
-void LLStringUtilBase<T>::addCRLF(std::basic_string<T>& string)
-{
- const T LF = 10;
- const T CR = 13;
-
- // Count the number of line feeds
- size_type count = 0;
- size_type len = string.size();
- size_type i;
- for( i = 0; i < len; i++ )
- {
- if( string[i] == LF )
- {
- count++;
- }
- }
-
- // Insert a carriage return before each line feed
- if( count )
- {
- size_type size = len + count;
- T *t = new T[size];
- size_type j = 0;
- for( i = 0; i < len; ++i )
- {
- if( string[i] == LF )
- {
- t[j] = CR;
- ++j;
- }
- t[j] = string[i];
- ++j;
- }
-
- string.assign(t, size);
- }
-}
-
-// Remove all carriage returns
-//static
-template<class T>
-void LLStringUtilBase<T>::removeCRLF(std::basic_string<T>& string)
-{
- const T CR = 13;
-
- size_type cr_count = 0;
- size_type len = string.size();
- size_type i;
- for( i = 0; i < len - cr_count; i++ )
- {
- if( string[i+cr_count] == CR )
- {
- cr_count++;
- }
-
- string[i] = string[i+cr_count];
- }
- string.erase(i, cr_count);
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::replaceChar( std::basic_string<T>& string, T target, T replacement )
-{
- size_type found_pos = 0;
- while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos )
- {
- string[found_pos] = replacement;
- found_pos++; // avoid infinite defeat if target == replacement
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement )
-{
- size_type found_pos = 0;
- while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos )
- {
- string.replace( found_pos, target.length(), replacement );
- found_pos += replacement.length(); // avoid infinite defeat if replacement contains target
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::replaceNonstandardASCII( std::basic_string<T>& string, T replacement )
-{
- const char LF = 10;
- const S8 MIN = 32;
-// const S8 MAX = 127;
-
- size_type len = string.size();
- for( size_type i = 0; i < len; i++ )
- {
- // No need to test MAX < mText[i] because we treat mText[i] as a signed char,
- // which has a max value of 127.
- if( ( S8(string[i]) < MIN ) && (string[i] != LF) )
- {
- string[i] = replacement;
- }
- }
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::replaceTabsWithSpaces( std::basic_string<T>& str, size_type spaces_per_tab )
-{
- const T TAB = '\t';
- const T SPACE = ' ';
-
- std::basic_string<T> out_str;
- // Replace tabs with spaces
- for (size_type i = 0; i < str.length(); i++)
- {
- if (str[i] == TAB)
- {
- for (size_type j = 0; j < spaces_per_tab; j++)
- out_str += SPACE;
- }
- else
- {
- out_str += str[i];
- }
- }
- str = out_str;
-}
-
-//static
-template<class T>
-BOOL LLStringUtilBase<T>::containsNonprintable(const std::basic_string<T>& string)
-{
- const char MIN = 32;
- BOOL rv = FALSE;
- for (size_type i = 0; i < string.size(); i++)
- {
- if(string[i] < MIN)
- {
- rv = TRUE;
- break;
- }
- }
- return rv;
-}
-
-//static
-template<class T>
-void LLStringUtilBase<T>::stripNonprintable(std::basic_string<T>& string)
-{
- const char MIN = 32;
- size_type j = 0;
- if (string.empty())
- {
- return;
- }
- size_t src_size = string.size();
- char* c_string = new char[src_size + 1];
- if(c_string == NULL)
- {
- return;
- }
- copy(c_string, string.c_str(), src_size+1);
- char* write_head = &c_string[0];
- for (size_type i = 0; i < src_size; i++)
- {
- char* read_head = &string[i];
- write_head = &c_string[j];
- if(!(*read_head < MIN))
- {
- *write_head = *read_head;
- ++j;
- }
- }
- c_string[j]= '\0';
- string = c_string;
- delete []c_string;
-}
-
-template<class T>
-void LLStringUtilBase<T>::_makeASCII(std::basic_string<T>& string)
-{
- // Replace non-ASCII chars with LL_UNKNOWN_CHAR
- for (size_type i = 0; i < string.length(); i++)
- {
- if (string[i] > 0x7f)
- {
- string[i] = LL_UNKNOWN_CHAR;
- }
- }
-}
-
-// static
-template<class T>
-void LLStringUtilBase<T>::copy( T* dst, const T* src, size_type dst_size )
-{
- if( dst_size > 0 )
- {
- size_type min_len = 0;
- if( src )
- {
- min_len = llmin( dst_size - 1, strlen( src ) ); /* Flawfinder: ignore */
- memcpy(dst, src, min_len * sizeof(T)); /* Flawfinder: ignore */
- }
- dst[min_len] = '\0';
- }
-}
-
-// static
-template<class T>
-void LLStringUtilBase<T>::copyInto(std::basic_string<T>& dst, const std::basic_string<T>& src, size_type offset)
-{
- if ( offset == dst.length() )
- {
- // special case - append to end of string and avoid expensive
- // (when strings are large) string manipulations
- dst += src;
- }
- else
- {
- std::basic_string<T> tail = dst.substr(offset);
-
- dst = dst.substr(0, offset);
- dst += src;
- dst += tail;
- };
-}
-
-// True if this is the head of s.
-//static
-template<class T>
-BOOL LLStringUtilBase<T>::isHead( const std::basic_string<T>& string, const T* s )
-{
- if( string.empty() )
- {
- // Early exit
- return FALSE;
- }
- else
- {
- return (strncmp( s, string.c_str(), string.size() ) == 0);
- }
-}
-
-// static
-template<class T>
-bool LLStringUtilBase<T>::startsWith(
- const std::basic_string<T>& string,
- const std::basic_string<T>& substr)
-{
- if(string.empty() || (substr.empty())) return false;
- if(0 == string.find(substr)) return true;
- return false;
-}
-
-// static
-template<class T>
-bool LLStringUtilBase<T>::endsWith(
- const std::basic_string<T>& string,
- const std::basic_string<T>& substr)
-{
- if(string.empty() || (substr.empty())) return false;
- std::string::size_type idx = string.rfind(substr);
- if(std::string::npos == idx) return false;
- return (idx == (string.size() - substr.size()));
-}
-
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToBOOL(const std::basic_string<T>& string, BOOL& value)
-{
- if( string.empty() )
- {
- return FALSE;
- }
-
- std::basic_string<T> temp( string );
- trim(temp);
- if(
- (temp == "1") ||
- (temp == "T") ||
- (temp == "t") ||
- (temp == "TRUE") ||
- (temp == "true") ||
- (temp == "True") )
- {
- value = TRUE;
- return TRUE;
- }
- else
- if(
- (temp == "0") ||
- (temp == "F") ||
- (temp == "f") ||
- (temp == "FALSE") ||
- (temp == "false") ||
- (temp == "False") )
- {
- value = FALSE;
- return TRUE;
- }
-
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToU8(const std::basic_string<T>& string, U8& value)
-{
- S32 value32 = 0;
- BOOL success = convertToS32(string, value32);
- if( success && (U8_MIN <= value32) && (value32 <= U8_MAX) )
- {
- value = (U8) value32;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToS8(const std::basic_string<T>& string, S8& value)
-{
- S32 value32 = 0;
- BOOL success = convertToS32(string, value32);
- if( success && (S8_MIN <= value32) && (value32 <= S8_MAX) )
- {
- value = (S8) value32;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToS16(const std::basic_string<T>& string, S16& value)
-{
- S32 value32 = 0;
- BOOL success = convertToS32(string, value32);
- if( success && (S16_MIN <= value32) && (value32 <= S16_MAX) )
- {
- value = (S16) value32;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToU16(const std::basic_string<T>& string, U16& value)
-{
- S32 value32 = 0;
- BOOL success = convertToS32(string, value32);
- if( success && (U16_MIN <= value32) && (value32 <= U16_MAX) )
- {
- value = (U16) value32;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToU32(const std::basic_string<T>& string, U32& value)
-{
- if( string.empty() )
- {
- return FALSE;
- }
-
- std::basic_string<T> temp( string );
- trim(temp);
- U32 v;
- std::basic_istringstream<T> i_stream((std::basic_string<T>)temp);
- if(i_stream >> v)
- {
- value = v;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToS32(const std::basic_string<T>& string, S32& value)
-{
- if( string.empty() )
- {
- return FALSE;
- }
-
- std::basic_string<T> temp( string );
- trim(temp);
- S32 v;
- std::basic_istringstream<T> i_stream((std::basic_string<T>)temp);
- if(i_stream >> v)
- {
- //TODO: figure out overflow and underflow reporting here
- //if((LONG_MAX == v) || (LONG_MIN == v))
- //{
- // // Underflow or overflow
- // return FALSE;
- //}
-
- value = v;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToF32(const std::basic_string<T>& string, F32& value)
-{
- F64 value64 = 0.0;
- BOOL success = convertToF64(string, value64);
- if( success && (-F32_MAX <= value64) && (value64 <= F32_MAX) )
- {
- value = (F32) value64;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-BOOL LLStringUtilBase<T>::convertToF64(const std::basic_string<T>& string, F64& value)
-{
- if( string.empty() )
- {
- return FALSE;
- }
-
- std::basic_string<T> temp( string );
- trim(temp);
- F64 v;
- std::basic_istringstream<T> i_stream((std::basic_string<T>)temp);
- if(i_stream >> v)
- {
- //TODO: figure out overflow and underflow reporting here
- //if( ((-HUGE_VAL == v) || (HUGE_VAL == v))) )
- //{
- // // Underflow or overflow
- // return FALSE;
- //}
-
- value = v;
- return TRUE;
- }
- return FALSE;
-}
-
-template<class T>
-void LLStringUtilBase<T>::truncate(std::basic_string<T>& string, size_type count)
-{
- size_type cur_size = string.size();
- string.resize(count < cur_size ? count : cur_size);
-}
-
-#endif // LL_STRING_H
+/**
+ * @file llstring.h
+ * @brief String utility functions and std::string class.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLSTRING_H
+#define LL_LLSTRING_H
+
+#include <string>
+#include <cstdio>
+#include <locale>
+#include <iomanip>
+#include "llsd.h"
+#include "llfasttimer.h"
+
+#if LL_LINUX || LL_SOLARIS
+#include <wctype.h>
+#include <wchar.h>
+#endif
+
+#include <string.h>
+
+#if LL_SOLARIS
+// stricmp and strnicmp do not exist on Solaris:
+#define stricmp strcasecmp
+#define strnicmp strncasecmp
+#endif
+
+const char LL_UNKNOWN_CHAR = '?';
+
+#if LL_DARWIN || LL_LINUX || LL_SOLARIS
+// Template specialization of char_traits for U16s. Only necessary on Mac and Linux (exists on Windows already)
+#include <cstring>
+
+namespace std
+{
+template<>
+struct char_traits<U16>
+{
+ typedef U16 char_type;
+ typedef int int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ { return memcmp(__s1, __s2, __n * sizeof(char_type)); }
+
+ static size_t
+ length(const char_type* __s)
+ {
+ const char_type *cur_char = __s;
+ while (*cur_char != 0)
+ {
+ ++cur_char;
+ }
+ return cur_char - __s;
+ }
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ { return static_cast<const char_type*>(memchr(__s, __a, __n * sizeof(char_type))); }
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast<char_type*>(memmove(__s1, __s2, __n * sizeof(char_type))); }
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast<char_type*>(memcpy(__s1, __s2, __n * sizeof(char_type))); } /* Flawfinder: ignore */
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ {
+ // This isn't right.
+ //return static_cast<char_type*>(memset(__s, __a, __n * sizeof(char_type)));
+
+ // I don't think there's a standard 'memset' for 16-bit values.
+ // Do this the old-fashioned way.
+
+ size_t __i;
+ for(__i = 0; __i < __n; __i++)
+ {
+ __s[__i] = __a;
+ }
+ return __s;
+ }
+
+ static char_type
+ to_char_type(const int_type& __c)
+ { return static_cast<char_type>(__c); }
+
+ static int_type
+ to_int_type(const char_type& __c)
+ { return static_cast<int_type>(__c); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof() { return static_cast<int_type>(EOF); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return (__c == eof()) ? 0 : __c; }
+ };
+};
+#endif
+
+class LL_COMMON_API LLStringOps
+{
+private:
+ static long sPacificTimeOffset;
+ static long sLocalTimeOffset;
+ static bool sPacificDaylightTime;
+ static std::map<std::string, std::string> datetimeToCodes;
+
+public:
+ static char toUpper(char elem) { return toupper((unsigned char)elem); }
+ static llwchar toUpper(llwchar elem) { return towupper(elem); }
+
+ static char toLower(char elem) { return tolower((unsigned char)elem); }
+ static llwchar toLower(llwchar elem) { return towlower(elem); }
+
+ static bool isSpace(char elem) { return isspace((unsigned char)elem) != 0; }
+ static bool isSpace(llwchar elem) { return iswspace(elem) != 0; }
+
+ static bool isUpper(char elem) { return isupper((unsigned char)elem) != 0; }
+ static bool isUpper(llwchar elem) { return iswupper(elem) != 0; }
+
+ static bool isLower(char elem) { return islower((unsigned char)elem) != 0; }
+ static bool isLower(llwchar elem) { return iswlower(elem) != 0; }
+
+ static bool isDigit(char a) { return isdigit((unsigned char)a) != 0; }
+ static bool isDigit(llwchar a) { return iswdigit(a) != 0; }
+
+ static bool isPunct(char a) { return ispunct((unsigned char)a) != 0; }
+ static bool isPunct(llwchar a) { return iswpunct(a) != 0; }
+
+ static bool isAlnum(char a) { return isalnum((unsigned char)a) != 0; }
+ static bool isAlnum(llwchar a) { return iswalnum(a) != 0; }
+
+ static S32 collate(const char* a, const char* b) { return strcoll(a, b); }
+ static S32 collate(const llwchar* a, const llwchar* b);
+
+ static void setupDatetimeInfo(bool pacific_daylight_time);
+ static long getPacificTimeOffset(void) { return sPacificTimeOffset;}
+ static long getLocalTimeOffset(void) { return sLocalTimeOffset;}
+ // Is the Pacific time zone (aka server time zone)
+ // currently in daylight savings time?
+ static bool getPacificDaylightTime(void) { return sPacificDaylightTime;}
+
+ static std::string getDatetimeCode (std::string key);
+};
+
+/**
+ * @brief Return a string constructed from in without crashing if the
+ * pointer is NULL.
+ */
+LL_COMMON_API std::string ll_safe_string(const char* in);
+LL_COMMON_API std::string ll_safe_string(const char* in, S32 maxlen);
+
+
+// Allowing assignments from non-strings into format_map_t is apparently
+// *really* error-prone, so subclass std::string with just basic c'tors.
+class LLFormatMapString
+{
+public:
+ LLFormatMapString() {};
+ LLFormatMapString(const char* s) : mString(ll_safe_string(s)) {};
+ LLFormatMapString(const std::string& s) : mString(s) {};
+ operator std::string() const { return mString; }
+ bool operator<(const LLFormatMapString& rhs) const { return mString < rhs.mString; }
+ std::size_t length() const { return mString.length(); }
+
+private:
+ std::string mString;
+};
+
+template <class T>
+class LLStringUtilBase
+{
+private:
+ static std::string sLocale;
+
+public:
+ typedef typename std::basic_string<T>::size_type size_type;
+
+public:
+ /////////////////////////////////////////////////////////////////////////////////////////
+ // Static Utility functions that operate on std::strings
+
+ static std::basic_string<T> null;
+
+ typedef std::map<LLFormatMapString, LLFormatMapString> format_map_t;
+ LL_COMMON_API static void getTokens(const std::basic_string<T>& instr, std::vector<std::basic_string<T> >& tokens, const std::basic_string<T>& delims);
+ LL_COMMON_API static void formatNumber(std::basic_string<T>& numStr, std::basic_string<T> decimals);
+ LL_COMMON_API static bool formatDatetime(std::basic_string<T>& replacement, std::basic_string<T> token, std::basic_string<T> param, S32 secFromEpoch);
+ LL_COMMON_API static S32 format(std::basic_string<T>& s, const format_map_t& substitutions);
+ LL_COMMON_API static S32 format(std::basic_string<T>& s, const LLSD& substitutions);
+ LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const format_map_t& substitutions);
+ LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const LLSD& substitutions);
+ static void setLocale (std::string inLocale) {sLocale = inLocale;};
+ static std::string getLocale (void) {return sLocale;};
+
+ static bool isValidIndex(const std::basic_string<T>& string, size_type i)
+ {
+ return !string.empty() && (0 <= i) && (i <= string.size());
+ }
+
+ static void trimHead(std::basic_string<T>& string);
+ static void trimTail(std::basic_string<T>& string);
+ static void trim(std::basic_string<T>& string) { trimHead(string); trimTail(string); }
+ static void truncate(std::basic_string<T>& string, size_type count);
+
+ static void toUpper(std::basic_string<T>& string);
+ static void toLower(std::basic_string<T>& string);
+
+ // True if this is the head of s.
+ static BOOL isHead( const std::basic_string<T>& string, const T* s );
+
+ /**
+ * @brief Returns true if string starts with substr
+ *
+ * If etither string or substr are empty, this method returns false.
+ */
+ static bool startsWith(
+ const std::basic_string<T>& string,
+ const std::basic_string<T>& substr);
+
+ /**
+ * @brief Returns true if string ends in substr
+ *
+ * If etither string or substr are empty, this method returns false.
+ */
+ static bool endsWith(
+ const std::basic_string<T>& string,
+ const std::basic_string<T>& substr);
+
+ static void addCRLF(std::basic_string<T>& string);
+ static void removeCRLF(std::basic_string<T>& string);
+
+ static void replaceTabsWithSpaces( std::basic_string<T>& string, size_type spaces_per_tab );
+ static void replaceNonstandardASCII( std::basic_string<T>& string, T replacement );
+ static void replaceChar( std::basic_string<T>& string, T target, T replacement );
+ static void replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement );
+
+ static BOOL containsNonprintable(const std::basic_string<T>& string);
+ static void stripNonprintable(std::basic_string<T>& string);
+
+ /**
+ * @brief Unsafe way to make ascii characters. You should probably
+ * only call this when interacting with the host operating system.
+ * The 1 byte std::string does not work correctly.
+ * The 2 and 4 byte std::string probably work, so LLWStringUtil::_makeASCII
+ * should work.
+ */
+ static void _makeASCII(std::basic_string<T>& string);
+
+ // Conversion to other data types
+ static BOOL convertToBOOL(const std::basic_string<T>& string, BOOL& value);
+ static BOOL convertToU8(const std::basic_string<T>& string, U8& value);
+ static BOOL convertToS8(const std::basic_string<T>& string, S8& value);
+ static BOOL convertToS16(const std::basic_string<T>& string, S16& value);
+ static BOOL convertToU16(const std::basic_string<T>& string, U16& value);
+ static BOOL convertToU32(const std::basic_string<T>& string, U32& value);
+ static BOOL convertToS32(const std::basic_string<T>& string, S32& value);
+ static BOOL convertToF32(const std::basic_string<T>& string, F32& value);
+ static BOOL convertToF64(const std::basic_string<T>& string, F64& value);
+
+ /////////////////////////////////////////////////////////////////////////////////////////
+ // Utility functions for working with char*'s and strings
+
+ // Like strcmp but also handles empty strings. Uses
+ // current locale.
+ static S32 compareStrings(const T* lhs, const T* rhs);
+ static S32 compareStrings(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs);
+
+ // case insensitive version of above. Uses current locale on
+ // Win32, and falls back to a non-locale aware comparison on
+ // Linux.
+ static S32 compareInsensitive(const T* lhs, const T* rhs);
+ static S32 compareInsensitive(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs);
+
+ // Case sensitive comparison with good handling of numbers. Does not use current locale.
+ // a.k.a. strdictcmp()
+ static S32 compareDict(const std::basic_string<T>& a, const std::basic_string<T>& b);
+
+ // Case *in*sensitive comparison with good handling of numbers. Does not use current locale.
+ // a.k.a. strdictcmp()
+ static S32 compareDictInsensitive(const std::basic_string<T>& a, const std::basic_string<T>& b);
+
+ // Puts compareDict() in a form appropriate for LL container classes to use for sorting.
+ static BOOL precedesDict( const std::basic_string<T>& a, const std::basic_string<T>& b );
+
+ // A replacement for strncpy.
+ // If the dst buffer is dst_size bytes long or more, ensures that dst is null terminated and holds
+ // up to dst_size-1 characters of src.
+ static void copy(T* dst, const T* src, size_type dst_size);
+
+ // Copies src into dst at a given offset.
+ static void copyInto(std::basic_string<T>& dst, const std::basic_string<T>& src, size_type offset);
+
+ static bool isPartOfWord(T c) { return (c == (T)'_') || LLStringOps::isAlnum(c); }
+
+
+#ifdef _DEBUG
+ LL_COMMON_API static void testHarness();
+#endif
+
+private:
+ LL_COMMON_API static size_type getSubstitution(const std::basic_string<T>& instr, size_type& start, std::vector<std::basic_string<T> >& tokens);
+};
+
+template<class T> std::basic_string<T> LLStringUtilBase<T>::null;
+template<class T> std::string LLStringUtilBase<T>::sLocale;
+
+typedef LLStringUtilBase<char> LLStringUtil;
+typedef LLStringUtilBase<llwchar> LLWStringUtil;
+typedef std::basic_string<llwchar> LLWString;
+
+//@ Use this where we want to disallow input in the form of "foo"
+// This is used to catch places where english text is embedded in the code
+// instead of in a translatable XUI file.
+class LLStringExplicit : public std::string
+{
+public:
+ explicit LLStringExplicit(const char* s) : std::string(s) {}
+ LLStringExplicit(const std::string& s) : std::string(s) {}
+ LLStringExplicit(const std::string& s, size_type pos, size_type n = std::string::npos) : std::string(s, pos, n) {}
+};
+
+struct LLDictionaryLess
+{
+public:
+ bool operator()(const std::string& a, const std::string& b)
+ {
+ return (LLStringUtil::precedesDict(a, b) ? true : false);
+ }
+};
+
+
+/**
+ * Simple support functions
+ */
+
+/**
+ * @brief chop off the trailing characters in a string.
+ *
+ * This function works on bytes rather than glyphs, so this will
+ * incorrectly truncate non-single byte strings.
+ * Use utf8str_truncate() for utf8 strings
+ * @return a copy of in string minus the trailing count bytes.
+ */
+inline std::string chop_tail_copy(
+ const std::string& in,
+ std::string::size_type count)
+{
+ return std::string(in, 0, in.length() - count);
+}
+
+/**
+ * @brief This translates a nybble stored as a hex value from 0-f back
+ * to a nybble in the low order bits of the return byte.
+ */
+LL_COMMON_API U8 hex_as_nybble(char hex);
+
+/**
+ * @brief read the contents of a file into a string.
+ *
+ * Since this function has no concept of character encoding, most
+ * anything you do with this method ill-advised. Please avoid.
+ * @param str [out] The string which will have.
+ * @param filename The full name of the file to read.
+ * @return Returns true on success. If false, str is unmodified.
+ */
+LL_COMMON_API bool _read_file_into_string(std::string& str, const std::string& filename);
+LL_COMMON_API bool iswindividual(llwchar elem);
+
+/**
+ * Unicode support
+ */
+
+// Make the incoming string a utf8 string. Replaces any unknown glyph
+// with the UNKOWN_CHARACTER. Once any unknown glph is found, the rest
+// of the data may not be recovered.
+LL_COMMON_API std::string rawstr_to_utf8(const std::string& raw);
+
+//
+// We should never use UTF16 except when communicating with Win32!
+//
+typedef std::basic_string<U16> llutf16string;
+
+LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len);
+LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str);
+
+LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str, S32 len);
+LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str);
+
+LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str, S32 len);
+LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str );
+
+LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str, S32 len);
+LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str);
+// Same function, better name. JC
+inline LLWString utf8string_to_wstring(const std::string& utf8_string) { return utf8str_to_wstring(utf8_string); }
+
+//
+LL_COMMON_API S32 wchar_to_utf8chars(llwchar inchar, char* outchars);
+
+LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str, S32 len);
+LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str);
+
+LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str, S32 len);
+LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str);
+
+// Length of this UTF32 string in bytes when transformed to UTF8
+LL_COMMON_API S32 wstring_utf8_length(const LLWString& wstr);
+
+// Length in bytes of this wide char in a UTF8 string
+LL_COMMON_API S32 wchar_utf8_length(const llwchar wc);
+
+LL_COMMON_API std::string utf8str_tolower(const std::string& utf8str);
+
+// Length in llwchar (UTF-32) of the first len units (16 bits) of the given UTF-16 string.
+LL_COMMON_API S32 utf16str_wstring_length(const llutf16string &utf16str, S32 len);
+
+// Length in utf16string (UTF-16) of wlen wchars beginning at woffset.
+LL_COMMON_API S32 wstring_utf16_length(const LLWString & wstr, S32 woffset, S32 wlen);
+
+// Length in wstring (i.e., llwchar count) of a part of a wstring specified by utf16 length (i.e., utf16 units.)
+LL_COMMON_API S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset, S32 utf16_length, BOOL *unaligned = NULL);
+
+/**
+ * @brief Properly truncate a utf8 string to a maximum byte count.
+ *
+ * The returned string may be less than max_len if the truncation
+ * happens in the middle of a glyph. If max_len is longer than the
+ * string passed in, the return value == utf8str.
+ * @param utf8str A valid utf8 string to truncate.
+ * @param max_len The maximum number of bytes in the return value.
+ * @return Returns a valid utf8 string with byte count <= max_len.
+ */
+LL_COMMON_API std::string utf8str_truncate(const std::string& utf8str, const S32 max_len);
+
+LL_COMMON_API std::string utf8str_trim(const std::string& utf8str);
+
+LL_COMMON_API S32 utf8str_compare_insensitive(
+ const std::string& lhs,
+ const std::string& rhs);
+
+/**
+ * @brief Replace all occurences of target_char with replace_char
+ *
+ * @param utf8str A utf8 string to process.
+ * @param target_char The wchar to be replaced
+ * @param replace_char The wchar which is written on replace
+ */
+LL_COMMON_API std::string utf8str_substChar(
+ const std::string& utf8str,
+ const llwchar target_char,
+ const llwchar replace_char);
+
+LL_COMMON_API std::string utf8str_makeASCII(const std::string& utf8str);
+
+// Hack - used for evil notecards.
+LL_COMMON_API std::string mbcsstring_makeASCII(const std::string& str);
+
+LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str);
+
+
+#if LL_WINDOWS
+/* @name Windows string helpers
+ */
+//@{
+
+/**
+ * @brief Implementation the expected snprintf interface.
+ *
+ * If the size of the passed in buffer is not large enough to hold the string,
+ * two bad things happen:
+ * 1. resulting formatted string is NOT null terminated
+ * 2. Depending on the platform, the return value could be a) the required
+ * size of the buffer to copy the entire formatted string or b) -1.
+ * On Windows with VS.Net 2003, it returns -1 e.g.
+ *
+ * safe_snprintf always adds a NULL terminator so that the caller does not
+ * need to check for return value or need to add the NULL terminator.
+ * It does not, however change the return value - to let the caller know
+ * that the passed in buffer size was not large enough to hold the
+ * formatted string.
+ *
+ */
+
+// Deal with the differeneces on Windows
+namespace snprintf_hack
+{
+ LL_COMMON_API int snprintf(char *str, size_t size, const char *format, ...);
+}
+
+using snprintf_hack::snprintf;
+
+/**
+ * @brief Convert a wide string to std::string
+ *
+ * This replaces the unsafe W2A macro from ATL.
+ */
+LL_COMMON_API std::string ll_convert_wide_to_string(const wchar_t* in);
+
+//@}
+#endif // LL_WINDOWS
+
+/**
+ * Many of the 'strip' and 'replace' methods of LLStringUtilBase need
+ * specialization to work with the signed char type.
+ * Sadly, it is not possible (AFAIK) to specialize a single method of
+ * a template class.
+ * That stuff should go here.
+ */
+namespace LLStringFn
+{
+ /**
+ * @brief Replace all non-printable characters with replacement in
+ * string.
+ * NOTE - this will zap non-ascii
+ *
+ * @param [in,out] string the to modify. out value is the string
+ * with zero non-printable characters.
+ * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
+ */
+ LL_COMMON_API void replace_nonprintable_in_ascii(
+ std::basic_string<char>& string,
+ char replacement);
+
+
+ /**
+ * @brief Replace all non-printable characters and pipe characters
+ * with replacement in a string.
+ * NOTE - this will zap non-ascii
+ *
+ * @param [in,out] the string to modify. out value is the string
+ * with zero non-printable characters and zero pipe characters.
+ * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
+ */
+ LL_COMMON_API void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str,
+ char replacement);
+
+
+ /**
+ * @brief Remove all characters that are not allowed in XML 1.0.
+ * Returns a copy of the string with those characters removed.
+ * Works with US ASCII and UTF-8 encoded strings. JC
+ */
+ LL_COMMON_API std::string strip_invalid_xml(const std::string& input);
+
+
+ /**
+ * @brief Replace all control characters (0 <= c < 0x20) with replacement in
+ * string. This is safe for utf-8
+ *
+ * @param [in,out] string the to modify. out value is the string
+ * with zero non-printable characters.
+ * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
+ */
+ LL_COMMON_API void replace_ascii_controlchars(
+ std::basic_string<char>& string,
+ char replacement);
+}
+
+////////////////////////////////////////////////////////////
+// NOTE: LLStringUtil::format, getTokens, and support functions moved to llstring.cpp.
+// There is no LLWStringUtil::format implementation currently.
+// Calling thse for anything other than LLStringUtil will produce link errors.
+
+////////////////////////////////////////////////////////////
+
+
+// static
+template<class T>
+S32 LLStringUtilBase<T>::compareStrings(const T* lhs, const T* rhs)
+{
+ S32 result;
+ if( lhs == rhs )
+ {
+ result = 0;
+ }
+ else
+ if ( !lhs || !lhs[0] )
+ {
+ result = ((!rhs || !rhs[0]) ? 0 : 1);
+ }
+ else
+ if ( !rhs || !rhs[0])
+ {
+ result = -1;
+ }
+ else
+ {
+ result = LLStringOps::collate(lhs, rhs);
+ }
+ return result;
+}
+
+//static
+template<class T>
+S32 LLStringUtilBase<T>::compareStrings(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs)
+{
+ return LLStringOps::collate(lhs.c_str(), rhs.c_str());
+}
+
+// static
+template<class T>
+S32 LLStringUtilBase<T>::compareInsensitive(const T* lhs, const T* rhs )
+{
+ S32 result;
+ if( lhs == rhs )
+ {
+ result = 0;
+ }
+ else
+ if ( !lhs || !lhs[0] )
+ {
+ result = ((!rhs || !rhs[0]) ? 0 : 1);
+ }
+ else
+ if ( !rhs || !rhs[0] )
+ {
+ result = -1;
+ }
+ else
+ {
+ std::basic_string<T> lhs_string(lhs);
+ std::basic_string<T> rhs_string(rhs);
+ LLStringUtilBase<T>::toUpper(lhs_string);
+ LLStringUtilBase<T>::toUpper(rhs_string);
+ result = LLStringOps::collate(lhs_string.c_str(), rhs_string.c_str());
+ }
+ return result;
+}
+
+//static
+template<class T>
+S32 LLStringUtilBase<T>::compareInsensitive(const std::basic_string<T>& lhs, const std::basic_string<T>& rhs)
+{
+ std::basic_string<T> lhs_string(lhs);
+ std::basic_string<T> rhs_string(rhs);
+ LLStringUtilBase<T>::toUpper(lhs_string);
+ LLStringUtilBase<T>::toUpper(rhs_string);
+ return LLStringOps::collate(lhs_string.c_str(), rhs_string.c_str());
+}
+
+// Case sensitive comparison with good handling of numbers. Does not use current locale.
+// a.k.a. strdictcmp()
+
+//static
+template<class T>
+S32 LLStringUtilBase<T>::compareDict(const std::basic_string<T>& astr, const std::basic_string<T>& bstr)
+{
+ const T* a = astr.c_str();
+ const T* b = bstr.c_str();
+ T ca, cb;
+ S32 ai, bi, cnt = 0;
+ S32 bias = 0;
+
+ ca = *(a++);
+ cb = *(b++);
+ while( ca && cb ){
+ if( bias==0 ){
+ if( LLStringOps::isUpper(ca) ){ ca = LLStringOps::toLower(ca); bias--; }
+ if( LLStringOps::isUpper(cb) ){ cb = LLStringOps::toLower(cb); bias++; }
+ }else{
+ if( LLStringOps::isUpper(ca) ){ ca = LLStringOps::toLower(ca); }
+ if( LLStringOps::isUpper(cb) ){ cb = LLStringOps::toLower(cb); }
+ }
+ if( LLStringOps::isDigit(ca) ){
+ if( cnt-->0 ){
+ if( cb!=ca ) break;
+ }else{
+ if( !LLStringOps::isDigit(cb) ) break;
+ for(ai=0; LLStringOps::isDigit(a[ai]); ai++);
+ for(bi=0; LLStringOps::isDigit(b[bi]); bi++);
+ if( ai<bi ){ ca=0; break; }
+ if( bi<ai ){ cb=0; break; }
+ if( ca!=cb ) break;
+ cnt = ai;
+ }
+ }else if( ca!=cb ){ break;
+ }
+ ca = *(a++);
+ cb = *(b++);
+ }
+ if( ca==cb ) ca += bias;
+ return ca-cb;
+}
+
+// static
+template<class T>
+S32 LLStringUtilBase<T>::compareDictInsensitive(const std::basic_string<T>& astr, const std::basic_string<T>& bstr)
+{
+ const T* a = astr.c_str();
+ const T* b = bstr.c_str();
+ T ca, cb;
+ S32 ai, bi, cnt = 0;
+
+ ca = *(a++);
+ cb = *(b++);
+ while( ca && cb ){
+ if( LLStringOps::isUpper(ca) ){ ca = LLStringOps::toLower(ca); }
+ if( LLStringOps::isUpper(cb) ){ cb = LLStringOps::toLower(cb); }
+ if( LLStringOps::isDigit(ca) ){
+ if( cnt-->0 ){
+ if( cb!=ca ) break;
+ }else{
+ if( !LLStringOps::isDigit(cb) ) break;
+ for(ai=0; LLStringOps::isDigit(a[ai]); ai++);
+ for(bi=0; LLStringOps::isDigit(b[bi]); bi++);
+ if( ai<bi ){ ca=0; break; }
+ if( bi<ai ){ cb=0; break; }
+ if( ca!=cb ) break;
+ cnt = ai;
+ }
+ }else if( ca!=cb ){ break;
+ }
+ ca = *(a++);
+ cb = *(b++);
+ }
+ return ca-cb;
+}
+
+// Puts compareDict() in a form appropriate for LL container classes to use for sorting.
+// static
+template<class T>
+BOOL LLStringUtilBase<T>::precedesDict( const std::basic_string<T>& a, const std::basic_string<T>& b )
+{
+ if( a.size() && b.size() )
+ {
+ return (LLStringUtilBase<T>::compareDict(a.c_str(), b.c_str()) < 0);
+ }
+ else
+ {
+ return (!b.empty());
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::toUpper(std::basic_string<T>& string)
+{
+ if( !string.empty() )
+ {
+ std::transform(
+ string.begin(),
+ string.end(),
+ string.begin(),
+ (T(*)(T)) &LLStringOps::toUpper);
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::toLower(std::basic_string<T>& string)
+{
+ if( !string.empty() )
+ {
+ std::transform(
+ string.begin(),
+ string.end(),
+ string.begin(),
+ (T(*)(T)) &LLStringOps::toLower);
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::trimHead(std::basic_string<T>& string)
+{
+ if( !string.empty() )
+ {
+ size_type i = 0;
+ while( i < string.length() && LLStringOps::isSpace( string[i] ) )
+ {
+ i++;
+ }
+ string.erase(0, i);
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::trimTail(std::basic_string<T>& string)
+{
+ if( string.size() )
+ {
+ size_type len = string.length();
+ size_type i = len;
+ while( i > 0 && LLStringOps::isSpace( string[i-1] ) )
+ {
+ i--;
+ }
+
+ string.erase( i, len - i );
+ }
+}
+
+
+// Replace line feeds with carriage return-line feed pairs.
+//static
+template<class T>
+void LLStringUtilBase<T>::addCRLF(std::basic_string<T>& string)
+{
+ const T LF = 10;
+ const T CR = 13;
+
+ // Count the number of line feeds
+ size_type count = 0;
+ size_type len = string.size();
+ size_type i;
+ for( i = 0; i < len; i++ )
+ {
+ if( string[i] == LF )
+ {
+ count++;
+ }
+ }
+
+ // Insert a carriage return before each line feed
+ if( count )
+ {
+ size_type size = len + count;
+ T *t = new T[size];
+ size_type j = 0;
+ for( i = 0; i < len; ++i )
+ {
+ if( string[i] == LF )
+ {
+ t[j] = CR;
+ ++j;
+ }
+ t[j] = string[i];
+ ++j;
+ }
+
+ string.assign(t, size);
+ }
+}
+
+// Remove all carriage returns
+//static
+template<class T>
+void LLStringUtilBase<T>::removeCRLF(std::basic_string<T>& string)
+{
+ const T CR = 13;
+
+ size_type cr_count = 0;
+ size_type len = string.size();
+ size_type i;
+ for( i = 0; i < len - cr_count; i++ )
+ {
+ if( string[i+cr_count] == CR )
+ {
+ cr_count++;
+ }
+
+ string[i] = string[i+cr_count];
+ }
+ string.erase(i, cr_count);
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::replaceChar( std::basic_string<T>& string, T target, T replacement )
+{
+ size_type found_pos = 0;
+ while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos )
+ {
+ string[found_pos] = replacement;
+ found_pos++; // avoid infinite defeat if target == replacement
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement )
+{
+ size_type found_pos = 0;
+ while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos )
+ {
+ string.replace( found_pos, target.length(), replacement );
+ found_pos += replacement.length(); // avoid infinite defeat if replacement contains target
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::replaceNonstandardASCII( std::basic_string<T>& string, T replacement )
+{
+ const char LF = 10;
+ const S8 MIN = 32;
+// const S8 MAX = 127;
+
+ size_type len = string.size();
+ for( size_type i = 0; i < len; i++ )
+ {
+ // No need to test MAX < mText[i] because we treat mText[i] as a signed char,
+ // which has a max value of 127.
+ if( ( S8(string[i]) < MIN ) && (string[i] != LF) )
+ {
+ string[i] = replacement;
+ }
+ }
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::replaceTabsWithSpaces( std::basic_string<T>& str, size_type spaces_per_tab )
+{
+ const T TAB = '\t';
+ const T SPACE = ' ';
+
+ std::basic_string<T> out_str;
+ // Replace tabs with spaces
+ for (size_type i = 0; i < str.length(); i++)
+ {
+ if (str[i] == TAB)
+ {
+ for (size_type j = 0; j < spaces_per_tab; j++)
+ out_str += SPACE;
+ }
+ else
+ {
+ out_str += str[i];
+ }
+ }
+ str = out_str;
+}
+
+//static
+template<class T>
+BOOL LLStringUtilBase<T>::containsNonprintable(const std::basic_string<T>& string)
+{
+ const char MIN = 32;
+ BOOL rv = FALSE;
+ for (size_type i = 0; i < string.size(); i++)
+ {
+ if(string[i] < MIN)
+ {
+ rv = TRUE;
+ break;
+ }
+ }
+ return rv;
+}
+
+//static
+template<class T>
+void LLStringUtilBase<T>::stripNonprintable(std::basic_string<T>& string)
+{
+ const char MIN = 32;
+ size_type j = 0;
+ if (string.empty())
+ {
+ return;
+ }
+ size_t src_size = string.size();
+ char* c_string = new char[src_size + 1];
+ if(c_string == NULL)
+ {
+ return;
+ }
+ copy(c_string, string.c_str(), src_size+1);
+ char* write_head = &c_string[0];
+ for (size_type i = 0; i < src_size; i++)
+ {
+ char* read_head = &string[i];
+ write_head = &c_string[j];
+ if(!(*read_head < MIN))
+ {
+ *write_head = *read_head;
+ ++j;
+ }
+ }
+ c_string[j]= '\0';
+ string = c_string;
+ delete []c_string;
+}
+
+template<class T>
+void LLStringUtilBase<T>::_makeASCII(std::basic_string<T>& string)
+{
+ // Replace non-ASCII chars with LL_UNKNOWN_CHAR
+ for (size_type i = 0; i < string.length(); i++)
+ {
+ if (string[i] > 0x7f)
+ {
+ string[i] = LL_UNKNOWN_CHAR;
+ }
+ }
+}
+
+// static
+template<class T>
+void LLStringUtilBase<T>::copy( T* dst, const T* src, size_type dst_size )
+{
+ if( dst_size > 0 )
+ {
+ size_type min_len = 0;
+ if( src )
+ {
+ min_len = llmin( dst_size - 1, strlen( src ) ); /* Flawfinder: ignore */
+ memcpy(dst, src, min_len * sizeof(T)); /* Flawfinder: ignore */
+ }
+ dst[min_len] = '\0';
+ }
+}
+
+// static
+template<class T>
+void LLStringUtilBase<T>::copyInto(std::basic_string<T>& dst, const std::basic_string<T>& src, size_type offset)
+{
+ if ( offset == dst.length() )
+ {
+ // special case - append to end of string and avoid expensive
+ // (when strings are large) string manipulations
+ dst += src;
+ }
+ else
+ {
+ std::basic_string<T> tail = dst.substr(offset);
+
+ dst = dst.substr(0, offset);
+ dst += src;
+ dst += tail;
+ };
+}
+
+// True if this is the head of s.
+//static
+template<class T>
+BOOL LLStringUtilBase<T>::isHead( const std::basic_string<T>& string, const T* s )
+{
+ if( string.empty() )
+ {
+ // Early exit
+ return FALSE;
+ }
+ else
+ {
+ return (strncmp( s, string.c_str(), string.size() ) == 0);
+ }
+}
+
+// static
+template<class T>
+bool LLStringUtilBase<T>::startsWith(
+ const std::basic_string<T>& string,
+ const std::basic_string<T>& substr)
+{
+ if(string.empty() || (substr.empty())) return false;
+ if(0 == string.find(substr)) return true;
+ return false;
+}
+
+// static
+template<class T>
+bool LLStringUtilBase<T>::endsWith(
+ const std::basic_string<T>& string,
+ const std::basic_string<T>& substr)
+{
+ if(string.empty() || (substr.empty())) return false;
+ std::string::size_type idx = string.rfind(substr);
+ if(std::string::npos == idx) return false;
+ return (idx == (string.size() - substr.size()));
+}
+
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToBOOL(const std::basic_string<T>& string, BOOL& value)
+{
+ if( string.empty() )
+ {
+ return FALSE;
+ }
+
+ std::basic_string<T> temp( string );
+ trim(temp);
+ if(
+ (temp == "1") ||
+ (temp == "T") ||
+ (temp == "t") ||
+ (temp == "TRUE") ||
+ (temp == "true") ||
+ (temp == "True") )
+ {
+ value = TRUE;
+ return TRUE;
+ }
+ else
+ if(
+ (temp == "0") ||
+ (temp == "F") ||
+ (temp == "f") ||
+ (temp == "FALSE") ||
+ (temp == "false") ||
+ (temp == "False") )
+ {
+ value = FALSE;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToU8(const std::basic_string<T>& string, U8& value)
+{
+ S32 value32 = 0;
+ BOOL success = convertToS32(string, value32);
+ if( success && (U8_MIN <= value32) && (value32 <= U8_MAX) )
+ {
+ value = (U8) value32;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToS8(const std::basic_string<T>& string, S8& value)
+{
+ S32 value32 = 0;
+ BOOL success = convertToS32(string, value32);
+ if( success && (S8_MIN <= value32) && (value32 <= S8_MAX) )
+ {
+ value = (S8) value32;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToS16(const std::basic_string<T>& string, S16& value)
+{
+ S32 value32 = 0;
+ BOOL success = convertToS32(string, value32);
+ if( success && (S16_MIN <= value32) && (value32 <= S16_MAX) )
+ {
+ value = (S16) value32;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToU16(const std::basic_string<T>& string, U16& value)
+{
+ S32 value32 = 0;
+ BOOL success = convertToS32(string, value32);
+ if( success && (U16_MIN <= value32) && (value32 <= U16_MAX) )
+ {
+ value = (U16) value32;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToU32(const std::basic_string<T>& string, U32& value)
+{
+ if( string.empty() )
+ {
+ return FALSE;
+ }
+
+ std::basic_string<T> temp( string );
+ trim(temp);
+ U32 v;
+ std::basic_istringstream<T> i_stream((std::basic_string<T>)temp);
+ if(i_stream >> v)
+ {
+ value = v;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToS32(const std::basic_string<T>& string, S32& value)
+{
+ if( string.empty() )
+ {
+ return FALSE;
+ }
+
+ std::basic_string<T> temp( string );
+ trim(temp);
+ S32 v;
+ std::basic_istringstream<T> i_stream((std::basic_string<T>)temp);
+ if(i_stream >> v)
+ {
+ //TODO: figure out overflow and underflow reporting here
+ //if((LONG_MAX == v) || (LONG_MIN == v))
+ //{
+ // // Underflow or overflow
+ // return FALSE;
+ //}
+
+ value = v;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToF32(const std::basic_string<T>& string, F32& value)
+{
+ F64 value64 = 0.0;
+ BOOL success = convertToF64(string, value64);
+ if( success && (-F32_MAX <= value64) && (value64 <= F32_MAX) )
+ {
+ value = (F32) value64;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+BOOL LLStringUtilBase<T>::convertToF64(const std::basic_string<T>& string, F64& value)
+{
+ if( string.empty() )
+ {
+ return FALSE;
+ }
+
+ std::basic_string<T> temp( string );
+ trim(temp);
+ F64 v;
+ std::basic_istringstream<T> i_stream((std::basic_string<T>)temp);
+ if(i_stream >> v)
+ {
+ //TODO: figure out overflow and underflow reporting here
+ //if( ((-HUGE_VAL == v) || (HUGE_VAL == v))) )
+ //{
+ // // Underflow or overflow
+ // return FALSE;
+ //}
+
+ value = v;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+template<class T>
+void LLStringUtilBase<T>::truncate(std::basic_string<T>& string, size_type count)
+{
+ size_type cur_size = string.size();
+ string.resize(count < cur_size ? count : cur_size);
+}
+
+#endif // LL_STRING_H
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 44eff8d357..f5d8174820 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -391,7 +391,7 @@ void LLTabContainer::draw()
mNextArrowBtn->setFlashing( TRUE );
}
}
- }
+ }
idx++;
}
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
index 20ba5768db..236f79978d 100644
--- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
+++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
@@ -531,13 +531,13 @@ private:
// this wasn't required in 1.xx viewer but we have to manually
// work the Windows message pump now
#if defined( LL_WINDOWS )
- MSG msg;
- while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
- {
- GetMessage( &msg, NULL, 0, 0 );
- TranslateMessage( &msg );
- DispatchMessage( &msg );
- };
+ MSG msg;
+ while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
+ {
+ GetMessage( &msg, NULL, 0, 0 );
+ TranslateMessage( &msg );
+ DispatchMessage( &msg );
+ };
#endif
MCIdle( mMovieController );
diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
index 669235af1b..ab18febccc 100644
--- a/indra/newview/app_settings/ignorable_dialogs.xml
+++ b/indra/newview/app_settings/ignorable_dialogs.xml
@@ -1,291 +1,291 @@
-<?xml version="1.0" ?>
-<llsd>
-<map>
- <key>FirstAppearance</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstAppearance warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstAttach</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstAttach warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstBalanceDecrease</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstBalanceDecrease warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstBalanceIncrease</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstBalanceIncrease warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstBuild</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstBuild warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstDebugMenus</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstDebugMenus warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstFlexible</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstFlexible warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstGoTo</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstGoTo warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstInventory</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstInventory warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstLeftClickNoHit</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstLeftClickNoHit warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstMap</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstMap warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstMedia</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstMedia warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstOverrideKeys</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstOverrideKeys warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstSandbox</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstSandbox warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstSculptedPrim</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstSculptedPrim warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstSit</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstSit warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstStreamingMusic</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstStreamingMusic warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstStreamingVideo</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstStreamingVideo warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstTeleport</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstTeleport warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>FirstVoice</key>
- <map>
- <key>Comment</key>
- <string>Enables FirstVoice warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>AboutDirectX9</key>
- <map>
- <key>Comment</key>
- <string>Enables AboutDirectX9 warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>BrowserLaunch</key>
- <map>
- <key>Comment</key>
- <string>Enables BrowserLaunch warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>DeedObject</key>
- <map>
- <key>Comment</key>
- <string>Enables DeedObject warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>NewClassified</key>
- <map>
- <key>Comment</key>
- <string>Enables NewClassified warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>QuickTimeInstalled</key>
- <map>
- <key>Comment</key>
- <string>Enables QuickTimeInstalled warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- <key>ReturnToOwner</key>
- <map>
- <key>Comment</key>
- <string>Enables ReturnToOwner warning dialog</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
- </map>
-</llsd>
+<?xml version="1.0" ?>
+<llsd>
+<map>
+ <key>FirstAppearance</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstAppearance warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstAttach</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstAttach warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstBalanceDecrease</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstBalanceDecrease warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstBalanceIncrease</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstBalanceIncrease warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstBuild</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstBuild warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstDebugMenus</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstDebugMenus warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstFlexible</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstFlexible warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstGoTo</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstGoTo warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstInventory</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstInventory warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstLeftClickNoHit</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstLeftClickNoHit warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstMap</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstMap warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstMedia</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstMedia warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstOverrideKeys</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstOverrideKeys warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstSandbox</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstSandbox warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstSculptedPrim</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstSculptedPrim warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstSit</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstSit warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstStreamingMusic</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstStreamingMusic warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstStreamingVideo</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstStreamingVideo warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstTeleport</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstTeleport warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FirstVoice</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables FirstVoice warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>AboutDirectX9</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables AboutDirectX9 warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>BrowserLaunch</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables BrowserLaunch warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>DeedObject</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables DeedObject warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>NewClassified</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables NewClassified warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>QuickTimeInstalled</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables QuickTimeInstalled warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ReturnToOwner</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables ReturnToOwner warning dialog</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ </map>
+</llsd>
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index ad80e7ed61..54b7c124e0 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1,2556 +1,2556 @@
-/**
- * @file LLIMMgr.cpp
- * @brief Container for Instant Messaging
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llimview.h"
-
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llrect.h"
-#include "llerror.h"
-#include "llbutton.h"
-#include "llhttpclient.h"
-#include "llsdutil_math.h"
-#include "llstring.h"
-#include "lluictrlfactory.h"
-
-#include "llagent.h"
-#include "llavatariconctrl.h"
-#include "llbottomtray.h"
-#include "llcallingcard.h"
-#include "llchat.h"
-#include "llchiclet.h"
-#include "llresmgr.h"
-#include "llfloaterchat.h"
-#include "llfloaterchatterbox.h"
-#include "llavataractions.h"
-#include "llhttpnode.h"
-#include "llimfloater.h"
-#include "llimpanel.h"
-#include "llresizebar.h"
-#include "lltabcontainer.h"
-#include "llviewercontrol.h"
-#include "llfloater.h"
-#include "llmutelist.h"
-#include "llresizehandle.h"
-#include "llkeyboard.h"
-#include "llui.h"
-#include "llviewermenu.h"
-#include "llcallingcard.h"
-#include "lltoolbar.h"
-#include "llviewermessage.h"
-#include "llviewerwindow.h"
-#include "llnotify.h"
-#include "llviewerregion.h"
-#include "llvoicechannel.h"
-#include "lltrans.h"
-#include "llrecentpeople.h"
-#include "llsyswellwindow.h"
-
-#include "llfirstuse.h"
-#include "llagentui.h"
-
-//
-// Globals
-//
-LLIMMgr* gIMMgr = NULL;
-
-//
-// Statics
-//
-// *FIXME: make these all either UIStrings or Strings
-
-const static std::string IM_SEPARATOR(": ");
-
-
-void toast_callback(const LLSD& msg){
- // do not show toast in busy mode or it goes from agent
- if (gAgent.getBusy() || gAgent.getID() == msg["from_id"])
- {
- return;
- }
-
- // check whether incoming IM belongs to an active session or not
- if (LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
- {
- return;
- }
-
- // Skip toasting for system messages
- if (msg["from_id"].asUUID() == LLUUID::null)
- {
- return;
- }
-
- LLSD args;
- args["MESSAGE"] = msg["message"];
- args["TIME"] = msg["time"];
- args["FROM"] = msg["from"];
- args["FROM_ID"] = msg["from_id"];
- args["SESSION_ID"] = msg["session_id"];
-
- LLNotifications::instance().add("IMToast", args, LLSD(), boost::bind(&LLIMFloater::show, msg["session_id"].asUUID()));
-}
-
-void LLIMModel::setActiveSessionID(const LLUUID& session_id)
-{
- // check if such an ID really exists
- if (!findIMSession(session_id))
- {
- llwarns << "Trying to set as active a non-existent session!" << llendl;
- return;
- }
-
- mActiveSessionID = session_id;
-}
-
-LLIMModel::LLIMModel()
-{
- addNewMsgCallback(LLIMFloater::newIMCallback);
- addNewMsgCallback(toast_callback);
-}
-
-LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids)
-: mSessionID(session_id),
- mName(name),
- mType(type),
- mNumUnread(0),
- mOtherParticipantID(other_participant_id),
- mInitialTargetIDs(ids),
- mVoiceChannel(NULL),
- mSpeakers(NULL),
- mSessionInitialized(false),
- mCallBackEnabled(true),
- mTextIMPossible(true),
- mOtherParticipantIsAvatar(true)
-{
- if (IM_NOTHING_SPECIAL == type || IM_SESSION_P2P_INVITE == type)
- {
- mVoiceChannel = new LLVoiceChannelP2P(session_id, name, other_participant_id);
- }
- else
- {
- mVoiceChannel = new LLVoiceChannelGroup(session_id, name);
- }
- mSpeakers = new LLIMSpeakerMgr(mVoiceChannel);
-
- // All participants will be added to the list of people we've recently interacted with.
- mSpeakers->addListener(&LLRecentPeople::instance(), "add");
-
- //we need to wait for session initialization for outgoing ad-hoc and group chat session
- //correct session id for initiated ad-hoc chat will be received from the server
- if (!LLIMModel::getInstance()->sendStartSession(mSessionID, mOtherParticipantID,
- mInitialTargetIDs, mType))
- {
- //we don't need to wait for any responses
- //so we're already initialized
- mSessionInitialized = true;
- }
-
- if (IM_NOTHING_SPECIAL == type)
- {
- mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID);
- mTextIMPossible = LLVoiceClient::getInstance()->isSessionTextIMPossible(mSessionID);
- mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID);
- }
-
- if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") )
- LLLogChat::loadHistory(mName, &chatFromLogFile, (void *)this);
-}
-
-LLIMModel::LLIMSession::~LLIMSession()
-{
- delete mSpeakers;
- mSpeakers = NULL;
-
- // End the text IM session if necessary
- if(gVoiceClient && mOtherParticipantID.notNull())
- {
- switch(mType)
- {
- case IM_NOTHING_SPECIAL:
- case IM_SESSION_P2P_INVITE:
- gVoiceClient->endUserIMSession(mOtherParticipantID);
- break;
-
- default:
- // Appease the linux compiler
- break;
- }
- }
-
- // HAVE to do this here -- if it happens in the LLVoiceChannel destructor it will call the wrong version (since the object's partially deconstructed at that point).
- mVoiceChannel->deactivate();
-
- delete mVoiceChannel;
- mVoiceChannel = NULL;
-}
-
-void LLIMModel::LLIMSession::sessionInitReplyReceived(const LLUUID& new_session_id)
-{
- mSessionInitialized = true;
-
- if (new_session_id != mSessionID)
- {
- mSessionID = new_session_id;
- mVoiceChannel->updateSessionID(new_session_id);
- }
-}
-
-void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time)
-{
- LLSD message;
- message["from"] = from;
- message["from_id"] = from_id;
- message["message"] = utf8_text;
- message["time"] = time;
- message["index"] = (LLSD::Integer)mMsgs.size();
-
- mMsgs.push_front(message);
-
- if (mSpeakers && from_id.notNull())
- {
- mSpeakers->speakerChatted(from_id);
- mSpeakers->setSpeakerTyping(from_id, FALSE);
- }
-}
-
-void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata)
-{
- if (!userdata) return;
-
- LLIMSession* self = (LLIMSession*) userdata;
-
- if (type == LLLogChat::LOG_LINE)
- {
- self->addMessage("", LLSD(), msg["message"].asString(), "");
- }
- else if (type == LLLogChat::LOG_LLSD)
- {
- self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString());
- }
-}
-
-LLIMModel::LLIMSession* LLIMModel::findIMSession(const LLUUID& session_id) const
-{
- return get_if_there(mId2SessionMap, session_id,
- (LLIMModel::LLIMSession*) NULL);
-}
-
-void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, const LLUUID& new_session_id)
-{
- LLIMSession* session = findIMSession(old_session_id);
- if (session)
- {
- session->sessionInitReplyReceived(new_session_id);
-
- if (old_session_id != new_session_id)
- {
- mId2SessionMap.erase(old_session_id);
- mId2SessionMap[new_session_id] = session;
-
- gIMMgr->notifyObserverSessionIDUpdated(old_session_id, new_session_id);
- }
-
- LLIMFloater* im_floater = LLIMFloater::findInstance(old_session_id);
- if (im_floater)
- {
- im_floater->sessionInitReplyReceived(new_session_id);
- }
- }
-
- //*TODO remove this "floater" stuff when Communicate Floater is gone
- LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(old_session_id);
- if (floater)
- {
- floater->sessionInitReplyReceived(new_session_id);
- }
-}
-
-void LLIMModel::testMessages()
-{
- LLUUID bot1_id("d0426ec6-6535-4c11-a5d9-526bb0c654d9");
- LLUUID bot1_session_id;
- std::string from = "IM Tester";
-
- bot1_session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, bot1_id);
- newSession(bot1_session_id, from, IM_NOTHING_SPECIAL, bot1_id);
- addMessage(bot1_session_id, from, bot1_id, "Test Message: Hi from testerbot land!");
-
- LLUUID bot2_id;
- std::string firstname[] = {"Roflcopter", "Joe"};
- std::string lastname[] = {"Linden", "Tester", "Resident", "Schmoe"};
-
- S32 rand1 = ll_rand(sizeof firstname)/(sizeof firstname[0]);
- S32 rand2 = ll_rand(sizeof lastname)/(sizeof lastname[0]);
-
- from = firstname[rand1] + " " + lastname[rand2];
- bot2_id.generate(from);
- LLUUID bot2_session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, bot2_id);
- newSession(bot2_session_id, from, IM_NOTHING_SPECIAL, bot2_id);
- addMessage(bot2_session_id, from, bot2_id, "Test Message: Hello there, I have a question. Can I bother you for a second? ");
- addMessage(bot2_session_id, from, bot2_id, "Test Message: OMGWTFBBQ.");
-}
-
-
-bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type,
- const LLUUID& other_participant_id, const std::vector<LLUUID>& ids)
-{
- if (findIMSession(session_id))
- {
- llwarns << "IM Session " << session_id << " already exists" << llendl;
- return false;
- }
-
- LLIMSession* session = new LLIMSession(session_id, name, type, other_participant_id, ids);
- mId2SessionMap[session_id] = session;
-
- LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, name, other_participant_id);
-
- return true;
-
-}
-
-bool LLIMModel::clearSession(const LLUUID& session_id)
-{
- if (mId2SessionMap.find(session_id) == mId2SessionMap.end()) return false;
- delete (mId2SessionMap[session_id]);
- mId2SessionMap.erase(session_id);
- return true;
-}
-
-void LLIMModel::getMessages(const LLUUID& session_id, std::list<LLSD>& messages, int start_index)
-{
- LLIMSession* session = findIMSession(session_id);
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return;
- }
-
- int i = session->mMsgs.size() - start_index;
-
- for (std::list<LLSD>::iterator iter = session->mMsgs.begin();
- iter != session->mMsgs.end() && i > 0;
- iter++)
- {
- LLSD msg;
- msg = *iter;
- messages.push_back(*iter);
- i--;
- }
-
- session->mNumUnread = 0;
-
- LLSD arg;
- arg["session_id"] = session_id;
- arg["num_unread"] = 0;
- mNoUnreadMsgsSignal(arg);
-}
-
-bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) {
-
- LLIMSession* session = findIMSession(session_id);
-
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return false;
- }
-
- session->addMessage(from, from_id, utf8_text, LLLogChat::timestamp(false)); //might want to add date separately
-
- return true;
-}
-
-bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text)
-{
- S32 im_log_option = gSavedPerAccountSettings.getS32("IMLogOptions");
- if (im_log_option != LOG_CHAT)
- {
- if(im_log_option == LOG_BOTH_TOGETHER)
- {
- LLLogChat::saveHistory(std::string("chat"), from, from_id, utf8_text);
- return true;
- }
- else
- {
- LLLogChat::saveHistory(LLIMModel::getInstance()->getName(session_id), from, from_id, utf8_text);
- return true;
- }
- }
- return false;
-}
-
-bool LLIMModel::proccessOnlineOfflineNotification(
- const LLUUID& session_id,
- const std::string& utf8_text)
-{
- // Add message to old one floater
- LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id);
- if ( floater )
- {
- if ( !utf8_text.empty() )
- {
- floater->addHistoryLine(utf8_text, LLUIColorTable::instance().getColor("SystemChatColor"));
- }
- }
- // Add system message to history
- return addMessage(session_id, SYSTEM_FROM, LLUUID::null, utf8_text);
-}
-
-bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, const LLUUID& from_id,
- const std::string& utf8_text, bool log2file /* = true */) {
- LLIMSession* session = findIMSession(session_id);
-
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return false;
- }
-
- addToHistory(session_id, from, from_id, utf8_text);
- if (log2file) logToFile(session_id, from, from_id, utf8_text);
-
- session->mNumUnread++;
-
- // notify listeners
- LLSD arg;
- arg["session_id"] = session_id;
- arg["num_unread"] = session->mNumUnread;
- arg["message"] = utf8_text;
- arg["from"] = from;
- arg["from_id"] = from_id;
- arg["time"] = LLLogChat::timestamp(false);
- mNewMsgSignal(arg);
-
- return true;
-}
-
-
-const std::string& LLIMModel::getName(const LLUUID& session_id) const
-{
- LLIMSession* session = findIMSession(session_id);
-
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return LLStringUtil::null;
- }
-
- return session->mName;
-}
-
-const S32 LLIMModel::getNumUnread(const LLUUID& session_id) const
-{
- LLIMSession* session = findIMSession(session_id);
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return -1;
- }
-
- return session->mNumUnread;
-}
-
-const LLUUID& LLIMModel::getOtherParticipantID(const LLUUID& session_id) const
-{
- LLIMSession* session = findIMSession(session_id);
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return LLUUID::null;
- }
-
- return session->mOtherParticipantID;
-}
-
-EInstantMessage LLIMModel::getType(const LLUUID& session_id) const
-{
- LLIMSession* session = findIMSession(session_id);
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return IM_COUNT;
- }
-
- return session->mType;
-}
-
-LLVoiceChannel* LLIMModel::getVoiceChannel( const LLUUID& session_id ) const
-{
- LLIMSession* session = findIMSession(session_id);
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return NULL;
- }
-
- return session->mVoiceChannel;
-}
-
-LLIMSpeakerMgr* LLIMModel::getSpeakerManager( const LLUUID& session_id ) const
-{
- LLIMSession* session = findIMSession(session_id);
- if (!session)
- {
- llwarns << "session " << session_id << "does not exist " << llendl;
- return NULL;
- }
-
- return session->mSpeakers;
-}
-
-
-// TODO get rid of other participant ID
-void LLIMModel::sendTypingState(LLUUID session_id, LLUUID other_participant_id, BOOL typing)
-{
- std::string name;
- LLAgentUI::buildFullname(name);
-
- pack_instant_message(
- gMessageSystem,
- gAgent.getID(),
- FALSE,
- gAgent.getSessionID(),
- other_participant_id,
- name,
- std::string("typing"),
- IM_ONLINE,
- (typing ? IM_TYPING_START : IM_TYPING_STOP),
- session_id);
- gAgent.sendReliableMessage();
-}
-
-void LLIMModel::sendLeaveSession(const LLUUID& session_id, const LLUUID& other_participant_id)
-{
- if(session_id.notNull())
- {
- std::string name;
- LLAgentUI::buildFullname(name);
- pack_instant_message(
- gMessageSystem,
- gAgent.getID(),
- FALSE,
- gAgent.getSessionID(),
- other_participant_id,
- name,
- LLStringUtil::null,
- IM_ONLINE,
- IM_SESSION_LEAVE,
- session_id);
- gAgent.sendReliableMessage();
- }
-}
-
-//*TODO this method is better be moved to the LLIMMgr
-void LLIMModel::sendMessage(const std::string& utf8_text,
- const LLUUID& im_session_id,
- const LLUUID& other_participant_id,
- EInstantMessage dialog)
-{
- std::string name;
- bool sent = false;
- LLAgentUI::buildFullname(name);
-
- const LLRelationship* info = NULL;
- info = LLAvatarTracker::instance().getBuddyInfo(other_participant_id);
-
- U8 offline = (!info || info->isOnline()) ? IM_ONLINE : IM_OFFLINE;
-
- if((offline == IM_OFFLINE) && (LLVoiceClient::getInstance()->isOnlineSIP(other_participant_id)))
- {
- // User is online through the OOW connector, but not with a regular viewer. Try to send the message via SLVoice.
- sent = gVoiceClient->sendTextMessage(other_participant_id, utf8_text);
- }
-
- if(!sent)
- {
- // Send message normally.
-
- // default to IM_SESSION_SEND unless it's nothing special - in
- // which case it's probably an IM to everyone.
- U8 new_dialog = dialog;
-
- if ( dialog != IM_NOTHING_SPECIAL )
- {
- new_dialog = IM_SESSION_SEND;
- }
- pack_instant_message(
- gMessageSystem,
- gAgent.getID(),
- FALSE,
- gAgent.getSessionID(),
- other_participant_id,
- name.c_str(),
- utf8_text.c_str(),
- offline,
- (EInstantMessage)new_dialog,
- im_session_id);
- gAgent.sendReliableMessage();
- }
-
- // If there is a mute list and this is not a group chat...
- if ( LLMuteList::getInstance() )
- {
- // ... the target should not be in our mute list for some message types.
- // Auto-remove them if present.
- switch( dialog )
- {
- case IM_NOTHING_SPECIAL:
- case IM_GROUP_INVITATION:
- case IM_INVENTORY_OFFERED:
- case IM_SESSION_INVITE:
- case IM_SESSION_P2P_INVITE:
- case IM_SESSION_CONFERENCE_START:
- case IM_SESSION_SEND: // This one is marginal - erring on the side of hearing.
- case IM_LURE_USER:
- case IM_GODLIKE_LURE_USER:
- case IM_FRIENDSHIP_OFFERED:
- LLMuteList::getInstance()->autoRemove(other_participant_id, LLMuteList::AR_IM);
- break;
- default: ; // do nothing
- }
- }
-
- if((dialog == IM_NOTHING_SPECIAL) &&
- (other_participant_id.notNull()))
- {
- // Do we have to replace the /me's here?
- std::string from;
- LLAgentUI::buildFullname(from);
- LLIMModel::getInstance()->addMessage(im_session_id, from, gAgentID, utf8_text);
-
- //local echo for the legacy communicate panel
- std::string history_echo;
- LLAgentUI::buildFullname(history_echo);
-
- history_echo += ": " + utf8_text;
-
- LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id);
- if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID());
-
- LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
- if (speaker_mgr)
- {
- speaker_mgr->speakerChatted(gAgentID);
- speaker_mgr->setSpeakerTyping(gAgentID, FALSE);
- }
- }
-
- // Add the recipient to the recent people list.
- LLRecentPeople::instance().add(other_participant_id);
-}
-
-void session_starter_helper(
- const LLUUID& temp_session_id,
- const LLUUID& other_participant_id,
- EInstantMessage im_type)
-{
- LLMessageSystem *msg = gMessageSystem;
-
- msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-
- msg->nextBlockFast(_PREHASH_MessageBlock);
- msg->addBOOLFast(_PREHASH_FromGroup, FALSE);
- msg->addUUIDFast(_PREHASH_ToAgentID, other_participant_id);
- msg->addU8Fast(_PREHASH_Offline, IM_ONLINE);
- msg->addU8Fast(_PREHASH_Dialog, im_type);
- msg->addUUIDFast(_PREHASH_ID, temp_session_id);
- msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary
-
- std::string name;
- LLAgentUI::buildFullname(name);
-
- msg->addStringFast(_PREHASH_FromAgentName, name);
- msg->addStringFast(_PREHASH_Message, LLStringUtil::null);
- msg->addU32Fast(_PREHASH_ParentEstateID, 0);
- msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
- msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
-}
-
-void start_deprecated_conference_chat(
- const LLUUID& temp_session_id,
- const LLUUID& creator_id,
- const LLUUID& other_participant_id,
- const LLSD& agents_to_invite)
-{
- U8* bucket;
- U8* pos;
- S32 count;
- S32 bucket_size;
-
- // *FIX: this could suffer from endian issues
- count = agents_to_invite.size();
- bucket_size = UUID_BYTES * count;
- bucket = new U8[bucket_size];
- pos = bucket;
-
- for(S32 i = 0; i < count; ++i)
- {
- LLUUID agent_id = agents_to_invite[i].asUUID();
-
- memcpy(pos, &agent_id, UUID_BYTES);
- pos += UUID_BYTES;
- }
-
- session_starter_helper(
- temp_session_id,
- other_participant_id,
- IM_SESSION_CONFERENCE_START);
-
- gMessageSystem->addBinaryDataFast(
- _PREHASH_BinaryBucket,
- bucket,
- bucket_size);
-
- gAgent.sendReliableMessage();
-
- delete[] bucket;
-}
-
-class LLStartConferenceChatResponder : public LLHTTPClient::Responder
-{
-public:
- LLStartConferenceChatResponder(
- const LLUUID& temp_session_id,
- const LLUUID& creator_id,
- const LLUUID& other_participant_id,
- const LLSD& agents_to_invite)
- {
- mTempSessionID = temp_session_id;
- mCreatorID = creator_id;
- mOtherParticipantID = other_participant_id;
- mAgents = agents_to_invite;
- }
-
- virtual void error(U32 statusNum, const std::string& reason)
- {
- //try an "old school" way.
- if ( statusNum == 400 )
- {
- start_deprecated_conference_chat(
- mTempSessionID,
- mCreatorID,
- mOtherParticipantID,
- mAgents);
- }
-
- //else throw an error back to the client?
- //in theory we should have just have these error strings
- //etc. set up in this file as opposed to the IMMgr,
- //but the error string were unneeded here previously
- //and it is not worth the effort switching over all
- //the possible different language translations
- }
-
-private:
- LLUUID mTempSessionID;
- LLUUID mCreatorID;
- LLUUID mOtherParticipantID;
-
- LLSD mAgents;
-};
-
-// Returns true if any messages were sent, false otherwise.
-// Is sort of equivalent to "does the server need to do anything?"
-bool LLIMModel::sendStartSession(
- const LLUUID& temp_session_id,
- const LLUUID& other_participant_id,
- const std::vector<LLUUID>& ids,
- EInstantMessage dialog)
-{
- if ( dialog == IM_SESSION_GROUP_START )
- {
- session_starter_helper(
- temp_session_id,
- other_participant_id,
- dialog);
- gMessageSystem->addBinaryDataFast(
- _PREHASH_BinaryBucket,
- EMPTY_BINARY_BUCKET,
- EMPTY_BINARY_BUCKET_SIZE);
- gAgent.sendReliableMessage();
-
- return true;
- }
- else if ( dialog == IM_SESSION_CONFERENCE_START )
- {
- LLSD agents;
- for (int i = 0; i < (S32) ids.size(); i++)
- {
- agents.append(ids[i]);
- }
-
- //we have a new way of starting conference calls now
- LLViewerRegion* region = gAgent.getRegion();
- if (region)
- {
- std::string url = region->getCapability(
- "ChatSessionRequest");
- LLSD data;
- data["method"] = "start conference";
- data["session-id"] = temp_session_id;
-
- data["params"] = agents;
-
- LLHTTPClient::post(
- url,
- data,
- new LLStartConferenceChatResponder(
- temp_session_id,
- gAgent.getID(),
- other_participant_id,
- data["params"]));
- }
- else
- {
- start_deprecated_conference_chat(
- temp_session_id,
- gAgent.getID(),
- other_participant_id,
- agents);
- }
-
- //we also need to wait for reply from the server in case of ad-hoc chat (we'll get new session id)
- return true;
- }
-
- return false;
-}
-
-// static
-void LLIMModel::sendSessionInitialized(const LLUUID &session_id)
-{
- LLIMSession* session = getInstance()->findIMSession(session_id);
- if (session)
- {
- LLSD arg;
- arg["session_id"] = session_id;
- getInstance()->mSessionInitializedSignal(arg);
- }
-}
-
-//
-// Helper Functions
-//
-
-class LLViewerChatterBoxInvitationAcceptResponder :
- public LLHTTPClient::Responder
-{
-public:
- LLViewerChatterBoxInvitationAcceptResponder(
- const LLUUID& session_id,
- LLIMMgr::EInvitationType invitation_type)
- {
- mSessionID = session_id;
- mInvitiationType = invitation_type;
- }
-
- void result(const LLSD& content)
- {
- if ( gIMMgr)
- {
- LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
- if (speaker_mgr)
- {
- //we've accepted our invitation
- //and received a list of agents that were
- //currently in the session when the reply was sent
- //to us. Now, it is possible that there were some agents
- //to slip in/out between when that message was sent to us
- //and now.
-
- //the agent list updates we've received have been
- //accurate from the time we were added to the session
- //but unfortunately, our base that we are receiving here
- //may not be the most up to date. It was accurate at
- //some point in time though.
- speaker_mgr->setSpeakers(content);
-
- //we now have our base of users in the session
- //that was accurate at some point, but maybe not now
- //so now we apply all of the udpates we've received
- //in case of race conditions
- speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(mSessionID));
- }
-
- if (LLIMMgr::INVITATION_TYPE_VOICE == mInvitiationType)
- {
- gIMMgr->startCall(mSessionID);
- }
-
- if ((mInvitiationType == LLIMMgr::INVITATION_TYPE_VOICE
- || mInvitiationType == LLIMMgr::INVITATION_TYPE_IMMEDIATE)
- && LLIMModel::getInstance()->findIMSession(mSessionID))
- {
- // always open IM window when connecting to voice
- LLIMFloater::show(mSessionID);
- }
-
- gIMMgr->clearPendingAgentListUpdates(mSessionID);
- gIMMgr->clearPendingInvitation(mSessionID);
- }
- }
-
- void error(U32 statusNum, const std::string& reason)
- {
- //throw something back to the viewer here?
- if ( gIMMgr )
- {
- gIMMgr->clearPendingAgentListUpdates(mSessionID);
- gIMMgr->clearPendingInvitation(mSessionID);
- if ( 404 == statusNum )
- {
- std::string error_string;
- error_string = "does not exist";
- gIMMgr->showSessionStartError(error_string, mSessionID);
- }
- }
- }
-
-private:
- LLUUID mSessionID;
- LLIMMgr::EInvitationType mInvitiationType;
-};
-
-
-// the other_participant_id is either an agent_id, a group_id, or an inventory
-// folder item_id (collection of calling cards)
-
-// static
-LLUUID LLIMMgr::computeSessionID(
- EInstantMessage dialog,
- const LLUUID& other_participant_id)
-{
- LLUUID session_id;
- if (IM_SESSION_GROUP_START == dialog)
- {
- // slam group session_id to the group_id (other_participant_id)
- session_id = other_participant_id;
- }
- else if (IM_SESSION_CONFERENCE_START == dialog)
- {
- session_id.generate();
- }
- else if (IM_SESSION_INVITE == dialog)
- {
- // use provided session id for invites
- session_id = other_participant_id;
- }
- else
- {
- LLUUID agent_id = gAgent.getID();
- if (other_participant_id == agent_id)
- {
- // if we try to send an IM to ourselves then the XOR would be null
- // so we just make the session_id the same as the agent_id
- session_id = agent_id;
- }
- else
- {
- // peer-to-peer or peer-to-asset session_id is the XOR
- session_id = other_participant_id ^ agent_id;
- }
- }
- return session_id;
-}
-
-inline LLFloater* getFloaterBySessionID(const LLUUID session_id)
-{
- LLFloater* floater = NULL;
- if ( gIMMgr )
- {
- floater = dynamic_cast < LLFloater* >
- ( gIMMgr->findFloaterBySession(session_id) );
- }
- if ( !floater )
- {
- floater = dynamic_cast < LLFloater* >
- ( LLIMFloater::findInstance(session_id) );
- }
- return floater;
-}
-
-void
-LLIMMgr::showSessionStartError(
- const std::string& error_string,
- const LLUUID session_id)
-{
- const LLFloater* floater = getFloaterBySessionID (session_id);
- if (!floater) return;
-
- LLSD args;
- args["REASON"] = LLTrans::getString(error_string);
- args["RECIPIENT"] = floater->getTitle();
-
- LLSD payload;
- payload["session_id"] = session_id;
-
- LLNotifications::instance().add(
- "ChatterBoxSessionStartError",
- args,
- payload,
- LLIMMgr::onConfirmForceCloseError);
-}
-
-void
-LLIMMgr::showSessionEventError(
- const std::string& event_string,
- const std::string& error_string,
- const LLUUID session_id)
-{
- const LLFloater* floater = getFloaterBySessionID (session_id);
- if (!floater) return;
-
- LLSD args;
- args["REASON"] =
- LLTrans::getString(error_string);
- args["EVENT"] =
- LLTrans::getString(event_string);
- args["RECIPIENT"] = floater->getTitle();
-
- LLNotifications::instance().add(
- "ChatterBoxSessionEventError",
- args);
-}
-
-void
-LLIMMgr::showSessionForceClose(
- const std::string& reason_string,
- const LLUUID session_id)
-{
- const LLFloater* floater = getFloaterBySessionID (session_id);
- if (!floater) return;
-
- LLSD args;
-
- args["NAME"] = floater->getTitle();
- args["REASON"] = LLTrans::getString(reason_string);
-
- LLSD payload;
- payload["session_id"] = session_id;
-
- LLNotifications::instance().add(
- "ForceCloseChatterBoxSession",
- args,
- payload,
- LLIMMgr::onConfirmForceCloseError);
-}
-
-//static
-bool
-LLIMMgr::onConfirmForceCloseError(
- const LLSD& notification,
- const LLSD& response)
-{
- //only 1 option really
- LLUUID session_id = notification["payload"]["session_id"];
-
- LLFloater* floater = getFloaterBySessionID (session_id);
- if ( floater )
- {
- floater->closeFloater(FALSE);
- }
- return false;
-}
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLOutgoingCallDialog
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LLOutgoingCallDialog::LLOutgoingCallDialog(const LLSD& payload) :
- LLDockableFloater(NULL, false, payload),
- mPayload(payload)
-{
-}
-
-void LLOutgoingCallDialog::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
-void LLOutgoingCallDialog::onOpen(const LLSD& key)
-{
- // tell the user which voice channel they are leaving
- if (!mPayload["old_channel_name"].asString().empty())
- {
- childSetTextArg("leaving", "[CURRENT_CHAT]", mPayload["old_channel_name"].asString());
- }
- else
- {
- childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat"));
- }
-
- std::string callee_name = mPayload["session_name"].asString();
- if (callee_name == "anonymous")
- {
- callee_name = getString("anonymous");
- }
-
- setTitle(callee_name);
-
- LLSD callee_id = mPayload["other_user_id"];
- childSetTextArg("calling", "[CALLEE_NAME]", callee_name);
- childSetTextArg("connecting", "[CALLEE_NAME]", callee_name);
- LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
- icon->setValue(callee_id);
-}
-
-
-//static
-void LLOutgoingCallDialog::onCancel(void* user_data)
-{
- LLOutgoingCallDialog* self = (LLOutgoingCallDialog*)user_data;
-
- if (!gIMMgr)
- return;
-
- LLUUID session_id = self->mPayload["session_id"].asUUID();
- gIMMgr->endCall(session_id);
-
- self->closeFloater();
-}
-
-
-BOOL LLOutgoingCallDialog::postBuild()
-{
- BOOL success = LLDockableFloater::postBuild();
-
- childSetAction("Cancel", onCancel, this);
-
- // dock the dialog to the sys well, where other sys messages appear
- setDockControl(new LLDockControl(LLBottomTray::getInstance()->getSysWell(),
- this, getDockTongue(), LLDockControl::TOP,
- boost::bind(&LLOutgoingCallDialog::getAllowedRect, this, _1)));
-
- return success;
-}
-
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLIncomingCallDialog
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-LLIncomingCallDialog::LLIncomingCallDialog(const LLSD& payload) :
- LLDockableFloater(NULL, false, payload),
- mPayload(payload)
-{
-}
-
-BOOL LLIncomingCallDialog::postBuild()
-{
- LLDockableFloater::postBuild();
-
- LLSD caller_id = mPayload["caller_id"];
- EInstantMessage type = (EInstantMessage)mPayload["type"].asInteger();
-
- std::string call_type = getString("VoiceInviteP2P");
- std::string caller_name = mPayload["caller_name"].asString();
- if (caller_name == "anonymous")
- {
- caller_name = getString("anonymous");
- }
-
- setTitle(caller_name + " " + call_type);
-
- // If it is not a P2P invite, then it's an AdHoc invite
- if ( type != IM_SESSION_P2P_INVITE )
- {
- call_type = getString("VoiceInviteAdHoc");
- }
-
- // check to see if this is an Avaline call
- LLUUID session_id = mPayload["session_id"].asUUID();
- bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id);
- childSetVisible("Start IM", is_avatar); // no IM for avaline
-
- LLUICtrl* caller_name_widget = getChild<LLUICtrl>("caller name");
- caller_name_widget->setValue(caller_name + " " + call_type);
- LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
- icon->setValue(caller_id);
-
- childSetAction("Accept", onAccept, this);
- childSetAction("Reject", onReject, this);
- childSetAction("Start IM", onStartIM, this);
- childSetFocus("Accept");
-
- return TRUE;
-}
-
-void LLIncomingCallDialog::getAllowedRect(LLRect& rect)
-{
- rect = gViewerWindow->getWorldViewRectScaled();
-}
-
-void LLIncomingCallDialog::onOpen(const LLSD& key)
-{
- // tell the user which voice channel they would be leaving
- LLVoiceChannel *voice = LLVoiceChannel::getCurrentVoiceChannel();
- if (voice && !voice->getSessionName().empty())
- {
- childSetTextArg("question", "[CURRENT_CHAT]", voice->getSessionName());
- }
- else
- {
- childSetTextArg("question", "[CURRENT_CHAT]", getString("localchat"));
- }
-
- // dock the dialog to the sys well, where other sys messages appear
- setDockControl(new LLDockControl(LLBottomTray::getInstance()->getSysWell(),
- this, getDockTongue(), LLDockControl::TOP,
- boost::bind(&LLIncomingCallDialog::getAllowedRect, this, _1)));
-}
-
-//static
-void LLIncomingCallDialog::onAccept(void* user_data)
-{
- LLIncomingCallDialog* self = (LLIncomingCallDialog*)user_data;
- self->processCallResponse(0);
- self->closeFloater();
-}
-
-//static
-void LLIncomingCallDialog::onReject(void* user_data)
-{
- LLIncomingCallDialog* self = (LLIncomingCallDialog*)user_data;
- self->processCallResponse(1);
- self->closeFloater();
-}
-
-//static
-void LLIncomingCallDialog::onStartIM(void* user_data)
-{
- LLIncomingCallDialog* self = (LLIncomingCallDialog*)user_data;
- self->processCallResponse(2);
- self->closeFloater();
-}
-
-void LLIncomingCallDialog::processCallResponse(S32 response)
-{
- if (!gIMMgr)
- return;
-
- LLUUID session_id = mPayload["session_id"].asUUID();
- EInstantMessage type = (EInstantMessage)mPayload["type"].asInteger();
- LLIMMgr::EInvitationType inv_type = (LLIMMgr::EInvitationType)mPayload["inv_type"].asInteger();
- bool voice = true;
- switch(response)
- {
- case 2: // start IM: just don't start the voice chat
- {
- voice = false;
- /* FALLTHROUGH */
- }
- case 0: // accept
- {
- if (type == IM_SESSION_P2P_INVITE)
- {
- // create a normal IM session
- session_id = gIMMgr->addP2PSession(
- mPayload["session_name"].asString(),
- mPayload["caller_id"].asUUID(),
- mPayload["session_handle"].asString());
-
- if (voice)
- {
- if (gIMMgr->startCall(session_id))
- {
- // always open IM window when connecting to voice
- LLIMFloater::show(session_id);
- }
- }
-
- gIMMgr->clearPendingAgentListUpdates(session_id);
- gIMMgr->clearPendingInvitation(session_id);
- }
- else
- {
- LLUUID session_id = gIMMgr->addSession(
- mPayload["session_name"].asString(),
- type,
- session_id);
- if (session_id != LLUUID::null)
- {
- LLIMFloater::show(session_id);
- }
-
- std::string url = gAgent.getRegion()->getCapability(
- "ChatSessionRequest");
-
- if (voice)
- {
- LLSD data;
- data["method"] = "accept invitation";
- data["session-id"] = session_id;
- LLHTTPClient::post(
- url,
- data,
- new LLViewerChatterBoxInvitationAcceptResponder(
- session_id,
- inv_type));
- }
- }
- if (voice)
- {
- break;
- }
- }
- case 1: // decline
- {
- if (type == IM_SESSION_P2P_INVITE)
- {
- if(gVoiceClient)
- {
- std::string s = mPayload["session_handle"].asString();
- gVoiceClient->declineInvite(s);
- }
- }
- else
- {
- std::string url = gAgent.getRegion()->getCapability(
- "ChatSessionRequest");
-
- LLSD data;
- data["method"] = "decline invitation";
- data["session-id"] = session_id;
- LLHTTPClient::post(
- url,
- data,
- NULL);
- }
- }
-
- gIMMgr->clearPendingAgentListUpdates(session_id);
- gIMMgr->clearPendingInvitation(session_id);
- }
-}
-
-bool inviteUserResponse(const LLSD& notification, const LLSD& response)
-{
- if (!gIMMgr)
- return false;
-
- const LLSD& payload = notification["payload"];
- LLUUID session_id = payload["session_id"].asUUID();
- EInstantMessage type = (EInstantMessage)payload["type"].asInteger();
- LLIMMgr::EInvitationType inv_type = (LLIMMgr::EInvitationType)payload["inv_type"].asInteger();
- S32 option = LLNotification::getSelectedOption(notification, response);
- switch(option)
- {
- case 0: // accept
- {
- if (type == IM_SESSION_P2P_INVITE)
- {
- // create a normal IM session
- session_id = gIMMgr->addP2PSession(
- payload["session_name"].asString(),
- payload["caller_id"].asUUID(),
- payload["session_handle"].asString(),
- payload["session_uri"].asString());
-
- if (gIMMgr->startCall(session_id))
- {
- // always open IM window when connecting to voice
- LLIMFloater::show(session_id);
- }
-
- gIMMgr->clearPendingAgentListUpdates(session_id);
- gIMMgr->clearPendingInvitation(session_id);
- }
- else
- {
- LLUUID session_id = gIMMgr->addSession(
- payload["session_name"].asString(),
- type,
- session_id);
- if (session_id != LLUUID::null)
- {
- LLIMFloater::show(session_id);
- }
-
- std::string url = gAgent.getRegion()->getCapability(
- "ChatSessionRequest");
-
- LLSD data;
- data["method"] = "accept invitation";
- data["session-id"] = session_id;
- LLHTTPClient::post(
- url,
- data,
- new LLViewerChatterBoxInvitationAcceptResponder(
- session_id,
- inv_type));
- }
- }
- break;
- case 2: // mute (also implies ignore, so this falls through to the "ignore" case below)
- {
- // mute the sender of this invite
- if (!LLMuteList::getInstance()->isMuted(payload["caller_id"].asUUID()))
- {
- LLMute mute(payload["caller_id"].asUUID(), payload["caller_name"].asString(), LLMute::AGENT);
- LLMuteList::getInstance()->add(mute);
- }
- }
- /* FALLTHROUGH */
-
- case 1: // decline
- {
- if (type == IM_SESSION_P2P_INVITE)
- {
- if(gVoiceClient)
- {
- std::string s = payload["session_handle"].asString();
- gVoiceClient->declineInvite(s);
- }
- }
- else
- {
- std::string url = gAgent.getRegion()->getCapability(
- "ChatSessionRequest");
-
- LLSD data;
- data["method"] = "decline invitation";
- data["session-id"] = session_id;
- LLHTTPClient::post(
- url,
- data,
- NULL);
- }
- }
-
- gIMMgr->clearPendingAgentListUpdates(session_id);
- gIMMgr->clearPendingInvitation(session_id);
- break;
- }
-
- return false;
-}
-
-//
-// Member Functions
-//
-
-LLIMMgr::LLIMMgr() :
- mIMReceived(FALSE)
-{
- mPendingInvitations = LLSD::emptyMap();
- mPendingAgentListUpdates = LLSD::emptyMap();
-}
-
-// Add a message to a session.
-void LLIMMgr::addMessage(
- const LLUUID& session_id,
- const LLUUID& target_id,
- const std::string& from,
- const std::string& msg,
- const std::string& session_name,
- EInstantMessage dialog,
- U32 parent_estate_id,
- const LLUUID& region_id,
- const LLVector3& position,
- bool link_name) // If this is true, then we insert the name and link it to a profile
-{
- LLUUID other_participant_id = target_id;
-
- // don't process muted IMs
- if (LLMuteList::getInstance()->isMuted(
- other_participant_id,
- LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from))
- {
- return;
- }
-
- LLFloaterIMPanel* floater;
- LLUUID new_session_id = session_id;
- if (new_session_id.isNull())
- {
- //no session ID...compute new one
- new_session_id = computeSessionID(dialog, other_participant_id);
- }
-
- //*NOTE session_name is empty in case of incoming P2P sessions
- std::string fixed_session_name = from;
- if(!session_name.empty() && session_name.size()>1)
- {
- fixed_session_name = session_name;
- }
-
- bool new_session = !hasSession(new_session_id);
- if (new_session)
- {
- LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id);
- }
-
- floater = findFloaterBySession(new_session_id);
- if (!floater)
- {
- floater = findFloaterBySession(other_participant_id);
- if (floater)
- {
- llinfos << "found the IM session " << session_id
- << " by participant " << other_participant_id << llendl;
- }
- }
-
- // create IM window as necessary
- if(!floater)
- {
- floater = createFloater(
- new_session_id,
- other_participant_id,
- fixed_session_name,
- dialog,
- FALSE);
- }
-
- if (new_session)
- {
- // When we get a new IM, and if you are a god, display a bit
- // of information about the source. This is to help liaisons
- // when answering questions.
- if(gAgent.isGodlike())
- {
- // *TODO:translate (low priority, god ability)
- std::ostringstream bonus_info;
- bonus_info << LLTrans::getString("***")+ " "+ LLTrans::getString("IMParentEstate") + ":" + " "
- << parent_estate_id
- << ((parent_estate_id == 1) ? "," + LLTrans::getString("IMMainland") : "")
- << ((parent_estate_id == 5) ? "," + LLTrans::getString ("IMTeen") : "");
-
- // once we have web-services (or something) which returns
- // information about a region id, we can print this out
- // and even have it link to map-teleport or something.
- //<< "*** region_id: " << region_id << std::endl
- //<< "*** position: " << position << std::endl;
-
- floater->addHistoryLine(bonus_info.str(), LLUIColorTable::instance().getColor("SystemChatColor"));
- LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
- }
-
- make_ui_sound("UISndNewIncomingIMSession");
- }
-
- // now add message to floater
- bool is_from_system = target_id.isNull() || (from == SYSTEM_FROM);
- const LLColor4& color = ( is_from_system ?
- LLUIColorTable::instance().getColor("SystemChatColor") :
- LLUIColorTable::instance().getColor("IMChatColor"));
- if ( !link_name )
- {
- floater->addHistoryLine(msg,color); // No name to prepend, so just add the message normally
- }
- else
- {
- floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message
- }
-
- LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
-
- if( !LLFloaterReg::instanceVisible("communicate") && !floater->getVisible())
- {
- LLFloaterChatterBox* chat_floater = LLFloaterChatterBox::getInstance();
-
- //if the IM window is not open and the floater is not visible (i.e. not torn off)
- LLFloater* previouslyActiveFloater = chat_floater->getActiveFloater();
-
- // select the newly added floater (or the floater with the new line added to it).
- // it should be there.
- chat_floater->selectFloater(floater);
-
- //there was a previously unseen IM, make that old tab flashing
- //it is assumed that the most recently unseen IM tab is the one current selected/active
- if ( previouslyActiveFloater && getIMReceived() )
- {
- chat_floater->setFloaterFlashing(previouslyActiveFloater, TRUE);
- }
-
- //notify of a new IM
- notifyNewIM();
- }
-}
-
-void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
-{
- LLUIString message;
-
- // null session id means near me (chat history)
- if (session_id.isNull())
- {
- message = LLTrans::getString(message_name);
- message.setArgs(args);
-
- LLChat chat(message);
- chat.mSourceType = CHAT_SOURCE_SYSTEM;
- LLFloaterChat::addChatHistory(chat);
- }
- else // going to IM session
- {
- if (hasSession(session_id))
- {
- message = LLTrans::getString(message_name + "-im");
- message.setArgs(args);
- gIMMgr->addMessage(session_id, LLUUID::null, SYSTEM_FROM, message.getString());
- }
- }
-}
-
-void LLIMMgr::notifyNewIM()
-{
- if(!LLFloaterReg::instanceVisible("communicate"))
- {
- mIMReceived = TRUE;
- }
-}
-
-S32 LLIMMgr::getNumberOfUnreadIM()
-{
- std::map<LLUUID, LLIMModel::LLIMSession*>::iterator it;
-
- S32 num = 0;
- for(it = LLIMModel::getInstance()->mId2SessionMap.begin(); it != LLIMModel::getInstance()->mId2SessionMap.end(); ++it)
- {
- num += (*it).second->mNumUnread;
- }
-
- return num;
-}
-
-void LLIMMgr::clearNewIMNotification()
-{
- mIMReceived = FALSE;
-}
-
-BOOL LLIMMgr::getIMReceived() const
-{
- return mIMReceived;
-}
-
-LLUUID LLIMMgr::addP2PSession(const std::string& name,
- const LLUUID& other_participant_id,
- const std::string& voice_session_handle,
- const std::string& caller_uri)
-{
- LLUUID session_id = addSession(name, IM_NOTHING_SPECIAL, other_participant_id);
- if (session_id != LLUUID::null)
- {
- LLIMFloater::show(session_id);
- }
-
- LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
- if (speaker_mgr)
- {
- LLVoiceChannelP2P* voice_channel = dynamic_cast<LLVoiceChannelP2P*>(speaker_mgr->getVoiceChannel());
- if (voice_channel)
- {
- voice_channel->setSessionHandle(voice_session_handle, caller_uri);
- }
- }
- return session_id;
-}
-
-// This adds a session to the talk view. The name is the local name of
-// the session, dialog specifies the type of session. If the session
-// exists, it is brought forward. Specifying id = NULL results in an
-// im session to everyone. Returns the uuid of the session.
-LLUUID LLIMMgr::addSession(
- const std::string& name,
- EInstantMessage dialog,
- const LLUUID& other_participant_id)
-{
- LLDynamicArray<LLUUID> ids;
- ids.put(other_participant_id);
- return addSession(name, dialog, other_participant_id, ids);
-}
-
-// Adds a session using the given session_id. If the session already exists
-// the dialog type is assumed correct. Returns the uuid of the session.
-LLUUID LLIMMgr::addSession(
- const std::string& name,
- EInstantMessage dialog,
- const LLUUID& other_participant_id,
- const LLDynamicArray<LLUUID>& ids)
-{
- if (0 == ids.getLength())
- {
- return LLUUID::null;
- }
-
- LLUUID session_id = computeSessionID(dialog,other_participant_id);
-
- bool new_session = !LLIMModel::getInstance()->findIMSession(session_id);
-
- if (new_session)
- {
- LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids);
- }
-
-
- //*TODO remove this "floater" thing when Communicate Floater's gone
- LLFloaterIMPanel* floater = findFloaterBySession(session_id);
- if(!floater)
- {
- // On creation, use the first element of ids as the
- // "other_participant_id"
- floater = createFloater(
- session_id,
- other_participant_id,
- name,
- dialog,
- TRUE,
- ids);
- }
-
- //we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions
- if (!new_session) return session_id;
-
- noteOfflineUsers(session_id, floater, ids);
-
- // Only warn for regular IMs - not group IMs
- if( dialog == IM_NOTHING_SPECIAL )
- {
- noteMutedUsers(session_id, floater, ids);
- }
-
- return session_id;
-}
-
-bool LLIMMgr::leaveSession(const LLUUID& session_id)
-{
- LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(session_id);
- if (!im_session) return false;
-
- LLIMModel::getInstance()->sendLeaveSession(session_id, im_session->mOtherParticipantID);
- gIMMgr->removeSession(session_id);
- return true;
-}
-
-// Removes data associated with a particular session specified by session_id
-void LLIMMgr::removeSession(const LLUUID& session_id)
-{
- llassert_always(hasSession(session_id));
-
- //*TODO remove this floater thing when Communicate Floater is being deleted (IB)
- LLFloaterIMPanel* floater = findFloaterBySession(session_id);
- if(floater)
- {
- mFloaters.erase(floater->getHandle());
- LLFloaterChatterBox::getInstance()->removeFloater(floater);
- }
-
- clearPendingInvitation(session_id);
- clearPendingAgentListUpdates(session_id);
-
- LLIMModel::getInstance()->clearSession(session_id);
-
- notifyObserverSessionRemoved(session_id);
-}
-
-void LLIMMgr::inviteToSession(
- const LLUUID& session_id,
- const std::string& session_name,
- const LLUUID& caller_id,
- const std::string& caller_name,
- EInstantMessage type,
- EInvitationType inv_type,
- const std::string& session_handle,
- const std::string& session_uri)
-{
- //ignore invites from muted residents
- if (LLMuteList::getInstance()->isMuted(caller_id))
- {
- return;
- }
-
- std::string notify_box_type;
-
- BOOL ad_hoc_invite = FALSE;
- if(type == IM_SESSION_P2P_INVITE)
- {
- //P2P is different...they only have voice invitations
- notify_box_type = "VoiceInviteP2P";
- }
- else if ( gAgent.isInGroup(session_id) )
- {
- //only really old school groups have voice invitations
- notify_box_type = "VoiceInviteGroup";
- }
- else if ( inv_type == INVITATION_TYPE_VOICE )
- {
- //else it's an ad-hoc
- //and a voice ad-hoc
- notify_box_type = "VoiceInviteAdHoc";
- ad_hoc_invite = TRUE;
- }
- else if ( inv_type == INVITATION_TYPE_IMMEDIATE )
- {
- notify_box_type = "InviteAdHoc";
- ad_hoc_invite = TRUE;
- }
-
- LLSD payload;
- payload["session_id"] = session_id;
- payload["session_name"] = session_name;
- payload["caller_id"] = caller_id;
- payload["caller_name"] = caller_name;
- payload["type"] = type;
- payload["inv_type"] = inv_type;
- payload["session_handle"] = session_handle;
- payload["session_uri"] = session_uri;
- payload["notify_box_type"] = notify_box_type;
-
- LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id);
- if (channelp && channelp->callStarted())
- {
- // you have already started a call to the other user, so just accept the invite
- LLNotifications::instance().forceResponse(LLNotification::Params("VoiceInviteP2P").payload(payload), 0);
- return;
- }
-
- if (type == IM_SESSION_P2P_INVITE || ad_hoc_invite)
- {
- // is the inviter a friend?
- if (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL)
- {
- // if not, and we are ignoring voice invites from non-friends
- // then silently decline
- if (gSavedSettings.getBOOL("VoiceCallsFriendsOnly"))
- {
- // invite not from a friend, so decline
- LLNotifications::instance().forceResponse(LLNotification::Params("VoiceInviteP2P").payload(payload), 1);
- return;
- }
- }
- }
-
- if ( !mPendingInvitations.has(session_id.asString()) )
- {
- if (caller_name.empty())
- {
- gCacheName->get(caller_id, FALSE, boost::bind(&LLIMMgr::onInviteNameLookup, payload, _1, _2, _3, _4));
- }
- else
- {
- if (notify_box_type == "VoiceInviteP2P" || notify_box_type == "VoiceInviteAdHoc")
- {
- LLFloaterReg::showInstance("incoming_call", payload, TRUE);
- }
- else
- {
- LLSD args;
- args["NAME"] = caller_name;
- args["GROUP"] = session_name;
-
- LLNotifications::instance().add(notify_box_type, args, payload, &inviteUserResponse);
- }
- }
- mPendingInvitations[session_id.asString()] = LLSD();
- }
-}
-
-void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
-{
- payload["caller_name"] = first + " " + last;
- payload["session_name"] = payload["caller_name"].asString();
-
- std::string notify_box_type = payload["notify_box_type"].asString();
-
- if (notify_box_type == "VoiceInviteP2P" || notify_box_type == "VoiceInviteAdHoc")
- {
- LLFloaterReg::showInstance("incoming_call", payload, TRUE);
- }
- else
- {
- LLSD args;
- args["NAME"] = payload["caller_name"].asString();
-
- LLNotifications::instance().add(
- payload["notify_box_type"].asString(),
- args,
- payload,
- &inviteUserResponse);
- }
-}
-
-void LLIMMgr::disconnectAllSessions()
-{
- LLFloaterIMPanel* floater = NULL;
- std::set<LLHandle<LLFloater> >::iterator handle_it;
- for(handle_it = mFloaters.begin();
- handle_it != mFloaters.end();
- )
- {
- floater = (LLFloaterIMPanel*)handle_it->get();
-
- // MUST do this BEFORE calling floater->onClose() because that may remove the item from the set, causing the subsequent increment to crash.
- ++handle_it;
-
- if (floater)
- {
- floater->setEnabled(FALSE);
- floater->closeFloater(TRUE);
- }
- }
-}
-
-
-// This method returns the im panel corresponding to the uuid
-// provided. The uuid can either be a session id or an agent
-// id. Returns NULL if there is no matching panel.
-LLFloaterIMPanel* LLIMMgr::findFloaterBySession(const LLUUID& session_id)
-{
- LLFloaterIMPanel* rv = NULL;
- std::set<LLHandle<LLFloater> >::iterator handle_it;
- for(handle_it = mFloaters.begin();
- handle_it != mFloaters.end();
- ++handle_it)
- {
- rv = (LLFloaterIMPanel*)handle_it->get();
- if(rv && session_id == rv->getSessionID())
- {
- break;
- }
- rv = NULL;
- }
- return rv;
-}
-
-
-BOOL LLIMMgr::hasSession(const LLUUID& session_id)
-{
- return LLIMModel::getInstance()->findIMSession(session_id) != NULL;
-}
-
-void LLIMMgr::clearPendingInvitation(const LLUUID& session_id)
-{
- if ( mPendingInvitations.has(session_id.asString()) )
- {
- mPendingInvitations.erase(session_id.asString());
- }
-}
-
-void LLIMMgr::processAgentListUpdates(const LLUUID& session_id, const LLSD& body)
-{
- LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
- if ( im_floater )
- {
- im_floater->processAgentListUpdates(body);
- }
- LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
- if (speaker_mgr)
- {
- speaker_mgr->updateSpeakers(body);
- }
- else
- {
- //we don't have a speaker manager yet..something went wrong
- //we are probably receiving an update here before
- //a start or an acceptance of an invitation. Race condition.
- gIMMgr->addPendingAgentListUpdates(
- session_id,
- body);
- }
-}
-
-LLSD LLIMMgr::getPendingAgentListUpdates(const LLUUID& session_id)
-{
- if ( mPendingAgentListUpdates.has(session_id.asString()) )
- {
- return mPendingAgentListUpdates[session_id.asString()];
- }
- else
- {
- return LLSD();
- }
-}
-
-void LLIMMgr::addPendingAgentListUpdates(
- const LLUUID& session_id,
- const LLSD& updates)
-{
- LLSD::map_const_iterator iter;
-
- if ( !mPendingAgentListUpdates.has(session_id.asString()) )
- {
- //this is a new agent list update for this session
- mPendingAgentListUpdates[session_id.asString()] = LLSD::emptyMap();
- }
-
- if (
- updates.has("agent_updates") &&
- updates["agent_updates"].isMap() &&
- updates.has("updates") &&
- updates["updates"].isMap() )
- {
- //new school update
- LLSD update_types = LLSD::emptyArray();
- LLSD::array_iterator array_iter;
-
- update_types.append("agent_updates");
- update_types.append("updates");
-
- for (
- array_iter = update_types.beginArray();
- array_iter != update_types.endArray();
- ++array_iter)
- {
- //we only want to include the last update for a given agent
- for (
- iter = updates[array_iter->asString()].beginMap();
- iter != updates[array_iter->asString()].endMap();
- ++iter)
- {
- mPendingAgentListUpdates[session_id.asString()][array_iter->asString()][iter->first] =
- iter->second;
- }
- }
- }
- else if (
- updates.has("updates") &&
- updates["updates"].isMap() )
- {
- //old school update where the SD contained just mappings
- //of agent_id -> "LEAVE"/"ENTER"
-
- //only want to keep last update for each agent
- for (
- iter = updates["updates"].beginMap();
- iter != updates["updates"].endMap();
- ++iter)
- {
- mPendingAgentListUpdates[session_id.asString()]["updates"][iter->first] =
- iter->second;
- }
- }
-}
-
-void LLIMMgr::clearPendingAgentListUpdates(const LLUUID& session_id)
-{
- if ( mPendingAgentListUpdates.has(session_id.asString()) )
- {
- mPendingAgentListUpdates.erase(session_id.asString());
- }
-}
-
-void LLIMMgr::notifyObserverSessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
-{
- for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++)
- {
- (*it)->sessionAdded(session_id, name, other_participant_id);
- }
-}
-
-void LLIMMgr::notifyObserverSessionRemoved(const LLUUID& session_id)
-{
- for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++)
- {
- (*it)->sessionRemoved(session_id);
- }
-}
-
-void LLIMMgr::notifyObserverSessionIDUpdated( const LLUUID& old_session_id, const LLUUID& new_session_id )
-{
- for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++)
- {
- (*it)->sessionIDUpdated(old_session_id, new_session_id);
- }
-
-}
-
-void LLIMMgr::addSessionObserver(LLIMSessionObserver *observer)
-{
- mSessionObservers.push_back(observer);
-}
-
-void LLIMMgr::removeSessionObserver(LLIMSessionObserver *observer)
-{
- mSessionObservers.remove(observer);
-}
-
-bool LLIMMgr::startCall(const LLUUID& session_id)
-{
- LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(session_id);
- if (!voice_channel) return false;
-
- voice_channel->activate();
- return true;
-}
-
-bool LLIMMgr::endCall(const LLUUID& session_id)
-{
- LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(session_id);
- if (!voice_channel) return false;
-
- voice_channel->deactivate();
- return true;
-}
-
-// create a floater and update internal representation for
-// consistency. Returns the pointer, caller (the class instance since
-// it is a private method) is not responsible for deleting the
-// pointer. Add the floater to this but do not select it.
-LLFloaterIMPanel* LLIMMgr::createFloater(
- const LLUUID& session_id,
- const LLUUID& other_participant_id,
- const std::string& session_label,
- EInstantMessage dialog,
- BOOL user_initiated,
- const LLDynamicArray<LLUUID>& ids)
-{
- if (session_id.isNull())
- {
- llwarns << "Creating LLFloaterIMPanel with null session ID" << llendl;
- }
-
- llinfos << "LLIMMgr::createFloater: from " << other_participant_id
- << " in session " << session_id << llendl;
- LLFloaterIMPanel* floater = new LLFloaterIMPanel(session_label,
- session_id,
- other_participant_id,
- ids,
- dialog);
- LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END;
- LLFloaterChatterBox::getInstance()->addFloater(floater, FALSE, i_pt);
- mFloaters.insert(floater->getHandle());
- return floater;
-}
-
-void LLIMMgr::noteOfflineUsers(
- const LLUUID& session_id,
- LLFloaterIMPanel* floater,
- const LLDynamicArray<LLUUID>& ids)
-{
- S32 count = ids.count();
- if(count == 0)
- {
- const std::string& only_user = LLTrans::getString("only_user_message");
- if (floater)
- {
- floater->addHistoryLine(only_user, LLUIColorTable::instance().getColor("SystemChatColor"));
- }
- LLIMModel::getInstance()->addMessage(session_id, SYSTEM_FROM, LLUUID::null, only_user);
- }
- else
- {
- const LLRelationship* info = NULL;
- LLAvatarTracker& at = LLAvatarTracker::instance();
- LLIMModel& im_model = LLIMModel::instance();
- for(S32 i = 0; i < count; ++i)
- {
- info = at.getBuddyInfo(ids.get(i));
- std::string first, last;
- if(info && !info->isOnline()
- && gCacheName->getName(ids.get(i), first, last))
- {
- LLUIString offline = LLTrans::getString("offline_message");
- offline.setArg("[FIRST]", first);
- offline.setArg("[LAST]", last);
- im_model.proccessOnlineOfflineNotification(session_id, offline);
- }
- }
- }
-}
-
-void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater,
- const LLDynamicArray<LLUUID>& ids)
-{
- // Don't do this if we don't have a mute list.
- LLMuteList *ml = LLMuteList::getInstance();
- if( !ml )
- {
- return;
- }
-
- S32 count = ids.count();
- if(count > 0)
- {
- LLIMModel* im_model = LLIMModel::getInstance();
-
- for(S32 i = 0; i < count; ++i)
- {
- if( ml->isMuted(ids.get(i)) )
- {
- LLUIString muted = LLTrans::getString("muted_message");
-
- //*TODO remove this "floater" thing when Communicate Floater's gone
- floater->addHistoryLine(muted);
-
- im_model->addMessage(session_id, SYSTEM_FROM, LLUUID::null, muted);
- break;
- }
- }
- }
-}
-
-void LLIMMgr::processIMTypingStart(const LLIMInfo* im_info)
-{
- processIMTypingCore(im_info, TRUE);
-}
-
-void LLIMMgr::processIMTypingStop(const LLIMInfo* im_info)
-{
- processIMTypingCore(im_info, FALSE);
-}
-
-void LLIMMgr::processIMTypingCore(const LLIMInfo* im_info, BOOL typing)
-{
- LLUUID session_id = computeSessionID(im_info->mIMType, im_info->mFromID);
- LLFloaterIMPanel* floater = findFloaterBySession(session_id);
- if (floater)
- {
- floater->processIMTyping(im_info, typing);
- }
-
- LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
- if ( im_floater )
- {
- im_floater->processIMTyping(im_info, typing);
- }
-}
-
-class LLViewerChatterBoxSessionStartReply : public LLHTTPNode
-{
-public:
- virtual void describe(Description& desc) const
- {
- desc.shortInfo("Used for receiving a reply to a request to initialize an ChatterBox session");
- desc.postAPI();
- desc.input(
- "{\"client_session_id\": UUID, \"session_id\": UUID, \"success\" boolean, \"reason\": string");
- desc.source(__FILE__, __LINE__);
- }
-
- virtual void post(ResponsePtr response,
- const LLSD& context,
- const LLSD& input) const
- {
- LLSD body;
- LLUUID temp_session_id;
- LLUUID session_id;
- bool success;
-
- body = input["body"];
- success = body["success"].asBoolean();
- temp_session_id = body["temp_session_id"].asUUID();
-
- if ( success )
- {
- session_id = body["session_id"].asUUID();
-
- LLIMModel::getInstance()->processSessionInitializedReply(temp_session_id, session_id);
-
- LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
- if (speaker_mgr)
- {
- speaker_mgr->setSpeakers(body);
- speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(session_id));
- }
-
- LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id);
- if (floaterp)
- {
- if ( body.has("session_info") )
- {
- floaterp->processSessionUpdate(body["session_info"]);
- }
- }
-
- LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
- if ( im_floater )
- {
- if ( body.has("session_info") )
- {
- im_floater->processSessionUpdate(body["session_info"]);
- }
- }
-
- gIMMgr->clearPendingAgentListUpdates(session_id);
- }
- else
- {
- //throw an error dialog and close the temp session's floater
- gIMMgr->showSessionStartError(body["error"].asString(), temp_session_id);
- }
-
- gIMMgr->clearPendingAgentListUpdates(session_id);
- }
-};
-
-class LLViewerChatterBoxSessionEventReply : public LLHTTPNode
-{
-public:
- virtual void describe(Description& desc) const
- {
- desc.shortInfo("Used for receiving a reply to a ChatterBox session event");
- desc.postAPI();
- desc.input(
- "{\"event\": string, \"reason\": string, \"success\": boolean, \"session_id\": UUID");
- desc.source(__FILE__, __LINE__);
- }
-
- virtual void post(ResponsePtr response,
- const LLSD& context,
- const LLSD& input) const
- {
- LLUUID session_id;
- bool success;
-
- LLSD body = input["body"];
- success = body["success"].asBoolean();
- session_id = body["session_id"].asUUID();
-
- if ( !success )
- {
- //throw an error dialog
- gIMMgr->showSessionEventError(
- body["event"].asString(),
- body["error"].asString(),
- session_id);
- }
- }
-};
-
-class LLViewerForceCloseChatterBoxSession: public LLHTTPNode
-{
-public:
- virtual void post(ResponsePtr response,
- const LLSD& context,
- const LLSD& input) const
- {
- LLUUID session_id;
- std::string reason;
-
- session_id = input["body"]["session_id"].asUUID();
- reason = input["body"]["reason"].asString();
-
- gIMMgr->showSessionForceClose(reason, session_id);
- }
-};
-
-class LLViewerChatterBoxSessionAgentListUpdates : public LLHTTPNode
-{
-public:
- virtual void post(
- ResponsePtr responder,
- const LLSD& context,
- const LLSD& input) const
- {
- const LLUUID& session_id = input["body"]["session_id"].asUUID();
- gIMMgr->processAgentListUpdates(session_id, input["body"]);
- }
-};
-
-class LLViewerChatterBoxSessionUpdate : public LLHTTPNode
-{
-public:
- virtual void post(
- ResponsePtr responder,
- const LLSD& context,
- const LLSD& input) const
- {
- LLUUID session_id = input["body"]["session_id"].asUUID();
- LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id);
- if (floaterp)
- {
- floaterp->processSessionUpdate(input["body"]["info"]);
- }
- LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
- if ( im_floater )
- {
- im_floater->processSessionUpdate(input["body"]["info"]);
- }
- }
-};
-
-
-class LLViewerChatterBoxInvitation : public LLHTTPNode
-{
-public:
-
- virtual void post(
- ResponsePtr response,
- const LLSD& context,
- const LLSD& input) const
- {
- //for backwards compatiblity reasons...we need to still
- //check for 'text' or 'voice' invitations...bleh
- if ( input["body"].has("instantmessage") )
- {
- LLSD message_params =
- input["body"]["instantmessage"]["message_params"];
-
- //do something here to have the IM invite behave
- //just like a normal IM
- //this is just replicated code from process_improved_im
- //and should really go in it's own function -jwolk
- if (gNoRender)
- {
- return;
- }
- LLChat chat;
-
- std::string message = message_params["message"].asString();
- std::string name = message_params["from_name"].asString();
- LLUUID from_id = message_params["from_id"].asUUID();
- LLUUID session_id = message_params["id"].asUUID();
- std::vector<U8> bin_bucket = message_params["data"]["binary_bucket"].asBinary();
- U8 offline = (U8)message_params["offline"].asInteger();
-
- time_t timestamp =
- (time_t) message_params["timestamp"].asInteger();
-
- BOOL is_busy = gAgent.getBusy();
- BOOL is_muted = LLMuteList::getInstance()->isMuted(
- from_id,
- name,
- LLMute::flagTextChat);
-
- BOOL is_linden = LLMuteList::getInstance()->isLinden(name);
- std::string separator_string(": ");
-
- chat.mMuted = is_muted && !is_linden;
- chat.mFromID = from_id;
- chat.mFromName = name;
-
- if (!is_linden && (is_busy || is_muted))
- {
- return;
- }
-
- // standard message, not from system
- std::string saved;
- if(offline == IM_OFFLINE)
- {
- saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
- }
- std::string buffer = saved + message;
-
- BOOL is_this_agent = FALSE;
- if(from_id == gAgentID)
- {
- is_this_agent = TRUE;
- }
- gIMMgr->addMessage(
- session_id,
- from_id,
- name,
- buffer,
- std::string((char*)&bin_bucket[0]),
- IM_SESSION_INVITE,
- message_params["parent_estate_id"].asInteger(),
- message_params["region_id"].asUUID(),
- ll_vector3_from_sd(message_params["position"]),
- true);
-
- chat.mText = std::string("IM: ") + name + separator_string + saved + message;
- LLFloaterChat::addChat(chat, TRUE, is_this_agent);
-
- //K now we want to accept the invitation
- std::string url = gAgent.getRegion()->getCapability(
- "ChatSessionRequest");
-
- if ( url != "" )
- {
- LLSD data;
- data["method"] = "accept invitation";
- data["session-id"] = session_id;
- LLHTTPClient::post(
- url,
- data,
- new LLViewerChatterBoxInvitationAcceptResponder(
- session_id,
- LLIMMgr::INVITATION_TYPE_INSTANT_MESSAGE));
- }
- } //end if invitation has instant message
- else if ( input["body"].has("voice") )
- {
- if (gNoRender)
- {
- return;
- }
-
- if(!LLVoiceClient::voiceEnabled())
- {
- // Don't display voice invites unless the user has voice enabled.
- return;
- }
-
- gIMMgr->inviteToSession(
- input["body"]["session_id"].asUUID(),
- input["body"]["session_name"].asString(),
- input["body"]["from_id"].asUUID(),
- input["body"]["from_name"].asString(),
- IM_SESSION_INVITE,
- LLIMMgr::INVITATION_TYPE_VOICE);
- }
- else if ( input["body"].has("immediate") )
- {
- gIMMgr->inviteToSession(
- input["body"]["session_id"].asUUID(),
- input["body"]["session_name"].asString(),
- input["body"]["from_id"].asUUID(),
- input["body"]["from_name"].asString(),
- IM_SESSION_INVITE,
- LLIMMgr::INVITATION_TYPE_IMMEDIATE);
- }
- }
-};
-
-LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>
- gHTTPRegistrationMessageChatterboxsessionstartreply(
- "/message/ChatterBoxSessionStartReply");
-
-LLHTTPRegistration<LLViewerChatterBoxSessionEventReply>
- gHTTPRegistrationMessageChatterboxsessioneventreply(
- "/message/ChatterBoxSessionEventReply");
-
-LLHTTPRegistration<LLViewerForceCloseChatterBoxSession>
- gHTTPRegistrationMessageForceclosechatterboxsession(
- "/message/ForceCloseChatterBoxSession");
-
-LLHTTPRegistration<LLViewerChatterBoxSessionAgentListUpdates>
- gHTTPRegistrationMessageChatterboxsessionagentlistupdates(
- "/message/ChatterBoxSessionAgentListUpdates");
-
-LLHTTPRegistration<LLViewerChatterBoxSessionUpdate>
- gHTTPRegistrationMessageChatterBoxSessionUpdate(
- "/message/ChatterBoxSessionUpdate");
-
-LLHTTPRegistration<LLViewerChatterBoxInvitation>
- gHTTPRegistrationMessageChatterBoxInvitation(
- "/message/ChatterBoxInvitation");
-
+/**
+ * @file LLIMMgr.cpp
+ * @brief Container for Instant Messaging
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llimview.h"
+
+#include "llfloaterreg.h"
+#include "llfontgl.h"
+#include "llrect.h"
+#include "llerror.h"
+#include "llbutton.h"
+#include "llhttpclient.h"
+#include "llsdutil_math.h"
+#include "llstring.h"
+#include "lluictrlfactory.h"
+
+#include "llagent.h"
+#include "llavatariconctrl.h"
+#include "llbottomtray.h"
+#include "llcallingcard.h"
+#include "llchat.h"
+#include "llchiclet.h"
+#include "llresmgr.h"
+#include "llfloaterchat.h"
+#include "llfloaterchatterbox.h"
+#include "llavataractions.h"
+#include "llhttpnode.h"
+#include "llimfloater.h"
+#include "llimpanel.h"
+#include "llresizebar.h"
+#include "lltabcontainer.h"
+#include "llviewercontrol.h"
+#include "llfloater.h"
+#include "llmutelist.h"
+#include "llresizehandle.h"
+#include "llkeyboard.h"
+#include "llui.h"
+#include "llviewermenu.h"
+#include "llcallingcard.h"
+#include "lltoolbar.h"
+#include "llviewermessage.h"
+#include "llviewerwindow.h"
+#include "llnotify.h"
+#include "llviewerregion.h"
+#include "llvoicechannel.h"
+#include "lltrans.h"
+#include "llrecentpeople.h"
+#include "llsyswellwindow.h"
+
+#include "llfirstuse.h"
+#include "llagentui.h"
+
+//
+// Globals
+//
+LLIMMgr* gIMMgr = NULL;
+
+//
+// Statics
+//
+// *FIXME: make these all either UIStrings or Strings
+
+const static std::string IM_SEPARATOR(": ");
+
+
+void toast_callback(const LLSD& msg){
+ // do not show toast in busy mode or it goes from agent
+ if (gAgent.getBusy() || gAgent.getID() == msg["from_id"])
+ {
+ return;
+ }
+
+ // check whether incoming IM belongs to an active session or not
+ if (LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
+ {
+ return;
+ }
+
+ // Skip toasting for system messages
+ if (msg["from_id"].asUUID() == LLUUID::null)
+ {
+ return;
+ }
+
+ LLSD args;
+ args["MESSAGE"] = msg["message"];
+ args["TIME"] = msg["time"];
+ args["FROM"] = msg["from"];
+ args["FROM_ID"] = msg["from_id"];
+ args["SESSION_ID"] = msg["session_id"];
+
+ LLNotifications::instance().add("IMToast", args, LLSD(), boost::bind(&LLIMFloater::show, msg["session_id"].asUUID()));
+}
+
+void LLIMModel::setActiveSessionID(const LLUUID& session_id)
+{
+ // check if such an ID really exists
+ if (!findIMSession(session_id))
+ {
+ llwarns << "Trying to set as active a non-existent session!" << llendl;
+ return;
+ }
+
+ mActiveSessionID = session_id;
+}
+
+LLIMModel::LLIMModel()
+{
+ addNewMsgCallback(LLIMFloater::newIMCallback);
+ addNewMsgCallback(toast_callback);
+}
+
+LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids)
+: mSessionID(session_id),
+ mName(name),
+ mType(type),
+ mNumUnread(0),
+ mOtherParticipantID(other_participant_id),
+ mInitialTargetIDs(ids),
+ mVoiceChannel(NULL),
+ mSpeakers(NULL),
+ mSessionInitialized(false),
+ mCallBackEnabled(true),
+ mTextIMPossible(true),
+ mOtherParticipantIsAvatar(true)
+{
+ if (IM_NOTHING_SPECIAL == type || IM_SESSION_P2P_INVITE == type)
+ {
+ mVoiceChannel = new LLVoiceChannelP2P(session_id, name, other_participant_id);
+ }
+ else
+ {
+ mVoiceChannel = new LLVoiceChannelGroup(session_id, name);
+ }
+ mSpeakers = new LLIMSpeakerMgr(mVoiceChannel);
+
+ // All participants will be added to the list of people we've recently interacted with.
+ mSpeakers->addListener(&LLRecentPeople::instance(), "add");
+
+ //we need to wait for session initialization for outgoing ad-hoc and group chat session
+ //correct session id for initiated ad-hoc chat will be received from the server
+ if (!LLIMModel::getInstance()->sendStartSession(mSessionID, mOtherParticipantID,
+ mInitialTargetIDs, mType))
+ {
+ //we don't need to wait for any responses
+ //so we're already initialized
+ mSessionInitialized = true;
+ }
+
+ if (IM_NOTHING_SPECIAL == type)
+ {
+ mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID);
+ mTextIMPossible = LLVoiceClient::getInstance()->isSessionTextIMPossible(mSessionID);
+ mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID);
+ }
+
+ if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") )
+ LLLogChat::loadHistory(mName, &chatFromLogFile, (void *)this);
+}
+
+LLIMModel::LLIMSession::~LLIMSession()
+{
+ delete mSpeakers;
+ mSpeakers = NULL;
+
+ // End the text IM session if necessary
+ if(gVoiceClient && mOtherParticipantID.notNull())
+ {
+ switch(mType)
+ {
+ case IM_NOTHING_SPECIAL:
+ case IM_SESSION_P2P_INVITE:
+ gVoiceClient->endUserIMSession(mOtherParticipantID);
+ break;
+
+ default:
+ // Appease the linux compiler
+ break;
+ }
+ }
+
+ // HAVE to do this here -- if it happens in the LLVoiceChannel destructor it will call the wrong version (since the object's partially deconstructed at that point).
+ mVoiceChannel->deactivate();
+
+ delete mVoiceChannel;
+ mVoiceChannel = NULL;
+}
+
+void LLIMModel::LLIMSession::sessionInitReplyReceived(const LLUUID& new_session_id)
+{
+ mSessionInitialized = true;
+
+ if (new_session_id != mSessionID)
+ {
+ mSessionID = new_session_id;
+ mVoiceChannel->updateSessionID(new_session_id);
+ }
+}
+
+void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time)
+{
+ LLSD message;
+ message["from"] = from;
+ message["from_id"] = from_id;
+ message["message"] = utf8_text;
+ message["time"] = time;
+ message["index"] = (LLSD::Integer)mMsgs.size();
+
+ mMsgs.push_front(message);
+
+ if (mSpeakers && from_id.notNull())
+ {
+ mSpeakers->speakerChatted(from_id);
+ mSpeakers->setSpeakerTyping(from_id, FALSE);
+ }
+}
+
+void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata)
+{
+ if (!userdata) return;
+
+ LLIMSession* self = (LLIMSession*) userdata;
+
+ if (type == LLLogChat::LOG_LINE)
+ {
+ self->addMessage("", LLSD(), msg["message"].asString(), "");
+ }
+ else if (type == LLLogChat::LOG_LLSD)
+ {
+ self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString());
+ }
+}
+
+LLIMModel::LLIMSession* LLIMModel::findIMSession(const LLUUID& session_id) const
+{
+ return get_if_there(mId2SessionMap, session_id,
+ (LLIMModel::LLIMSession*) NULL);
+}
+
+void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, const LLUUID& new_session_id)
+{
+ LLIMSession* session = findIMSession(old_session_id);
+ if (session)
+ {
+ session->sessionInitReplyReceived(new_session_id);
+
+ if (old_session_id != new_session_id)
+ {
+ mId2SessionMap.erase(old_session_id);
+ mId2SessionMap[new_session_id] = session;
+
+ gIMMgr->notifyObserverSessionIDUpdated(old_session_id, new_session_id);
+ }
+
+ LLIMFloater* im_floater = LLIMFloater::findInstance(old_session_id);
+ if (im_floater)
+ {
+ im_floater->sessionInitReplyReceived(new_session_id);
+ }
+ }
+
+ //*TODO remove this "floater" stuff when Communicate Floater is gone
+ LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(old_session_id);
+ if (floater)
+ {
+ floater->sessionInitReplyReceived(new_session_id);
+ }
+}
+
+void LLIMModel::testMessages()
+{
+ LLUUID bot1_id("d0426ec6-6535-4c11-a5d9-526bb0c654d9");
+ LLUUID bot1_session_id;
+ std::string from = "IM Tester";
+
+ bot1_session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, bot1_id);
+ newSession(bot1_session_id, from, IM_NOTHING_SPECIAL, bot1_id);
+ addMessage(bot1_session_id, from, bot1_id, "Test Message: Hi from testerbot land!");
+
+ LLUUID bot2_id;
+ std::string firstname[] = {"Roflcopter", "Joe"};
+ std::string lastname[] = {"Linden", "Tester", "Resident", "Schmoe"};
+
+ S32 rand1 = ll_rand(sizeof firstname)/(sizeof firstname[0]);
+ S32 rand2 = ll_rand(sizeof lastname)/(sizeof lastname[0]);
+
+ from = firstname[rand1] + " " + lastname[rand2];
+ bot2_id.generate(from);
+ LLUUID bot2_session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, bot2_id);
+ newSession(bot2_session_id, from, IM_NOTHING_SPECIAL, bot2_id);
+ addMessage(bot2_session_id, from, bot2_id, "Test Message: Hello there, I have a question. Can I bother you for a second? ");
+ addMessage(bot2_session_id, from, bot2_id, "Test Message: OMGWTFBBQ.");
+}
+
+
+bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type,
+ const LLUUID& other_participant_id, const std::vector<LLUUID>& ids)
+{
+ if (findIMSession(session_id))
+ {
+ llwarns << "IM Session " << session_id << " already exists" << llendl;
+ return false;
+ }
+
+ LLIMSession* session = new LLIMSession(session_id, name, type, other_participant_id, ids);
+ mId2SessionMap[session_id] = session;
+
+ LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, name, other_participant_id);
+
+ return true;
+
+}
+
+bool LLIMModel::clearSession(const LLUUID& session_id)
+{
+ if (mId2SessionMap.find(session_id) == mId2SessionMap.end()) return false;
+ delete (mId2SessionMap[session_id]);
+ mId2SessionMap.erase(session_id);
+ return true;
+}
+
+void LLIMModel::getMessages(const LLUUID& session_id, std::list<LLSD>& messages, int start_index)
+{
+ LLIMSession* session = findIMSession(session_id);
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return;
+ }
+
+ int i = session->mMsgs.size() - start_index;
+
+ for (std::list<LLSD>::iterator iter = session->mMsgs.begin();
+ iter != session->mMsgs.end() && i > 0;
+ iter++)
+ {
+ LLSD msg;
+ msg = *iter;
+ messages.push_back(*iter);
+ i--;
+ }
+
+ session->mNumUnread = 0;
+
+ LLSD arg;
+ arg["session_id"] = session_id;
+ arg["num_unread"] = 0;
+ mNoUnreadMsgsSignal(arg);
+}
+
+bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) {
+
+ LLIMSession* session = findIMSession(session_id);
+
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return false;
+ }
+
+ session->addMessage(from, from_id, utf8_text, LLLogChat::timestamp(false)); //might want to add date separately
+
+ return true;
+}
+
+bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text)
+{
+ S32 im_log_option = gSavedPerAccountSettings.getS32("IMLogOptions");
+ if (im_log_option != LOG_CHAT)
+ {
+ if(im_log_option == LOG_BOTH_TOGETHER)
+ {
+ LLLogChat::saveHistory(std::string("chat"), from, from_id, utf8_text);
+ return true;
+ }
+ else
+ {
+ LLLogChat::saveHistory(LLIMModel::getInstance()->getName(session_id), from, from_id, utf8_text);
+ return true;
+ }
+ }
+ return false;
+}
+
+bool LLIMModel::proccessOnlineOfflineNotification(
+ const LLUUID& session_id,
+ const std::string& utf8_text)
+{
+ // Add message to old one floater
+ LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id);
+ if ( floater )
+ {
+ if ( !utf8_text.empty() )
+ {
+ floater->addHistoryLine(utf8_text, LLUIColorTable::instance().getColor("SystemChatColor"));
+ }
+ }
+ // Add system message to history
+ return addMessage(session_id, SYSTEM_FROM, LLUUID::null, utf8_text);
+}
+
+bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, const LLUUID& from_id,
+ const std::string& utf8_text, bool log2file /* = true */) {
+ LLIMSession* session = findIMSession(session_id);
+
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return false;
+ }
+
+ addToHistory(session_id, from, from_id, utf8_text);
+ if (log2file) logToFile(session_id, from, from_id, utf8_text);
+
+ session->mNumUnread++;
+
+ // notify listeners
+ LLSD arg;
+ arg["session_id"] = session_id;
+ arg["num_unread"] = session->mNumUnread;
+ arg["message"] = utf8_text;
+ arg["from"] = from;
+ arg["from_id"] = from_id;
+ arg["time"] = LLLogChat::timestamp(false);
+ mNewMsgSignal(arg);
+
+ return true;
+}
+
+
+const std::string& LLIMModel::getName(const LLUUID& session_id) const
+{
+ LLIMSession* session = findIMSession(session_id);
+
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return LLStringUtil::null;
+ }
+
+ return session->mName;
+}
+
+const S32 LLIMModel::getNumUnread(const LLUUID& session_id) const
+{
+ LLIMSession* session = findIMSession(session_id);
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return -1;
+ }
+
+ return session->mNumUnread;
+}
+
+const LLUUID& LLIMModel::getOtherParticipantID(const LLUUID& session_id) const
+{
+ LLIMSession* session = findIMSession(session_id);
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return LLUUID::null;
+ }
+
+ return session->mOtherParticipantID;
+}
+
+EInstantMessage LLIMModel::getType(const LLUUID& session_id) const
+{
+ LLIMSession* session = findIMSession(session_id);
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return IM_COUNT;
+ }
+
+ return session->mType;
+}
+
+LLVoiceChannel* LLIMModel::getVoiceChannel( const LLUUID& session_id ) const
+{
+ LLIMSession* session = findIMSession(session_id);
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return NULL;
+ }
+
+ return session->mVoiceChannel;
+}
+
+LLIMSpeakerMgr* LLIMModel::getSpeakerManager( const LLUUID& session_id ) const
+{
+ LLIMSession* session = findIMSession(session_id);
+ if (!session)
+ {
+ llwarns << "session " << session_id << "does not exist " << llendl;
+ return NULL;
+ }
+
+ return session->mSpeakers;
+}
+
+
+// TODO get rid of other participant ID
+void LLIMModel::sendTypingState(LLUUID session_id, LLUUID other_participant_id, BOOL typing)
+{
+ std::string name;
+ LLAgentUI::buildFullname(name);
+
+ pack_instant_message(
+ gMessageSystem,
+ gAgent.getID(),
+ FALSE,
+ gAgent.getSessionID(),
+ other_participant_id,
+ name,
+ std::string("typing"),
+ IM_ONLINE,
+ (typing ? IM_TYPING_START : IM_TYPING_STOP),
+ session_id);
+ gAgent.sendReliableMessage();
+}
+
+void LLIMModel::sendLeaveSession(const LLUUID& session_id, const LLUUID& other_participant_id)
+{
+ if(session_id.notNull())
+ {
+ std::string name;
+ LLAgentUI::buildFullname(name);
+ pack_instant_message(
+ gMessageSystem,
+ gAgent.getID(),
+ FALSE,
+ gAgent.getSessionID(),
+ other_participant_id,
+ name,
+ LLStringUtil::null,
+ IM_ONLINE,
+ IM_SESSION_LEAVE,
+ session_id);
+ gAgent.sendReliableMessage();
+ }
+}
+
+//*TODO this method is better be moved to the LLIMMgr
+void LLIMModel::sendMessage(const std::string& utf8_text,
+ const LLUUID& im_session_id,
+ const LLUUID& other_participant_id,
+ EInstantMessage dialog)
+{
+ std::string name;
+ bool sent = false;
+ LLAgentUI::buildFullname(name);
+
+ const LLRelationship* info = NULL;
+ info = LLAvatarTracker::instance().getBuddyInfo(other_participant_id);
+
+ U8 offline = (!info || info->isOnline()) ? IM_ONLINE : IM_OFFLINE;
+
+ if((offline == IM_OFFLINE) && (LLVoiceClient::getInstance()->isOnlineSIP(other_participant_id)))
+ {
+ // User is online through the OOW connector, but not with a regular viewer. Try to send the message via SLVoice.
+ sent = gVoiceClient->sendTextMessage(other_participant_id, utf8_text);
+ }
+
+ if(!sent)
+ {
+ // Send message normally.
+
+ // default to IM_SESSION_SEND unless it's nothing special - in
+ // which case it's probably an IM to everyone.
+ U8 new_dialog = dialog;
+
+ if ( dialog != IM_NOTHING_SPECIAL )
+ {
+ new_dialog = IM_SESSION_SEND;
+ }
+ pack_instant_message(
+ gMessageSystem,
+ gAgent.getID(),
+ FALSE,
+ gAgent.getSessionID(),
+ other_participant_id,
+ name.c_str(),
+ utf8_text.c_str(),
+ offline,
+ (EInstantMessage)new_dialog,
+ im_session_id);
+ gAgent.sendReliableMessage();
+ }
+
+ // If there is a mute list and this is not a group chat...
+ if ( LLMuteList::getInstance() )
+ {
+ // ... the target should not be in our mute list for some message types.
+ // Auto-remove them if present.
+ switch( dialog )
+ {
+ case IM_NOTHING_SPECIAL:
+ case IM_GROUP_INVITATION:
+ case IM_INVENTORY_OFFERED:
+ case IM_SESSION_INVITE:
+ case IM_SESSION_P2P_INVITE:
+ case IM_SESSION_CONFERENCE_START:
+ case IM_SESSION_SEND: // This one is marginal - erring on the side of hearing.
+ case IM_LURE_USER:
+ case IM_GODLIKE_LURE_USER:
+ case IM_FRIENDSHIP_OFFERED:
+ LLMuteList::getInstance()->autoRemove(other_participant_id, LLMuteList::AR_IM);
+ break;
+ default: ; // do nothing
+ }
+ }
+
+ if((dialog == IM_NOTHING_SPECIAL) &&
+ (other_participant_id.notNull()))
+ {
+ // Do we have to replace the /me's here?
+ std::string from;
+ LLAgentUI::buildFullname(from);
+ LLIMModel::getInstance()->addMessage(im_session_id, from, gAgentID, utf8_text);
+
+ //local echo for the legacy communicate panel
+ std::string history_echo;
+ LLAgentUI::buildFullname(history_echo);
+
+ history_echo += ": " + utf8_text;
+
+ LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id);
+ if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID());
+
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
+ if (speaker_mgr)
+ {
+ speaker_mgr->speakerChatted(gAgentID);
+ speaker_mgr->setSpeakerTyping(gAgentID, FALSE);
+ }
+ }
+
+ // Add the recipient to the recent people list.
+ LLRecentPeople::instance().add(other_participant_id);
+}
+
+void session_starter_helper(
+ const LLUUID& temp_session_id,
+ const LLUUID& other_participant_id,
+ EInstantMessage im_type)
+{
+ LLMessageSystem *msg = gMessageSystem;
+
+ msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+
+ msg->nextBlockFast(_PREHASH_MessageBlock);
+ msg->addBOOLFast(_PREHASH_FromGroup, FALSE);
+ msg->addUUIDFast(_PREHASH_ToAgentID, other_participant_id);
+ msg->addU8Fast(_PREHASH_Offline, IM_ONLINE);
+ msg->addU8Fast(_PREHASH_Dialog, im_type);
+ msg->addUUIDFast(_PREHASH_ID, temp_session_id);
+ msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary
+
+ std::string name;
+ LLAgentUI::buildFullname(name);
+
+ msg->addStringFast(_PREHASH_FromAgentName, name);
+ msg->addStringFast(_PREHASH_Message, LLStringUtil::null);
+ msg->addU32Fast(_PREHASH_ParentEstateID, 0);
+ msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
+ msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
+}
+
+void start_deprecated_conference_chat(
+ const LLUUID& temp_session_id,
+ const LLUUID& creator_id,
+ const LLUUID& other_participant_id,
+ const LLSD& agents_to_invite)
+{
+ U8* bucket;
+ U8* pos;
+ S32 count;
+ S32 bucket_size;
+
+ // *FIX: this could suffer from endian issues
+ count = agents_to_invite.size();
+ bucket_size = UUID_BYTES * count;
+ bucket = new U8[bucket_size];
+ pos = bucket;
+
+ for(S32 i = 0; i < count; ++i)
+ {
+ LLUUID agent_id = agents_to_invite[i].asUUID();
+
+ memcpy(pos, &agent_id, UUID_BYTES);
+ pos += UUID_BYTES;
+ }
+
+ session_starter_helper(
+ temp_session_id,
+ other_participant_id,
+ IM_SESSION_CONFERENCE_START);
+
+ gMessageSystem->addBinaryDataFast(
+ _PREHASH_BinaryBucket,
+ bucket,
+ bucket_size);
+
+ gAgent.sendReliableMessage();
+
+ delete[] bucket;
+}
+
+class LLStartConferenceChatResponder : public LLHTTPClient::Responder
+{
+public:
+ LLStartConferenceChatResponder(
+ const LLUUID& temp_session_id,
+ const LLUUID& creator_id,
+ const LLUUID& other_participant_id,
+ const LLSD& agents_to_invite)
+ {
+ mTempSessionID = temp_session_id;
+ mCreatorID = creator_id;
+ mOtherParticipantID = other_participant_id;
+ mAgents = agents_to_invite;
+ }
+
+ virtual void error(U32 statusNum, const std::string& reason)
+ {
+ //try an "old school" way.
+ if ( statusNum == 400 )
+ {
+ start_deprecated_conference_chat(
+ mTempSessionID,
+ mCreatorID,
+ mOtherParticipantID,
+ mAgents);
+ }
+
+ //else throw an error back to the client?
+ //in theory we should have just have these error strings
+ //etc. set up in this file as opposed to the IMMgr,
+ //but the error string were unneeded here previously
+ //and it is not worth the effort switching over all
+ //the possible different language translations
+ }
+
+private:
+ LLUUID mTempSessionID;
+ LLUUID mCreatorID;
+ LLUUID mOtherParticipantID;
+
+ LLSD mAgents;
+};
+
+// Returns true if any messages were sent, false otherwise.
+// Is sort of equivalent to "does the server need to do anything?"
+bool LLIMModel::sendStartSession(
+ const LLUUID& temp_session_id,
+ const LLUUID& other_participant_id,
+ const std::vector<LLUUID>& ids,
+ EInstantMessage dialog)
+{
+ if ( dialog == IM_SESSION_GROUP_START )
+ {
+ session_starter_helper(
+ temp_session_id,
+ other_participant_id,
+ dialog);
+ gMessageSystem->addBinaryDataFast(
+ _PREHASH_BinaryBucket,
+ EMPTY_BINARY_BUCKET,
+ EMPTY_BINARY_BUCKET_SIZE);
+ gAgent.sendReliableMessage();
+
+ return true;
+ }
+ else if ( dialog == IM_SESSION_CONFERENCE_START )
+ {
+ LLSD agents;
+ for (int i = 0; i < (S32) ids.size(); i++)
+ {
+ agents.append(ids[i]);
+ }
+
+ //we have a new way of starting conference calls now
+ LLViewerRegion* region = gAgent.getRegion();
+ if (region)
+ {
+ std::string url = region->getCapability(
+ "ChatSessionRequest");
+ LLSD data;
+ data["method"] = "start conference";
+ data["session-id"] = temp_session_id;
+
+ data["params"] = agents;
+
+ LLHTTPClient::post(
+ url,
+ data,
+ new LLStartConferenceChatResponder(
+ temp_session_id,
+ gAgent.getID(),
+ other_participant_id,
+ data["params"]));
+ }
+ else
+ {
+ start_deprecated_conference_chat(
+ temp_session_id,
+ gAgent.getID(),
+ other_participant_id,
+ agents);
+ }
+
+ //we also need to wait for reply from the server in case of ad-hoc chat (we'll get new session id)
+ return true;
+ }
+
+ return false;
+}
+
+// static
+void LLIMModel::sendSessionInitialized(const LLUUID &session_id)
+{
+ LLIMSession* session = getInstance()->findIMSession(session_id);
+ if (session)
+ {
+ LLSD arg;
+ arg["session_id"] = session_id;
+ getInstance()->mSessionInitializedSignal(arg);
+ }
+}
+
+//
+// Helper Functions
+//
+
+class LLViewerChatterBoxInvitationAcceptResponder :
+ public LLHTTPClient::Responder
+{
+public:
+ LLViewerChatterBoxInvitationAcceptResponder(
+ const LLUUID& session_id,
+ LLIMMgr::EInvitationType invitation_type)
+ {
+ mSessionID = session_id;
+ mInvitiationType = invitation_type;
+ }
+
+ void result(const LLSD& content)
+ {
+ if ( gIMMgr)
+ {
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
+ if (speaker_mgr)
+ {
+ //we've accepted our invitation
+ //and received a list of agents that were
+ //currently in the session when the reply was sent
+ //to us. Now, it is possible that there were some agents
+ //to slip in/out between when that message was sent to us
+ //and now.
+
+ //the agent list updates we've received have been
+ //accurate from the time we were added to the session
+ //but unfortunately, our base that we are receiving here
+ //may not be the most up to date. It was accurate at
+ //some point in time though.
+ speaker_mgr->setSpeakers(content);
+
+ //we now have our base of users in the session
+ //that was accurate at some point, but maybe not now
+ //so now we apply all of the udpates we've received
+ //in case of race conditions
+ speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(mSessionID));
+ }
+
+ if (LLIMMgr::INVITATION_TYPE_VOICE == mInvitiationType)
+ {
+ gIMMgr->startCall(mSessionID);
+ }
+
+ if ((mInvitiationType == LLIMMgr::INVITATION_TYPE_VOICE
+ || mInvitiationType == LLIMMgr::INVITATION_TYPE_IMMEDIATE)
+ && LLIMModel::getInstance()->findIMSession(mSessionID))
+ {
+ // always open IM window when connecting to voice
+ LLIMFloater::show(mSessionID);
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(mSessionID);
+ gIMMgr->clearPendingInvitation(mSessionID);
+ }
+ }
+
+ void error(U32 statusNum, const std::string& reason)
+ {
+ //throw something back to the viewer here?
+ if ( gIMMgr )
+ {
+ gIMMgr->clearPendingAgentListUpdates(mSessionID);
+ gIMMgr->clearPendingInvitation(mSessionID);
+ if ( 404 == statusNum )
+ {
+ std::string error_string;
+ error_string = "does not exist";
+ gIMMgr->showSessionStartError(error_string, mSessionID);
+ }
+ }
+ }
+
+private:
+ LLUUID mSessionID;
+ LLIMMgr::EInvitationType mInvitiationType;
+};
+
+
+// the other_participant_id is either an agent_id, a group_id, or an inventory
+// folder item_id (collection of calling cards)
+
+// static
+LLUUID LLIMMgr::computeSessionID(
+ EInstantMessage dialog,
+ const LLUUID& other_participant_id)
+{
+ LLUUID session_id;
+ if (IM_SESSION_GROUP_START == dialog)
+ {
+ // slam group session_id to the group_id (other_participant_id)
+ session_id = other_participant_id;
+ }
+ else if (IM_SESSION_CONFERENCE_START == dialog)
+ {
+ session_id.generate();
+ }
+ else if (IM_SESSION_INVITE == dialog)
+ {
+ // use provided session id for invites
+ session_id = other_participant_id;
+ }
+ else
+ {
+ LLUUID agent_id = gAgent.getID();
+ if (other_participant_id == agent_id)
+ {
+ // if we try to send an IM to ourselves then the XOR would be null
+ // so we just make the session_id the same as the agent_id
+ session_id = agent_id;
+ }
+ else
+ {
+ // peer-to-peer or peer-to-asset session_id is the XOR
+ session_id = other_participant_id ^ agent_id;
+ }
+ }
+ return session_id;
+}
+
+inline LLFloater* getFloaterBySessionID(const LLUUID session_id)
+{
+ LLFloater* floater = NULL;
+ if ( gIMMgr )
+ {
+ floater = dynamic_cast < LLFloater* >
+ ( gIMMgr->findFloaterBySession(session_id) );
+ }
+ if ( !floater )
+ {
+ floater = dynamic_cast < LLFloater* >
+ ( LLIMFloater::findInstance(session_id) );
+ }
+ return floater;
+}
+
+void
+LLIMMgr::showSessionStartError(
+ const std::string& error_string,
+ const LLUUID session_id)
+{
+ const LLFloater* floater = getFloaterBySessionID (session_id);
+ if (!floater) return;
+
+ LLSD args;
+ args["REASON"] = LLTrans::getString(error_string);
+ args["RECIPIENT"] = floater->getTitle();
+
+ LLSD payload;
+ payload["session_id"] = session_id;
+
+ LLNotifications::instance().add(
+ "ChatterBoxSessionStartError",
+ args,
+ payload,
+ LLIMMgr::onConfirmForceCloseError);
+}
+
+void
+LLIMMgr::showSessionEventError(
+ const std::string& event_string,
+ const std::string& error_string,
+ const LLUUID session_id)
+{
+ const LLFloater* floater = getFloaterBySessionID (session_id);
+ if (!floater) return;
+
+ LLSD args;
+ args["REASON"] =
+ LLTrans::getString(error_string);
+ args["EVENT"] =
+ LLTrans::getString(event_string);
+ args["RECIPIENT"] = floater->getTitle();
+
+ LLNotifications::instance().add(
+ "ChatterBoxSessionEventError",
+ args);
+}
+
+void
+LLIMMgr::showSessionForceClose(
+ const std::string& reason_string,
+ const LLUUID session_id)
+{
+ const LLFloater* floater = getFloaterBySessionID (session_id);
+ if (!floater) return;
+
+ LLSD args;
+
+ args["NAME"] = floater->getTitle();
+ args["REASON"] = LLTrans::getString(reason_string);
+
+ LLSD payload;
+ payload["session_id"] = session_id;
+
+ LLNotifications::instance().add(
+ "ForceCloseChatterBoxSession",
+ args,
+ payload,
+ LLIMMgr::onConfirmForceCloseError);
+}
+
+//static
+bool
+LLIMMgr::onConfirmForceCloseError(
+ const LLSD& notification,
+ const LLSD& response)
+{
+ //only 1 option really
+ LLUUID session_id = notification["payload"]["session_id"];
+
+ LLFloater* floater = getFloaterBySessionID (session_id);
+ if ( floater )
+ {
+ floater->closeFloater(FALSE);
+ }
+ return false;
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLOutgoingCallDialog
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LLOutgoingCallDialog::LLOutgoingCallDialog(const LLSD& payload) :
+ LLDockableFloater(NULL, false, payload),
+ mPayload(payload)
+{
+}
+
+void LLOutgoingCallDialog::getAllowedRect(LLRect& rect)
+{
+ rect = gViewerWindow->getWorldViewRectScaled();
+}
+
+void LLOutgoingCallDialog::onOpen(const LLSD& key)
+{
+ // tell the user which voice channel they are leaving
+ if (!mPayload["old_channel_name"].asString().empty())
+ {
+ childSetTextArg("leaving", "[CURRENT_CHAT]", mPayload["old_channel_name"].asString());
+ }
+ else
+ {
+ childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat"));
+ }
+
+ std::string callee_name = mPayload["session_name"].asString();
+ if (callee_name == "anonymous")
+ {
+ callee_name = getString("anonymous");
+ }
+
+ setTitle(callee_name);
+
+ LLSD callee_id = mPayload["other_user_id"];
+ childSetTextArg("calling", "[CALLEE_NAME]", callee_name);
+ childSetTextArg("connecting", "[CALLEE_NAME]", callee_name);
+ LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
+ icon->setValue(callee_id);
+}
+
+
+//static
+void LLOutgoingCallDialog::onCancel(void* user_data)
+{
+ LLOutgoingCallDialog* self = (LLOutgoingCallDialog*)user_data;
+
+ if (!gIMMgr)
+ return;
+
+ LLUUID session_id = self->mPayload["session_id"].asUUID();
+ gIMMgr->endCall(session_id);
+
+ self->closeFloater();
+}
+
+
+BOOL LLOutgoingCallDialog::postBuild()
+{
+ BOOL success = LLDockableFloater::postBuild();
+
+ childSetAction("Cancel", onCancel, this);
+
+ // dock the dialog to the sys well, where other sys messages appear
+ setDockControl(new LLDockControl(LLBottomTray::getInstance()->getSysWell(),
+ this, getDockTongue(), LLDockControl::TOP,
+ boost::bind(&LLOutgoingCallDialog::getAllowedRect, this, _1)));
+
+ return success;
+}
+
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLIncomingCallDialog
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+LLIncomingCallDialog::LLIncomingCallDialog(const LLSD& payload) :
+ LLDockableFloater(NULL, false, payload),
+ mPayload(payload)
+{
+}
+
+BOOL LLIncomingCallDialog::postBuild()
+{
+ LLDockableFloater::postBuild();
+
+ LLSD caller_id = mPayload["caller_id"];
+ EInstantMessage type = (EInstantMessage)mPayload["type"].asInteger();
+
+ std::string call_type = getString("VoiceInviteP2P");
+ std::string caller_name = mPayload["caller_name"].asString();
+ if (caller_name == "anonymous")
+ {
+ caller_name = getString("anonymous");
+ }
+
+ setTitle(caller_name + " " + call_type);
+
+ // If it is not a P2P invite, then it's an AdHoc invite
+ if ( type != IM_SESSION_P2P_INVITE )
+ {
+ call_type = getString("VoiceInviteAdHoc");
+ }
+
+ // check to see if this is an Avaline call
+ LLUUID session_id = mPayload["session_id"].asUUID();
+ bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id);
+ childSetVisible("Start IM", is_avatar); // no IM for avaline
+
+ LLUICtrl* caller_name_widget = getChild<LLUICtrl>("caller name");
+ caller_name_widget->setValue(caller_name + " " + call_type);
+ LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
+ icon->setValue(caller_id);
+
+ childSetAction("Accept", onAccept, this);
+ childSetAction("Reject", onReject, this);
+ childSetAction("Start IM", onStartIM, this);
+ childSetFocus("Accept");
+
+ return TRUE;
+}
+
+void LLIncomingCallDialog::getAllowedRect(LLRect& rect)
+{
+ rect = gViewerWindow->getWorldViewRectScaled();
+}
+
+void LLIncomingCallDialog::onOpen(const LLSD& key)
+{
+ // tell the user which voice channel they would be leaving
+ LLVoiceChannel *voice = LLVoiceChannel::getCurrentVoiceChannel();
+ if (voice && !voice->getSessionName().empty())
+ {
+ childSetTextArg("question", "[CURRENT_CHAT]", voice->getSessionName());
+ }
+ else
+ {
+ childSetTextArg("question", "[CURRENT_CHAT]", getString("localchat"));
+ }
+
+ // dock the dialog to the sys well, where other sys messages appear
+ setDockControl(new LLDockControl(LLBottomTray::getInstance()->getSysWell(),
+ this, getDockTongue(), LLDockControl::TOP,
+ boost::bind(&LLIncomingCallDialog::getAllowedRect, this, _1)));
+}
+
+//static
+void LLIncomingCallDialog::onAccept(void* user_data)
+{
+ LLIncomingCallDialog* self = (LLIncomingCallDialog*)user_data;
+ self->processCallResponse(0);
+ self->closeFloater();
+}
+
+//static
+void LLIncomingCallDialog::onReject(void* user_data)
+{
+ LLIncomingCallDialog* self = (LLIncomingCallDialog*)user_data;
+ self->processCallResponse(1);
+ self->closeFloater();
+}
+
+//static
+void LLIncomingCallDialog::onStartIM(void* user_data)
+{
+ LLIncomingCallDialog* self = (LLIncomingCallDialog*)user_data;
+ self->processCallResponse(2);
+ self->closeFloater();
+}
+
+void LLIncomingCallDialog::processCallResponse(S32 response)
+{
+ if (!gIMMgr)
+ return;
+
+ LLUUID session_id = mPayload["session_id"].asUUID();
+ EInstantMessage type = (EInstantMessage)mPayload["type"].asInteger();
+ LLIMMgr::EInvitationType inv_type = (LLIMMgr::EInvitationType)mPayload["inv_type"].asInteger();
+ bool voice = true;
+ switch(response)
+ {
+ case 2: // start IM: just don't start the voice chat
+ {
+ voice = false;
+ /* FALLTHROUGH */
+ }
+ case 0: // accept
+ {
+ if (type == IM_SESSION_P2P_INVITE)
+ {
+ // create a normal IM session
+ session_id = gIMMgr->addP2PSession(
+ mPayload["session_name"].asString(),
+ mPayload["caller_id"].asUUID(),
+ mPayload["session_handle"].asString());
+
+ if (voice)
+ {
+ if (gIMMgr->startCall(session_id))
+ {
+ // always open IM window when connecting to voice
+ LLIMFloater::show(session_id);
+ }
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(session_id);
+ gIMMgr->clearPendingInvitation(session_id);
+ }
+ else
+ {
+ LLUUID session_id = gIMMgr->addSession(
+ mPayload["session_name"].asString(),
+ type,
+ session_id);
+ if (session_id != LLUUID::null)
+ {
+ LLIMFloater::show(session_id);
+ }
+
+ std::string url = gAgent.getRegion()->getCapability(
+ "ChatSessionRequest");
+
+ if (voice)
+ {
+ LLSD data;
+ data["method"] = "accept invitation";
+ data["session-id"] = session_id;
+ LLHTTPClient::post(
+ url,
+ data,
+ new LLViewerChatterBoxInvitationAcceptResponder(
+ session_id,
+ inv_type));
+ }
+ }
+ if (voice)
+ {
+ break;
+ }
+ }
+ case 1: // decline
+ {
+ if (type == IM_SESSION_P2P_INVITE)
+ {
+ if(gVoiceClient)
+ {
+ std::string s = mPayload["session_handle"].asString();
+ gVoiceClient->declineInvite(s);
+ }
+ }
+ else
+ {
+ std::string url = gAgent.getRegion()->getCapability(
+ "ChatSessionRequest");
+
+ LLSD data;
+ data["method"] = "decline invitation";
+ data["session-id"] = session_id;
+ LLHTTPClient::post(
+ url,
+ data,
+ NULL);
+ }
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(session_id);
+ gIMMgr->clearPendingInvitation(session_id);
+ }
+}
+
+bool inviteUserResponse(const LLSD& notification, const LLSD& response)
+{
+ if (!gIMMgr)
+ return false;
+
+ const LLSD& payload = notification["payload"];
+ LLUUID session_id = payload["session_id"].asUUID();
+ EInstantMessage type = (EInstantMessage)payload["type"].asInteger();
+ LLIMMgr::EInvitationType inv_type = (LLIMMgr::EInvitationType)payload["inv_type"].asInteger();
+ S32 option = LLNotification::getSelectedOption(notification, response);
+ switch(option)
+ {
+ case 0: // accept
+ {
+ if (type == IM_SESSION_P2P_INVITE)
+ {
+ // create a normal IM session
+ session_id = gIMMgr->addP2PSession(
+ payload["session_name"].asString(),
+ payload["caller_id"].asUUID(),
+ payload["session_handle"].asString(),
+ payload["session_uri"].asString());
+
+ if (gIMMgr->startCall(session_id))
+ {
+ // always open IM window when connecting to voice
+ LLIMFloater::show(session_id);
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(session_id);
+ gIMMgr->clearPendingInvitation(session_id);
+ }
+ else
+ {
+ LLUUID session_id = gIMMgr->addSession(
+ payload["session_name"].asString(),
+ type,
+ session_id);
+ if (session_id != LLUUID::null)
+ {
+ LLIMFloater::show(session_id);
+ }
+
+ std::string url = gAgent.getRegion()->getCapability(
+ "ChatSessionRequest");
+
+ LLSD data;
+ data["method"] = "accept invitation";
+ data["session-id"] = session_id;
+ LLHTTPClient::post(
+ url,
+ data,
+ new LLViewerChatterBoxInvitationAcceptResponder(
+ session_id,
+ inv_type));
+ }
+ }
+ break;
+ case 2: // mute (also implies ignore, so this falls through to the "ignore" case below)
+ {
+ // mute the sender of this invite
+ if (!LLMuteList::getInstance()->isMuted(payload["caller_id"].asUUID()))
+ {
+ LLMute mute(payload["caller_id"].asUUID(), payload["caller_name"].asString(), LLMute::AGENT);
+ LLMuteList::getInstance()->add(mute);
+ }
+ }
+ /* FALLTHROUGH */
+
+ case 1: // decline
+ {
+ if (type == IM_SESSION_P2P_INVITE)
+ {
+ if(gVoiceClient)
+ {
+ std::string s = payload["session_handle"].asString();
+ gVoiceClient->declineInvite(s);
+ }
+ }
+ else
+ {
+ std::string url = gAgent.getRegion()->getCapability(
+ "ChatSessionRequest");
+
+ LLSD data;
+ data["method"] = "decline invitation";
+ data["session-id"] = session_id;
+ LLHTTPClient::post(
+ url,
+ data,
+ NULL);
+ }
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(session_id);
+ gIMMgr->clearPendingInvitation(session_id);
+ break;
+ }
+
+ return false;
+}
+
+//
+// Member Functions
+//
+
+LLIMMgr::LLIMMgr() :
+ mIMReceived(FALSE)
+{
+ mPendingInvitations = LLSD::emptyMap();
+ mPendingAgentListUpdates = LLSD::emptyMap();
+}
+
+// Add a message to a session.
+void LLIMMgr::addMessage(
+ const LLUUID& session_id,
+ const LLUUID& target_id,
+ const std::string& from,
+ const std::string& msg,
+ const std::string& session_name,
+ EInstantMessage dialog,
+ U32 parent_estate_id,
+ const LLUUID& region_id,
+ const LLVector3& position,
+ bool link_name) // If this is true, then we insert the name and link it to a profile
+{
+ LLUUID other_participant_id = target_id;
+
+ // don't process muted IMs
+ if (LLMuteList::getInstance()->isMuted(
+ other_participant_id,
+ LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from))
+ {
+ return;
+ }
+
+ LLFloaterIMPanel* floater;
+ LLUUID new_session_id = session_id;
+ if (new_session_id.isNull())
+ {
+ //no session ID...compute new one
+ new_session_id = computeSessionID(dialog, other_participant_id);
+ }
+
+ //*NOTE session_name is empty in case of incoming P2P sessions
+ std::string fixed_session_name = from;
+ if(!session_name.empty() && session_name.size()>1)
+ {
+ fixed_session_name = session_name;
+ }
+
+ bool new_session = !hasSession(new_session_id);
+ if (new_session)
+ {
+ LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id);
+ }
+
+ floater = findFloaterBySession(new_session_id);
+ if (!floater)
+ {
+ floater = findFloaterBySession(other_participant_id);
+ if (floater)
+ {
+ llinfos << "found the IM session " << session_id
+ << " by participant " << other_participant_id << llendl;
+ }
+ }
+
+ // create IM window as necessary
+ if(!floater)
+ {
+ floater = createFloater(
+ new_session_id,
+ other_participant_id,
+ fixed_session_name,
+ dialog,
+ FALSE);
+ }
+
+ if (new_session)
+ {
+ // When we get a new IM, and if you are a god, display a bit
+ // of information about the source. This is to help liaisons
+ // when answering questions.
+ if(gAgent.isGodlike())
+ {
+ // *TODO:translate (low priority, god ability)
+ std::ostringstream bonus_info;
+ bonus_info << LLTrans::getString("***")+ " "+ LLTrans::getString("IMParentEstate") + ":" + " "
+ << parent_estate_id
+ << ((parent_estate_id == 1) ? "," + LLTrans::getString("IMMainland") : "")
+ << ((parent_estate_id == 5) ? "," + LLTrans::getString ("IMTeen") : "");
+
+ // once we have web-services (or something) which returns
+ // information about a region id, we can print this out
+ // and even have it link to map-teleport or something.
+ //<< "*** region_id: " << region_id << std::endl
+ //<< "*** position: " << position << std::endl;
+
+ floater->addHistoryLine(bonus_info.str(), LLUIColorTable::instance().getColor("SystemChatColor"));
+ LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
+ }
+
+ make_ui_sound("UISndNewIncomingIMSession");
+ }
+
+ // now add message to floater
+ bool is_from_system = target_id.isNull() || (from == SYSTEM_FROM);
+ const LLColor4& color = ( is_from_system ?
+ LLUIColorTable::instance().getColor("SystemChatColor") :
+ LLUIColorTable::instance().getColor("IMChatColor"));
+ if ( !link_name )
+ {
+ floater->addHistoryLine(msg,color); // No name to prepend, so just add the message normally
+ }
+ else
+ {
+ floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message
+ }
+
+ LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
+
+ if( !LLFloaterReg::instanceVisible("communicate") && !floater->getVisible())
+ {
+ LLFloaterChatterBox* chat_floater = LLFloaterChatterBox::getInstance();
+
+ //if the IM window is not open and the floater is not visible (i.e. not torn off)
+ LLFloater* previouslyActiveFloater = chat_floater->getActiveFloater();
+
+ // select the newly added floater (or the floater with the new line added to it).
+ // it should be there.
+ chat_floater->selectFloater(floater);
+
+ //there was a previously unseen IM, make that old tab flashing
+ //it is assumed that the most recently unseen IM tab is the one current selected/active
+ if ( previouslyActiveFloater && getIMReceived() )
+ {
+ chat_floater->setFloaterFlashing(previouslyActiveFloater, TRUE);
+ }
+
+ //notify of a new IM
+ notifyNewIM();
+ }
+}
+
+void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
+{
+ LLUIString message;
+
+ // null session id means near me (chat history)
+ if (session_id.isNull())
+ {
+ message = LLTrans::getString(message_name);
+ message.setArgs(args);
+
+ LLChat chat(message);
+ chat.mSourceType = CHAT_SOURCE_SYSTEM;
+ LLFloaterChat::addChatHistory(chat);
+ }
+ else // going to IM session
+ {
+ if (hasSession(session_id))
+ {
+ message = LLTrans::getString(message_name + "-im");
+ message.setArgs(args);
+ gIMMgr->addMessage(session_id, LLUUID::null, SYSTEM_FROM, message.getString());
+ }
+ }
+}
+
+void LLIMMgr::notifyNewIM()
+{
+ if(!LLFloaterReg::instanceVisible("communicate"))
+ {
+ mIMReceived = TRUE;
+ }
+}
+
+S32 LLIMMgr::getNumberOfUnreadIM()
+{
+ std::map<LLUUID, LLIMModel::LLIMSession*>::iterator it;
+
+ S32 num = 0;
+ for(it = LLIMModel::getInstance()->mId2SessionMap.begin(); it != LLIMModel::getInstance()->mId2SessionMap.end(); ++it)
+ {
+ num += (*it).second->mNumUnread;
+ }
+
+ return num;
+}
+
+void LLIMMgr::clearNewIMNotification()
+{
+ mIMReceived = FALSE;
+}
+
+BOOL LLIMMgr::getIMReceived() const
+{
+ return mIMReceived;
+}
+
+LLUUID LLIMMgr::addP2PSession(const std::string& name,
+ const LLUUID& other_participant_id,
+ const std::string& voice_session_handle,
+ const std::string& caller_uri)
+{
+ LLUUID session_id = addSession(name, IM_NOTHING_SPECIAL, other_participant_id);
+ if (session_id != LLUUID::null)
+ {
+ LLIMFloater::show(session_id);
+ }
+
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
+ if (speaker_mgr)
+ {
+ LLVoiceChannelP2P* voice_channel = dynamic_cast<LLVoiceChannelP2P*>(speaker_mgr->getVoiceChannel());
+ if (voice_channel)
+ {
+ voice_channel->setSessionHandle(voice_session_handle, caller_uri);
+ }
+ }
+ return session_id;
+}
+
+// This adds a session to the talk view. The name is the local name of
+// the session, dialog specifies the type of session. If the session
+// exists, it is brought forward. Specifying id = NULL results in an
+// im session to everyone. Returns the uuid of the session.
+LLUUID LLIMMgr::addSession(
+ const std::string& name,
+ EInstantMessage dialog,
+ const LLUUID& other_participant_id)
+{
+ LLDynamicArray<LLUUID> ids;
+ ids.put(other_participant_id);
+ return addSession(name, dialog, other_participant_id, ids);
+}
+
+// Adds a session using the given session_id. If the session already exists
+// the dialog type is assumed correct. Returns the uuid of the session.
+LLUUID LLIMMgr::addSession(
+ const std::string& name,
+ EInstantMessage dialog,
+ const LLUUID& other_participant_id,
+ const LLDynamicArray<LLUUID>& ids)
+{
+ if (0 == ids.getLength())
+ {
+ return LLUUID::null;
+ }
+
+ LLUUID session_id = computeSessionID(dialog,other_participant_id);
+
+ bool new_session = !LLIMModel::getInstance()->findIMSession(session_id);
+
+ if (new_session)
+ {
+ LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids);
+ }
+
+
+ //*TODO remove this "floater" thing when Communicate Floater's gone
+ LLFloaterIMPanel* floater = findFloaterBySession(session_id);
+ if(!floater)
+ {
+ // On creation, use the first element of ids as the
+ // "other_participant_id"
+ floater = createFloater(
+ session_id,
+ other_participant_id,
+ name,
+ dialog,
+ TRUE,
+ ids);
+ }
+
+ //we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions
+ if (!new_session) return session_id;
+
+ noteOfflineUsers(session_id, floater, ids);
+
+ // Only warn for regular IMs - not group IMs
+ if( dialog == IM_NOTHING_SPECIAL )
+ {
+ noteMutedUsers(session_id, floater, ids);
+ }
+
+ return session_id;
+}
+
+bool LLIMMgr::leaveSession(const LLUUID& session_id)
+{
+ LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(session_id);
+ if (!im_session) return false;
+
+ LLIMModel::getInstance()->sendLeaveSession(session_id, im_session->mOtherParticipantID);
+ gIMMgr->removeSession(session_id);
+ return true;
+}
+
+// Removes data associated with a particular session specified by session_id
+void LLIMMgr::removeSession(const LLUUID& session_id)
+{
+ llassert_always(hasSession(session_id));
+
+ //*TODO remove this floater thing when Communicate Floater is being deleted (IB)
+ LLFloaterIMPanel* floater = findFloaterBySession(session_id);
+ if(floater)
+ {
+ mFloaters.erase(floater->getHandle());
+ LLFloaterChatterBox::getInstance()->removeFloater(floater);
+ }
+
+ clearPendingInvitation(session_id);
+ clearPendingAgentListUpdates(session_id);
+
+ LLIMModel::getInstance()->clearSession(session_id);
+
+ notifyObserverSessionRemoved(session_id);
+}
+
+void LLIMMgr::inviteToSession(
+ const LLUUID& session_id,
+ const std::string& session_name,
+ const LLUUID& caller_id,
+ const std::string& caller_name,
+ EInstantMessage type,
+ EInvitationType inv_type,
+ const std::string& session_handle,
+ const std::string& session_uri)
+{
+ //ignore invites from muted residents
+ if (LLMuteList::getInstance()->isMuted(caller_id))
+ {
+ return;
+ }
+
+ std::string notify_box_type;
+
+ BOOL ad_hoc_invite = FALSE;
+ if(type == IM_SESSION_P2P_INVITE)
+ {
+ //P2P is different...they only have voice invitations
+ notify_box_type = "VoiceInviteP2P";
+ }
+ else if ( gAgent.isInGroup(session_id) )
+ {
+ //only really old school groups have voice invitations
+ notify_box_type = "VoiceInviteGroup";
+ }
+ else if ( inv_type == INVITATION_TYPE_VOICE )
+ {
+ //else it's an ad-hoc
+ //and a voice ad-hoc
+ notify_box_type = "VoiceInviteAdHoc";
+ ad_hoc_invite = TRUE;
+ }
+ else if ( inv_type == INVITATION_TYPE_IMMEDIATE )
+ {
+ notify_box_type = "InviteAdHoc";
+ ad_hoc_invite = TRUE;
+ }
+
+ LLSD payload;
+ payload["session_id"] = session_id;
+ payload["session_name"] = session_name;
+ payload["caller_id"] = caller_id;
+ payload["caller_name"] = caller_name;
+ payload["type"] = type;
+ payload["inv_type"] = inv_type;
+ payload["session_handle"] = session_handle;
+ payload["session_uri"] = session_uri;
+ payload["notify_box_type"] = notify_box_type;
+
+ LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id);
+ if (channelp && channelp->callStarted())
+ {
+ // you have already started a call to the other user, so just accept the invite
+ LLNotifications::instance().forceResponse(LLNotification::Params("VoiceInviteP2P").payload(payload), 0);
+ return;
+ }
+
+ if (type == IM_SESSION_P2P_INVITE || ad_hoc_invite)
+ {
+ // is the inviter a friend?
+ if (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL)
+ {
+ // if not, and we are ignoring voice invites from non-friends
+ // then silently decline
+ if (gSavedSettings.getBOOL("VoiceCallsFriendsOnly"))
+ {
+ // invite not from a friend, so decline
+ LLNotifications::instance().forceResponse(LLNotification::Params("VoiceInviteP2P").payload(payload), 1);
+ return;
+ }
+ }
+ }
+
+ if ( !mPendingInvitations.has(session_id.asString()) )
+ {
+ if (caller_name.empty())
+ {
+ gCacheName->get(caller_id, FALSE, boost::bind(&LLIMMgr::onInviteNameLookup, payload, _1, _2, _3, _4));
+ }
+ else
+ {
+ if (notify_box_type == "VoiceInviteP2P" || notify_box_type == "VoiceInviteAdHoc")
+ {
+ LLFloaterReg::showInstance("incoming_call", payload, TRUE);
+ }
+ else
+ {
+ LLSD args;
+ args["NAME"] = caller_name;
+ args["GROUP"] = session_name;
+
+ LLNotifications::instance().add(notify_box_type, args, payload, &inviteUserResponse);
+ }
+ }
+ mPendingInvitations[session_id.asString()] = LLSD();
+ }
+}
+
+void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
+{
+ payload["caller_name"] = first + " " + last;
+ payload["session_name"] = payload["caller_name"].asString();
+
+ std::string notify_box_type = payload["notify_box_type"].asString();
+
+ if (notify_box_type == "VoiceInviteP2P" || notify_box_type == "VoiceInviteAdHoc")
+ {
+ LLFloaterReg::showInstance("incoming_call", payload, TRUE);
+ }
+ else
+ {
+ LLSD args;
+ args["NAME"] = payload["caller_name"].asString();
+
+ LLNotifications::instance().add(
+ payload["notify_box_type"].asString(),
+ args,
+ payload,
+ &inviteUserResponse);
+ }
+}
+
+void LLIMMgr::disconnectAllSessions()
+{
+ LLFloaterIMPanel* floater = NULL;
+ std::set<LLHandle<LLFloater> >::iterator handle_it;
+ for(handle_it = mFloaters.begin();
+ handle_it != mFloaters.end();
+ )
+ {
+ floater = (LLFloaterIMPanel*)handle_it->get();
+
+ // MUST do this BEFORE calling floater->onClose() because that may remove the item from the set, causing the subsequent increment to crash.
+ ++handle_it;
+
+ if (floater)
+ {
+ floater->setEnabled(FALSE);
+ floater->closeFloater(TRUE);
+ }
+ }
+}
+
+
+// This method returns the im panel corresponding to the uuid
+// provided. The uuid can either be a session id or an agent
+// id. Returns NULL if there is no matching panel.
+LLFloaterIMPanel* LLIMMgr::findFloaterBySession(const LLUUID& session_id)
+{
+ LLFloaterIMPanel* rv = NULL;
+ std::set<LLHandle<LLFloater> >::iterator handle_it;
+ for(handle_it = mFloaters.begin();
+ handle_it != mFloaters.end();
+ ++handle_it)
+ {
+ rv = (LLFloaterIMPanel*)handle_it->get();
+ if(rv && session_id == rv->getSessionID())
+ {
+ break;
+ }
+ rv = NULL;
+ }
+ return rv;
+}
+
+
+BOOL LLIMMgr::hasSession(const LLUUID& session_id)
+{
+ return LLIMModel::getInstance()->findIMSession(session_id) != NULL;
+}
+
+void LLIMMgr::clearPendingInvitation(const LLUUID& session_id)
+{
+ if ( mPendingInvitations.has(session_id.asString()) )
+ {
+ mPendingInvitations.erase(session_id.asString());
+ }
+}
+
+void LLIMMgr::processAgentListUpdates(const LLUUID& session_id, const LLSD& body)
+{
+ LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
+ if ( im_floater )
+ {
+ im_floater->processAgentListUpdates(body);
+ }
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
+ if (speaker_mgr)
+ {
+ speaker_mgr->updateSpeakers(body);
+ }
+ else
+ {
+ //we don't have a speaker manager yet..something went wrong
+ //we are probably receiving an update here before
+ //a start or an acceptance of an invitation. Race condition.
+ gIMMgr->addPendingAgentListUpdates(
+ session_id,
+ body);
+ }
+}
+
+LLSD LLIMMgr::getPendingAgentListUpdates(const LLUUID& session_id)
+{
+ if ( mPendingAgentListUpdates.has(session_id.asString()) )
+ {
+ return mPendingAgentListUpdates[session_id.asString()];
+ }
+ else
+ {
+ return LLSD();
+ }
+}
+
+void LLIMMgr::addPendingAgentListUpdates(
+ const LLUUID& session_id,
+ const LLSD& updates)
+{
+ LLSD::map_const_iterator iter;
+
+ if ( !mPendingAgentListUpdates.has(session_id.asString()) )
+ {
+ //this is a new agent list update for this session
+ mPendingAgentListUpdates[session_id.asString()] = LLSD::emptyMap();
+ }
+
+ if (
+ updates.has("agent_updates") &&
+ updates["agent_updates"].isMap() &&
+ updates.has("updates") &&
+ updates["updates"].isMap() )
+ {
+ //new school update
+ LLSD update_types = LLSD::emptyArray();
+ LLSD::array_iterator array_iter;
+
+ update_types.append("agent_updates");
+ update_types.append("updates");
+
+ for (
+ array_iter = update_types.beginArray();
+ array_iter != update_types.endArray();
+ ++array_iter)
+ {
+ //we only want to include the last update for a given agent
+ for (
+ iter = updates[array_iter->asString()].beginMap();
+ iter != updates[array_iter->asString()].endMap();
+ ++iter)
+ {
+ mPendingAgentListUpdates[session_id.asString()][array_iter->asString()][iter->first] =
+ iter->second;
+ }
+ }
+ }
+ else if (
+ updates.has("updates") &&
+ updates["updates"].isMap() )
+ {
+ //old school update where the SD contained just mappings
+ //of agent_id -> "LEAVE"/"ENTER"
+
+ //only want to keep last update for each agent
+ for (
+ iter = updates["updates"].beginMap();
+ iter != updates["updates"].endMap();
+ ++iter)
+ {
+ mPendingAgentListUpdates[session_id.asString()]["updates"][iter->first] =
+ iter->second;
+ }
+ }
+}
+
+void LLIMMgr::clearPendingAgentListUpdates(const LLUUID& session_id)
+{
+ if ( mPendingAgentListUpdates.has(session_id.asString()) )
+ {
+ mPendingAgentListUpdates.erase(session_id.asString());
+ }
+}
+
+void LLIMMgr::notifyObserverSessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
+{
+ for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++)
+ {
+ (*it)->sessionAdded(session_id, name, other_participant_id);
+ }
+}
+
+void LLIMMgr::notifyObserverSessionRemoved(const LLUUID& session_id)
+{
+ for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++)
+ {
+ (*it)->sessionRemoved(session_id);
+ }
+}
+
+void LLIMMgr::notifyObserverSessionIDUpdated( const LLUUID& old_session_id, const LLUUID& new_session_id )
+{
+ for (session_observers_list_t::iterator it = mSessionObservers.begin(); it != mSessionObservers.end(); it++)
+ {
+ (*it)->sessionIDUpdated(old_session_id, new_session_id);
+ }
+
+}
+
+void LLIMMgr::addSessionObserver(LLIMSessionObserver *observer)
+{
+ mSessionObservers.push_back(observer);
+}
+
+void LLIMMgr::removeSessionObserver(LLIMSessionObserver *observer)
+{
+ mSessionObservers.remove(observer);
+}
+
+bool LLIMMgr::startCall(const LLUUID& session_id)
+{
+ LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(session_id);
+ if (!voice_channel) return false;
+
+ voice_channel->activate();
+ return true;
+}
+
+bool LLIMMgr::endCall(const LLUUID& session_id)
+{
+ LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(session_id);
+ if (!voice_channel) return false;
+
+ voice_channel->deactivate();
+ return true;
+}
+
+// create a floater and update internal representation for
+// consistency. Returns the pointer, caller (the class instance since
+// it is a private method) is not responsible for deleting the
+// pointer. Add the floater to this but do not select it.
+LLFloaterIMPanel* LLIMMgr::createFloater(
+ const LLUUID& session_id,
+ const LLUUID& other_participant_id,
+ const std::string& session_label,
+ EInstantMessage dialog,
+ BOOL user_initiated,
+ const LLDynamicArray<LLUUID>& ids)
+{
+ if (session_id.isNull())
+ {
+ llwarns << "Creating LLFloaterIMPanel with null session ID" << llendl;
+ }
+
+ llinfos << "LLIMMgr::createFloater: from " << other_participant_id
+ << " in session " << session_id << llendl;
+ LLFloaterIMPanel* floater = new LLFloaterIMPanel(session_label,
+ session_id,
+ other_participant_id,
+ ids,
+ dialog);
+ LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END;
+ LLFloaterChatterBox::getInstance()->addFloater(floater, FALSE, i_pt);
+ mFloaters.insert(floater->getHandle());
+ return floater;
+}
+
+void LLIMMgr::noteOfflineUsers(
+ const LLUUID& session_id,
+ LLFloaterIMPanel* floater,
+ const LLDynamicArray<LLUUID>& ids)
+{
+ S32 count = ids.count();
+ if(count == 0)
+ {
+ const std::string& only_user = LLTrans::getString("only_user_message");
+ if (floater)
+ {
+ floater->addHistoryLine(only_user, LLUIColorTable::instance().getColor("SystemChatColor"));
+ }
+ LLIMModel::getInstance()->addMessage(session_id, SYSTEM_FROM, LLUUID::null, only_user);
+ }
+ else
+ {
+ const LLRelationship* info = NULL;
+ LLAvatarTracker& at = LLAvatarTracker::instance();
+ LLIMModel& im_model = LLIMModel::instance();
+ for(S32 i = 0; i < count; ++i)
+ {
+ info = at.getBuddyInfo(ids.get(i));
+ std::string first, last;
+ if(info && !info->isOnline()
+ && gCacheName->getName(ids.get(i), first, last))
+ {
+ LLUIString offline = LLTrans::getString("offline_message");
+ offline.setArg("[FIRST]", first);
+ offline.setArg("[LAST]", last);
+ im_model.proccessOnlineOfflineNotification(session_id, offline);
+ }
+ }
+ }
+}
+
+void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater,
+ const LLDynamicArray<LLUUID>& ids)
+{
+ // Don't do this if we don't have a mute list.
+ LLMuteList *ml = LLMuteList::getInstance();
+ if( !ml )
+ {
+ return;
+ }
+
+ S32 count = ids.count();
+ if(count > 0)
+ {
+ LLIMModel* im_model = LLIMModel::getInstance();
+
+ for(S32 i = 0; i < count; ++i)
+ {
+ if( ml->isMuted(ids.get(i)) )
+ {
+ LLUIString muted = LLTrans::getString("muted_message");
+
+ //*TODO remove this "floater" thing when Communicate Floater's gone
+ floater->addHistoryLine(muted);
+
+ im_model->addMessage(session_id, SYSTEM_FROM, LLUUID::null, muted);
+ break;
+ }
+ }
+ }
+}
+
+void LLIMMgr::processIMTypingStart(const LLIMInfo* im_info)
+{
+ processIMTypingCore(im_info, TRUE);
+}
+
+void LLIMMgr::processIMTypingStop(const LLIMInfo* im_info)
+{
+ processIMTypingCore(im_info, FALSE);
+}
+
+void LLIMMgr::processIMTypingCore(const LLIMInfo* im_info, BOOL typing)
+{
+ LLUUID session_id = computeSessionID(im_info->mIMType, im_info->mFromID);
+ LLFloaterIMPanel* floater = findFloaterBySession(session_id);
+ if (floater)
+ {
+ floater->processIMTyping(im_info, typing);
+ }
+
+ LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
+ if ( im_floater )
+ {
+ im_floater->processIMTyping(im_info, typing);
+ }
+}
+
+class LLViewerChatterBoxSessionStartReply : public LLHTTPNode
+{
+public:
+ virtual void describe(Description& desc) const
+ {
+ desc.shortInfo("Used for receiving a reply to a request to initialize an ChatterBox session");
+ desc.postAPI();
+ desc.input(
+ "{\"client_session_id\": UUID, \"session_id\": UUID, \"success\" boolean, \"reason\": string");
+ desc.source(__FILE__, __LINE__);
+ }
+
+ virtual void post(ResponsePtr response,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ LLSD body;
+ LLUUID temp_session_id;
+ LLUUID session_id;
+ bool success;
+
+ body = input["body"];
+ success = body["success"].asBoolean();
+ temp_session_id = body["temp_session_id"].asUUID();
+
+ if ( success )
+ {
+ session_id = body["session_id"].asUUID();
+
+ LLIMModel::getInstance()->processSessionInitializedReply(temp_session_id, session_id);
+
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id);
+ if (speaker_mgr)
+ {
+ speaker_mgr->setSpeakers(body);
+ speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(session_id));
+ }
+
+ LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id);
+ if (floaterp)
+ {
+ if ( body.has("session_info") )
+ {
+ floaterp->processSessionUpdate(body["session_info"]);
+ }
+ }
+
+ LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
+ if ( im_floater )
+ {
+ if ( body.has("session_info") )
+ {
+ im_floater->processSessionUpdate(body["session_info"]);
+ }
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(session_id);
+ }
+ else
+ {
+ //throw an error dialog and close the temp session's floater
+ gIMMgr->showSessionStartError(body["error"].asString(), temp_session_id);
+ }
+
+ gIMMgr->clearPendingAgentListUpdates(session_id);
+ }
+};
+
+class LLViewerChatterBoxSessionEventReply : public LLHTTPNode
+{
+public:
+ virtual void describe(Description& desc) const
+ {
+ desc.shortInfo("Used for receiving a reply to a ChatterBox session event");
+ desc.postAPI();
+ desc.input(
+ "{\"event\": string, \"reason\": string, \"success\": boolean, \"session_id\": UUID");
+ desc.source(__FILE__, __LINE__);
+ }
+
+ virtual void post(ResponsePtr response,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ LLUUID session_id;
+ bool success;
+
+ LLSD body = input["body"];
+ success = body["success"].asBoolean();
+ session_id = body["session_id"].asUUID();
+
+ if ( !success )
+ {
+ //throw an error dialog
+ gIMMgr->showSessionEventError(
+ body["event"].asString(),
+ body["error"].asString(),
+ session_id);
+ }
+ }
+};
+
+class LLViewerForceCloseChatterBoxSession: public LLHTTPNode
+{
+public:
+ virtual void post(ResponsePtr response,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ LLUUID session_id;
+ std::string reason;
+
+ session_id = input["body"]["session_id"].asUUID();
+ reason = input["body"]["reason"].asString();
+
+ gIMMgr->showSessionForceClose(reason, session_id);
+ }
+};
+
+class LLViewerChatterBoxSessionAgentListUpdates : public LLHTTPNode
+{
+public:
+ virtual void post(
+ ResponsePtr responder,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ const LLUUID& session_id = input["body"]["session_id"].asUUID();
+ gIMMgr->processAgentListUpdates(session_id, input["body"]);
+ }
+};
+
+class LLViewerChatterBoxSessionUpdate : public LLHTTPNode
+{
+public:
+ virtual void post(
+ ResponsePtr responder,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ LLUUID session_id = input["body"]["session_id"].asUUID();
+ LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id);
+ if (floaterp)
+ {
+ floaterp->processSessionUpdate(input["body"]["info"]);
+ }
+ LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
+ if ( im_floater )
+ {
+ im_floater->processSessionUpdate(input["body"]["info"]);
+ }
+ }
+};
+
+
+class LLViewerChatterBoxInvitation : public LLHTTPNode
+{
+public:
+
+ virtual void post(
+ ResponsePtr response,
+ const LLSD& context,
+ const LLSD& input) const
+ {
+ //for backwards compatiblity reasons...we need to still
+ //check for 'text' or 'voice' invitations...bleh
+ if ( input["body"].has("instantmessage") )
+ {
+ LLSD message_params =
+ input["body"]["instantmessage"]["message_params"];
+
+ //do something here to have the IM invite behave
+ //just like a normal IM
+ //this is just replicated code from process_improved_im
+ //and should really go in it's own function -jwolk
+ if (gNoRender)
+ {
+ return;
+ }
+ LLChat chat;
+
+ std::string message = message_params["message"].asString();
+ std::string name = message_params["from_name"].asString();
+ LLUUID from_id = message_params["from_id"].asUUID();
+ LLUUID session_id = message_params["id"].asUUID();
+ std::vector<U8> bin_bucket = message_params["data"]["binary_bucket"].asBinary();
+ U8 offline = (U8)message_params["offline"].asInteger();
+
+ time_t timestamp =
+ (time_t) message_params["timestamp"].asInteger();
+
+ BOOL is_busy = gAgent.getBusy();
+ BOOL is_muted = LLMuteList::getInstance()->isMuted(
+ from_id,
+ name,
+ LLMute::flagTextChat);
+
+ BOOL is_linden = LLMuteList::getInstance()->isLinden(name);
+ std::string separator_string(": ");
+
+ chat.mMuted = is_muted && !is_linden;
+ chat.mFromID = from_id;
+ chat.mFromName = name;
+
+ if (!is_linden && (is_busy || is_muted))
+ {
+ return;
+ }
+
+ // standard message, not from system
+ std::string saved;
+ if(offline == IM_OFFLINE)
+ {
+ saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
+ }
+ std::string buffer = saved + message;
+
+ BOOL is_this_agent = FALSE;
+ if(from_id == gAgentID)
+ {
+ is_this_agent = TRUE;
+ }
+ gIMMgr->addMessage(
+ session_id,
+ from_id,
+ name,
+ buffer,
+ std::string((char*)&bin_bucket[0]),
+ IM_SESSION_INVITE,
+ message_params["parent_estate_id"].asInteger(),
+ message_params["region_id"].asUUID(),
+ ll_vector3_from_sd(message_params["position"]),
+ true);
+
+ chat.mText = std::string("IM: ") + name + separator_string + saved + message;
+ LLFloaterChat::addChat(chat, TRUE, is_this_agent);
+
+ //K now we want to accept the invitation
+ std::string url = gAgent.getRegion()->getCapability(
+ "ChatSessionRequest");
+
+ if ( url != "" )
+ {
+ LLSD data;
+ data["method"] = "accept invitation";
+ data["session-id"] = session_id;
+ LLHTTPClient::post(
+ url,
+ data,
+ new LLViewerChatterBoxInvitationAcceptResponder(
+ session_id,
+ LLIMMgr::INVITATION_TYPE_INSTANT_MESSAGE));
+ }
+ } //end if invitation has instant message
+ else if ( input["body"].has("voice") )
+ {
+ if (gNoRender)
+ {
+ return;
+ }
+
+ if(!LLVoiceClient::voiceEnabled())
+ {
+ // Don't display voice invites unless the user has voice enabled.
+ return;
+ }
+
+ gIMMgr->inviteToSession(
+ input["body"]["session_id"].asUUID(),
+ input["body"]["session_name"].asString(),
+ input["body"]["from_id"].asUUID(),
+ input["body"]["from_name"].asString(),
+ IM_SESSION_INVITE,
+ LLIMMgr::INVITATION_TYPE_VOICE);
+ }
+ else if ( input["body"].has("immediate") )
+ {
+ gIMMgr->inviteToSession(
+ input["body"]["session_id"].asUUID(),
+ input["body"]["session_name"].asString(),
+ input["body"]["from_id"].asUUID(),
+ input["body"]["from_name"].asString(),
+ IM_SESSION_INVITE,
+ LLIMMgr::INVITATION_TYPE_IMMEDIATE);
+ }
+ }
+};
+
+LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>
+ gHTTPRegistrationMessageChatterboxsessionstartreply(
+ "/message/ChatterBoxSessionStartReply");
+
+LLHTTPRegistration<LLViewerChatterBoxSessionEventReply>
+ gHTTPRegistrationMessageChatterboxsessioneventreply(
+ "/message/ChatterBoxSessionEventReply");
+
+LLHTTPRegistration<LLViewerForceCloseChatterBoxSession>
+ gHTTPRegistrationMessageForceclosechatterboxsession(
+ "/message/ForceCloseChatterBoxSession");
+
+LLHTTPRegistration<LLViewerChatterBoxSessionAgentListUpdates>
+ gHTTPRegistrationMessageChatterboxsessionagentlistupdates(
+ "/message/ChatterBoxSessionAgentListUpdates");
+
+LLHTTPRegistration<LLViewerChatterBoxSessionUpdate>
+ gHTTPRegistrationMessageChatterBoxSessionUpdate(
+ "/message/ChatterBoxSessionUpdate");
+
+LLHTTPRegistration<LLViewerChatterBoxInvitation>
+ gHTTPRegistrationMessageChatterBoxInvitation(
+ "/message/ChatterBoxInvitation");
+
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 173f2634aa..a6a5ecb8e7 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -1,5146 +1,5146 @@
-/**
- * @file llinventorybridge.cpp
- * @brief Implementation of the Inventory-Folder-View-Bridge classes.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llinventorybridge.h"
-
-#include "llagent.h"
-#include "llagentwearables.h"
-#include "llappearancemgr.h"
-#include "llavataractions.h"
-#include "llfloatercustomize.h"
-#include "llfloaterinventory.h"
-#include "llfloateropenobject.h"
-#include "llfloaterreg.h"
-#include "llfloaterworldmap.h"
-#include "llfriendcard.h"
-#include "llgesturemgr.h"
-#include "llimfloater.h"
-#include "llimview.h"
-#include "llinventoryclipboard.h"
-#include "llinventoryfunctions.h"
-#include "llinventorymodel.h"
-#include "llinventorypanel.h"
-#include "llpreviewanim.h"
-#include "llpreviewgesture.h"
-#include "llpreviewtexture.h"
-#include "llselectmgr.h"
-#include "llsidetray.h"
-#include "lltrans.h"
-#include "llviewerassettype.h"
-#include "llviewermessage.h"
-#include "llviewerobjectlist.h"
-#include "llviewerwindow.h"
-#include "llvoavatarself.h"
-#include "llwearablelist.h"
-
-using namespace LLOldEvents;
-
-// Helpers
-// bug in busy count inc/dec right now, logic is complex... do we really need it?
-void inc_busy_count()
-{
-// gViewerWindow->getWindow()->incBusyCount();
-// check balance of these calls if this code is changed to ever actually
-// *do* something!
-}
-void dec_busy_count()
-{
-// gViewerWindow->getWindow()->decBusyCount();
-// check balance of these calls if this code is changed to ever actually
-// *do* something!
-}
-
-// Function declarations
-void wear_add_inventory_item_on_avatar(LLInventoryItem* item);
-void remove_inventory_category_from_avatar(LLInventoryCategory* category);
-void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id);
-bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*);
-bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response);
-
-std::string ICON_NAME[ICON_NAME_COUNT] =
-{
- "Inv_Texture",
- "Inv_Sound",
- "Inv_CallingCard",
- "Inv_CallingCard",
- "Inv_Landmark",
- "Inv_Landmark",
- "Inv_Script",
- "Inv_Clothing",
- "Inv_Object",
- "Inv_Object",
- "Inv_Notecard",
- "Inv_Skin",
- "Inv_Snapshot",
-
- "Inv_BodyShape",
- "Inv_Skin",
- "Inv_Hair",
- "Inv_Eye",
- "Inv_Shirt",
- "Inv_Pants",
- "Inv_Shoe",
- "Inv_Socks",
- "Inv_Jacket",
- "Inv_Gloves",
- "Inv_Undershirt",
- "Inv_Underpants",
- "Inv_Skirt",
- "Inv_Alpha",
- "Inv_Tattoo",
-
- "Inv_Animation",
- "Inv_Gesture",
-
- "inv_item_linkitem.tga",
- "inv_item_linkfolder.tga"
-};
-
-// +=================================================+
-// | LLInvFVBridge |
-// +=================================================+
-
-LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-mUUID(uuid), mInvType(LLInventoryType::IT_NONE)
-{
- mInventoryPanel = inventory->getHandle();
-}
-
-const std::string& LLInvFVBridge::getName() const
-{
- LLInventoryObject* obj = getInventoryObject();
- if(obj)
- {
- return obj->getName();
- }
- return LLStringUtil::null;
-}
-
-const std::string& LLInvFVBridge::getDisplayName() const
-{
- return getName();
-}
-
-// Folders have full perms
-PermissionMask LLInvFVBridge::getPermissionMask() const
-{
-
- return PERM_ALL;
-}
-
-// virtual
-LLFolderType::EType LLInvFVBridge::getPreferredType() const
-{
- return LLFolderType::FT_NONE;
-}
-
-
-// Folders don't have creation dates.
-time_t LLInvFVBridge::getCreationDate() const
-{
- return 0;
-}
-
-// Can be destoryed (or moved to trash)
-BOOL LLInvFVBridge::isItemRemovable()
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- if(model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID()))
- {
- return TRUE;
- }
- return FALSE;
-}
-
-// Can be moved to another folder
-BOOL LLInvFVBridge::isItemMovable() const
-{
- return TRUE;
-}
-
-/*virtual*/
-/**
- * @brief Adds this item into clipboard storage
- */
-void LLInvFVBridge::cutToClipboard()
-{
- if(isItemMovable())
- {
- LLInventoryClipboard::instance().cut(mUUID);
- }
-}
-// *TODO: make sure this does the right thing
-void LLInvFVBridge::showProperties()
-{
- LLSD key;
- key["id"] = mUUID;
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
-
- // Disable old properties floater; this is replaced by the sidepanel.
- /*
- LLFloaterReg::showInstance("properties", mUUID);
- */
-}
-
-void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch)
-{
- // Deactivate gestures when moving them into Trash
- LLInvFVBridge* bridge;
- LLInventoryModel* model = getInventoryModel();
- LLViewerInventoryItem* item = NULL;
- LLViewerInventoryCategory* cat = NULL;
- LLInventoryModel::cat_array_t descendent_categories;
- LLInventoryModel::item_array_t descendent_items;
- S32 count = batch.count();
- S32 i,j;
- for(i = 0; i < count; ++i)
- {
- bridge = (LLInvFVBridge*)(batch.get(i));
- if(!bridge || !bridge->isItemRemovable()) continue;
- item = (LLViewerInventoryItem*)model->getItem(bridge->getUUID());
- if (item)
- {
- if(LLAssetType::AT_GESTURE == item->getType())
- {
- LLGestureManager::instance().deactivateGesture(item->getUUID());
- }
- }
- }
- for(i = 0; i < count; ++i)
- {
- bridge = (LLInvFVBridge*)(batch.get(i));
- if(!bridge || !bridge->isItemRemovable()) continue;
- cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID());
- if (cat)
- {
- gInventory.collectDescendents( cat->getUUID(), descendent_categories, descendent_items, FALSE );
- for (j=0; j<descendent_items.count(); j++)
- {
- if(LLAssetType::AT_GESTURE == descendent_items[j]->getType())
- {
- LLGestureManager::instance().deactivateGesture(descendent_items[j]->getUUID());
- }
- }
- }
- }
- removeBatchNoCheck(batch);
-}
-
-void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*>& batch)
-{
- // this method moves a bunch of items and folders to the trash. As
- // per design guidelines for the inventory model, the message is
- // built and the accounting is performed first. After all of that,
- // we call LLInventoryModel::moveObject() to move everything
- // around.
- LLInvFVBridge* bridge;
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
- LLMessageSystem* msg = gMessageSystem;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- LLViewerInventoryItem* item = NULL;
- LLViewerInventoryCategory* cat = NULL;
- std::vector<LLUUID> move_ids;
- LLInventoryModel::update_map_t update;
- bool start_new_message = true;
- S32 count = batch.count();
- S32 i;
- for(i = 0; i < count; ++i)
- {
- bridge = (LLInvFVBridge*)(batch.get(i));
- if(!bridge || !bridge->isItemRemovable()) continue;
- item = (LLViewerInventoryItem*)model->getItem(bridge->getUUID());
- if(item)
- {
- if(item->getParentUUID() == trash_id) continue;
- move_ids.push_back(item->getUUID());
- LLPreview::hide(item->getUUID());
- --update[item->getParentUUID()];
- ++update[trash_id];
- if(start_new_message)
- {
- start_new_message = false;
- msg->newMessageFast(_PREHASH_MoveInventoryItem);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
- msg->addBOOLFast(_PREHASH_Stamp, TRUE);
- }
- msg->nextBlockFast(_PREHASH_InventoryData);
- msg->addUUIDFast(_PREHASH_ItemID, item->getUUID());
- msg->addUUIDFast(_PREHASH_FolderID, trash_id);
- msg->addString("NewName", NULL);
- if(msg->isSendFullFast(_PREHASH_InventoryData))
- {
- start_new_message = true;
- gAgent.sendReliableMessage();
- gInventory.accountForUpdate(update);
- update.clear();
- }
- }
- }
- if(!start_new_message)
- {
- start_new_message = true;
- gAgent.sendReliableMessage();
- gInventory.accountForUpdate(update);
- update.clear();
- }
- for(i = 0; i < count; ++i)
- {
- bridge = (LLInvFVBridge*)(batch.get(i));
- if(!bridge || !bridge->isItemRemovable()) continue;
- cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID());
- if(cat)
- {
- if(cat->getParentUUID() == trash_id) continue;
- move_ids.push_back(cat->getUUID());
- --update[cat->getParentUUID()];
- ++update[trash_id];
- if(start_new_message)
- {
- start_new_message = false;
- msg->newMessageFast(_PREHASH_MoveInventoryFolder);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
- msg->addBOOL("Stamp", TRUE);
- }
- msg->nextBlockFast(_PREHASH_InventoryData);
- msg->addUUIDFast(_PREHASH_FolderID, cat->getUUID());
- msg->addUUIDFast(_PREHASH_ParentID, trash_id);
- if(msg->isSendFullFast(_PREHASH_InventoryData))
- {
- start_new_message = true;
- gAgent.sendReliableMessage();
- gInventory.accountForUpdate(update);
- update.clear();
- }
- }
- }
- if(!start_new_message)
- {
- gAgent.sendReliableMessage();
- gInventory.accountForUpdate(update);
- }
-
- // move everything.
- std::vector<LLUUID>::iterator it = move_ids.begin();
- std::vector<LLUUID>::iterator end = move_ids.end();
- for(; it != end; ++it)
- {
- gInventory.moveObject((*it), trash_id);
- }
-
- // notify inventory observers.
- model->notifyObservers();
-}
-
-BOOL LLInvFVBridge::isClipboardPasteable() const
-{
- if (!LLInventoryClipboard::instance().hasContents() || !isAgentInventory())
- {
- return FALSE;
- }
- LLInventoryModel* model = getInventoryModel();
- if (!model)
- {
- return FALSE;
- }
-
- const LLUUID &agent_id = gAgent.getID();
-
- LLDynamicArray<LLUUID> objects;
- LLInventoryClipboard::instance().retrieve(objects);
- S32 count = objects.count();
- for(S32 i = 0; i < count; i++)
- {
- const LLUUID &item_id = objects.get(i);
-
- // Can't paste folders
- const LLInventoryCategory *cat = model->getCategory(item_id);
- if (cat)
- {
- return FALSE;
- }
-
- const LLInventoryItem *item = model->getItem(item_id);
- if (item)
- {
- if (!item->getPermissions().allowCopyBy(agent_id))
- {
- return FALSE;
- }
- }
- }
- return TRUE;
-}
-
-BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
-{
- if (!LLInventoryClipboard::instance().hasContents() || !isAgentInventory())
- {
- return FALSE;
- }
- const LLInventoryModel* model = getInventoryModel();
- if (!model)
- {
- return FALSE;
- }
-
- LLDynamicArray<LLUUID> objects;
- LLInventoryClipboard::instance().retrieve(objects);
- S32 count = objects.count();
- for(S32 i = 0; i < count; i++)
- {
- const LLInventoryItem *item = model->getItem(objects.get(i));
- if (item)
- {
- if (!LLAssetType::lookupCanLink(item->getActualType()))
- {
- return FALSE;
- }
- }
- const LLViewerInventoryCategory *cat = model->getCategory(objects.get(i));
- if (cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
- {
- return FALSE;
- }
- }
- return TRUE;
-}
-
-void hide_context_entries(LLMenuGL& menu,
- const std::vector<std::string> &entries_to_show,
- const std::vector<std::string> &disabled_entries)
-{
- const LLView::child_list_t *list = menu.getChildList();
-
- LLView::child_list_t::const_iterator itor;
- for (itor = list->begin(); itor != list->end(); ++itor)
- {
- std::string name = (*itor)->getName();
-
- // descend into split menus:
- LLMenuItemBranchGL* branchp = dynamic_cast<LLMenuItemBranchGL*>(*itor);
- if ((name == "More") && branchp)
- {
- hide_context_entries(*branchp->getBranch(), entries_to_show, disabled_entries);
- }
-
-
- bool found = false;
- std::vector<std::string>::const_iterator itor2;
- for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)
- {
- if (*itor2 == name)
- {
- found = true;
- }
- }
- if (!found)
- {
- (*itor)->setVisible(FALSE);
- }
- else
- {
- for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2)
- {
- if (*itor2 == name)
- {
- (*itor)->setEnabled(FALSE);
- }
- }
- }
- }
-}
-
-// Helper for commonly-used entries
-void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
- std::vector<std::string> &items,
- std::vector<std::string> &disabled_items, U32 flags)
-{
- items.push_back(std::string("Rename"));
- if (!isItemRenameable() || (flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("Rename"));
- }
-
- if (show_asset_id)
- {
- items.push_back(std::string("Copy Asset UUID"));
- if ( (! ( isItemPermissive() || gAgent.isGodlike() ) )
- || (flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("Copy Asset UUID"));
- }
- }
-
- items.push_back(std::string("Copy Separator"));
-
- items.push_back(std::string("Copy"));
- if (!isItemCopyable())
- {
- disabled_items.push_back(std::string("Copy"));
- }
-
- items.push_back(std::string("Paste"));
- if (!isClipboardPasteable() || (flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("Paste"));
- }
-
- items.push_back(std::string("Paste As Link"));
- if (!isClipboardPasteableAsLink() || (flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("Paste As Link"));
- }
- items.push_back(std::string("Paste Separator"));
-
- items.push_back(std::string("Delete"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Delete"));
- }
-
- // If multiple items are selected, disable properties (if it exists).
- if ((flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("Properties"));
- }
-}
-
-void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- lldebugs << "LLInvFVBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
- {
- items.push_back(std::string("PurgeItem"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("PurgeItem"));
- }
- items.push_back(std::string("RestoreItem"));
- }
- else
- {
- items.push_back(std::string("Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-// *TODO: remove this
-BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
-{
- BOOL rv = FALSE;
-
- const LLInventoryObject* obj = getInventoryObject();
-
- if(obj)
- {
- *type = LLViewerAssetType::lookupDragAndDropType(obj->getActualType());
- if(*type == DAD_NONE)
- {
- return FALSE;
- }
-
- *id = obj->getUUID();
- //object_ids.put(obj->getUUID());
-
- if (*type == DAD_CATEGORY)
- {
- gInventory.startBackgroundFetch(obj->getUUID());
- }
-
- rv = TRUE;
- }
-
- return rv;
-}
-
-LLInventoryObject* LLInvFVBridge::getInventoryObject() const
-{
- LLInventoryObject* obj = NULL;
- LLInventoryModel* model = getInventoryModel();
- if(model)
- {
- obj = (LLInventoryObject*)model->getObject(mUUID);
- }
- return obj;
-}
-
-LLInventoryModel* LLInvFVBridge::getInventoryModel() const
-{
- LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
- return panel ? panel->getModel() : NULL;
-}
-
-BOOL LLInvFVBridge::isInTrash() const
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- return model->isObjectDescendentOf(mUUID, trash_id);
-}
-
-BOOL LLInvFVBridge::isLinkedObjectInTrash() const
-{
- if (isInTrash()) return TRUE;
-
- const LLInventoryObject *obj = getInventoryObject();
- if (obj && obj->getIsLinkType())
- {
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- return model->isObjectDescendentOf(obj->getLinkedUUID(), trash_id);
- }
- return FALSE;
-}
-
-BOOL LLInvFVBridge::isAgentInventory() const
-{
- const LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- if(gInventory.getRootFolderID() == mUUID) return TRUE;
- return model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID());
-}
-
-BOOL LLInvFVBridge::isCOFFolder() const
-{
- const LLInventoryModel* model = getInventoryModel();
- if(!model) return TRUE;
- const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
- if (mUUID == cof_id || model->isObjectDescendentOf(mUUID, cof_id))
- {
- return TRUE;
- }
- return FALSE;
-}
-
-BOOL LLInvFVBridge::isItemPermissive() const
-{
- return FALSE;
-}
-
-// static
-void LLInvFVBridge::changeItemParent(LLInventoryModel* model,
- LLViewerInventoryItem* item,
- const LLUUID& new_parent,
- BOOL restamp)
-{
- if(item->getParentUUID() != new_parent)
- {
- LLInventoryModel::update_list_t update;
- LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1);
- update.push_back(old_folder);
- LLInventoryModel::LLCategoryUpdate new_folder(new_parent, 1);
- update.push_back(new_folder);
- gInventory.accountForUpdate(update);
-
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->setParent(new_parent);
- new_item->updateParentOnServer(restamp);
- model->updateItem(new_item);
- model->notifyObservers();
- }
-}
-
-// static
-void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model,
- LLViewerInventoryCategory* cat,
- const LLUUID& new_parent,
- BOOL restamp)
-{
- if(cat->getParentUUID() != new_parent)
- {
- LLInventoryModel::update_list_t update;
- LLInventoryModel::LLCategoryUpdate old_folder(cat->getParentUUID(), -1);
- update.push_back(old_folder);
- LLInventoryModel::LLCategoryUpdate new_folder(new_parent, 1);
- update.push_back(new_folder);
- gInventory.accountForUpdate(update);
-
- LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat);
- new_cat->setParent(new_parent);
- new_cat->updateParentOnServer(restamp);
- model->updateCategory(new_cat);
- model->notifyObservers();
- }
-}
-
-
-const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type)
-{
- const std::string rv= LLInventoryType::lookup(inv_type);
- if(rv.empty())
- {
- return std::string("<invalid>");
- }
- return rv;
-}
-
-LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
- LLAssetType::EType actual_asset_type,
- LLInventoryType::EType inv_type,
- LLInventoryPanel* inventory,
- const LLUUID& uuid,
- U32 flags)
-{
- LLInvFVBridge* new_listener = NULL;
- switch(asset_type)
- {
- case LLAssetType::AT_TEXTURE:
- if(!(inv_type == LLInventoryType::IT_TEXTURE || inv_type == LLInventoryType::IT_SNAPSHOT))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLTextureBridge(inventory, uuid, inv_type);
- break;
-
- case LLAssetType::AT_SOUND:
- if(!(inv_type == LLInventoryType::IT_SOUND))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLSoundBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_LANDMARK:
- if(!(inv_type == LLInventoryType::IT_LANDMARK))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLLandmarkBridge(inventory, uuid, flags);
- break;
-
- case LLAssetType::AT_CALLINGCARD:
- if(!(inv_type == LLInventoryType::IT_CALLINGCARD))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLCallingCardBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_SCRIPT:
- if(!(inv_type == LLInventoryType::IT_LSL))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLScriptBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_OBJECT:
- if(!(inv_type == LLInventoryType::IT_OBJECT || inv_type == LLInventoryType::IT_ATTACHMENT))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLObjectBridge(inventory, uuid, inv_type, flags);
- break;
-
- case LLAssetType::AT_NOTECARD:
- if(!(inv_type == LLInventoryType::IT_NOTECARD))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLNotecardBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_ANIMATION:
- if(!(inv_type == LLInventoryType::IT_ANIMATION))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLAnimationBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_GESTURE:
- if(!(inv_type == LLInventoryType::IT_GESTURE))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLGestureBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_LSL_TEXT:
- if(!(inv_type == LLInventoryType::IT_LSL))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLLSLTextBridge(inventory, uuid);
- break;
-
- case LLAssetType::AT_CLOTHING:
- case LLAssetType::AT_BODYPART:
- if(!(inv_type == LLInventoryType::IT_WEARABLE))
- {
- llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
- }
- new_listener = new LLWearableBridge(inventory, uuid, asset_type, inv_type, (EWearableType)flags);
- break;
- case LLAssetType::AT_CATEGORY:
- if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
- {
- // Create a link folder handler instead.
- new_listener = new LLLinkFolderBridge(inventory, uuid);
- break;
- }
- new_listener = new LLFolderBridge(inventory, uuid);
- break;
- case LLAssetType::AT_LINK:
- // Only should happen for broken links.
- new_listener = new LLLinkItemBridge(inventory, uuid);
- break;
- case LLAssetType::AT_LINK_FOLDER:
- // Only should happen for broken links.
- new_listener = new LLLinkItemBridge(inventory, uuid);
- break;
- default:
- llinfos << "Unhandled asset type (llassetstorage.h): "
- << (S32)asset_type << llendl;
- break;
- }
-
- if (new_listener)
- {
- new_listener->mInvType = inv_type;
- }
-
- return new_listener;
-}
-
-void LLInvFVBridge::purgeItem(LLInventoryModel *model, const LLUUID &uuid)
-{
- LLInventoryCategory* cat = model->getCategory(uuid);
- if (cat)
- {
- model->purgeDescendentsOf(uuid);
- model->notifyObservers();
- }
- LLInventoryObject* obj = model->getObject(uuid);
- if (obj)
- {
- model->purgeObject(uuid);
- model->notifyObservers();
- }
-}
-
-// +=================================================+
-// | InventoryFVBridgeBuilder |
-// +=================================================+
-LLInvFVBridge* LLInventoryFVBridgeBuilder::createBridge(LLAssetType::EType asset_type,
- LLAssetType::EType actual_asset_type,
- LLInventoryType::EType inv_type,
- LLInventoryPanel* inventory,
- const LLUUID& uuid,
- U32 flags /* = 0x00 */) const
-{
- return LLInvFVBridge::createBridge(asset_type,
- actual_asset_type,
- inv_type,
- inventory,
- uuid,
- flags);
-}
-
-// +=================================================+
-// | LLItemBridge |
-// +=================================================+
-
-void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("goto" == action)
- {
- gotoItem(folder);
- }
- if ("open" == action)
- {
- openItem();
- return;
- }
- else if ("properties" == action)
- {
- showProperties();
- return;
- }
- else if ("purge" == action)
- {
- purgeItem(model, mUUID);
- return;
- }
- else if ("restoreToWorld" == action)
- {
- restoreToWorld();
- return;
- }
- else if ("restore" == action)
- {
- restoreItem();
- return;
- }
- else if ("copy_uuid" == action)
- {
- // Single item only
- LLInventoryItem* item = model->getItem(mUUID);
- if(!item) return;
- LLUUID asset_id = item->getAssetUUID();
- std::string buffer;
- asset_id.toString(buffer);
-
- gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer));
- return;
- }
- else if ("copy" == action)
- {
- copyToClipboard();
- return;
- }
- else if ("paste" == action)
- {
- // Single item only
- LLInventoryItem* itemp = model->getItem(mUUID);
- if (!itemp) return;
-
- LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
- if (!folder_view_itemp) return;
-
- folder_view_itemp->getListener()->pasteFromClipboard();
- return;
- }
- else if ("paste_link" == action)
- {
- // Single item only
- LLInventoryItem* itemp = model->getItem(mUUID);
- if (!itemp) return;
-
- LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
- if (!folder_view_itemp) return;
-
- folder_view_itemp->getListener()->pasteLinkFromClipboard();
- return;
- }
-}
-
-void LLItemBridge::selectItem()
-{
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)getItem();
- if(item && !item->isComplete())
- {
- item->fetchFromServer();
- }
-}
-
-void LLItemBridge::restoreItem()
-{
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)getItem();
- if(item)
- {
- LLInventoryModel* model = getInventoryModel();
- const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType()));
- // do not restamp on restore.
- LLInvFVBridge::changeItemParent(model, item, new_parent, FALSE);
- }
-}
-
-void LLItemBridge::restoreToWorld()
-{
- LLViewerInventoryItem* itemp = (LLViewerInventoryItem*)getItem();
- if (itemp)
- {
- LLMessageSystem* msg = gMessageSystem;
- msg->newMessage("RezRestoreToWorld");
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-
- msg->nextBlockFast(_PREHASH_InventoryData);
- itemp->packMessage(msg);
- msg->sendReliable(gAgent.getRegion()->getHost());
- }
-
- //Similar functionality to the drag and drop rez logic
- BOOL remove_from_inventory = FALSE;
-
- //remove local inventory copy, sim will deal with permissions and removing the item
- //from the actual inventory if its a no-copy etc
- if(!itemp->getPermissions().allowCopyBy(gAgent.getID()))
- {
- remove_from_inventory = TRUE;
- }
-
- // Check if it's in the trash. (again similar to the normal rez logic)
- const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
- if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
- {
- remove_from_inventory = TRUE;
- }
-
- if(remove_from_inventory)
- {
- gInventory.deleteObject(itemp->getUUID());
- gInventory.notifyObservers();
- }
-}
-
-void LLItemBridge::gotoItem(LLFolderView *folder)
-{
- LLInventoryObject *obj = getInventoryObject();
- if (obj && obj->getIsLinkType())
- {
- LLInventoryPanel* active_panel = LLFloaterInventory::getActiveInventory()->getPanel();
- if (active_panel)
- {
- active_panel->setSelection(obj->getLinkedUUID(), TAKE_FOCUS_NO);
- }
- }
-}
-
-LLUIImagePtr LLItemBridge::getIcon() const
-{
- return LLUI::getUIImage(ICON_NAME[OBJECT_ICON_NAME]);
-}
-
-PermissionMask LLItemBridge::getPermissionMask() const
-{
- LLViewerInventoryItem* item = getItem();
- PermissionMask perm_mask = 0;
- if(item)
- {
- BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
- BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID());
- BOOL xfer = item->getPermissions().allowOperationBy(PERM_TRANSFER,
- gAgent.getID());
-
- if (copy) perm_mask |= PERM_COPY;
- if (mod) perm_mask |= PERM_MODIFY;
- if (xfer) perm_mask |= PERM_TRANSFER;
-
- }
- return perm_mask;
-}
-
-const std::string& LLItemBridge::getDisplayName() const
-{
- if(mDisplayName.empty())
- {
- buildDisplayName(getItem(), mDisplayName);
- }
- return mDisplayName;
-}
-
-void LLItemBridge::buildDisplayName(LLInventoryItem* item, std::string& name)
-{
- if(item)
- {
- name.assign(item->getName());
- }
- else
- {
- name.assign(LLStringUtil::null);
- }
-}
-
-LLFontGL::StyleFlags LLItemBridge::getLabelStyle() const
-{
- U8 font = LLFontGL::NORMAL;
-
- if( gAgentWearables.isWearingItem( mUUID ) )
- {
- // llinfos << "BOLD" << llendl;
- font |= LLFontGL::BOLD;
- }
-
- const LLViewerInventoryItem* item = getItem();
- if (item && item->getIsLinkType())
- {
- font |= LLFontGL::ITALIC;
- }
- return (LLFontGL::StyleFlags)font;
-}
-
-std::string LLItemBridge::getLabelSuffix() const
-{
- // String table is loaded before login screen and inventory items are
- // loaded after login, so LLTrans should be ready.
- static std::string NO_COPY =LLTrans::getString("no_copy");
- static std::string NO_MOD = LLTrans::getString("no_modify");
- static std::string NO_XFER = LLTrans::getString("no_transfer");
- static std::string LINK = LLTrans::getString("link");
- static std::string BROKEN_LINK = LLTrans::getString("broken_link");
- std::string suffix;
- LLInventoryItem* item = getItem();
- if(item)
- {
- // it's a bit confusing to put nocopy/nomod/etc on calling cards.
- if(LLAssetType::AT_CALLINGCARD != item->getType()
- && item->getPermissions().getOwner() == gAgent.getID())
- {
- BOOL broken_link = LLAssetType::lookupIsLinkType(item->getType());
- if (broken_link) return BROKEN_LINK;
-
- BOOL link = item->getIsLinkType();
- if (link) return LINK;
-
- BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
- if (!copy)
- {
- suffix += NO_COPY;
- }
- BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID());
- if (!mod)
- {
- suffix += NO_MOD;
- }
- BOOL xfer = item->getPermissions().allowOperationBy(PERM_TRANSFER,
- gAgent.getID());
- if (!xfer)
- {
- suffix += NO_XFER;
- }
- }
- }
- return suffix;
-}
-
-time_t LLItemBridge::getCreationDate() const
-{
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- return item->getCreationDate();
- }
- return 0;
-}
-
-
-BOOL LLItemBridge::isItemRenameable() const
-{
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- // (For now) Don't allow calling card rename since that may confuse users as to
- // what the calling card points to.
- if (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD)
- {
- return FALSE;
- }
- return (item->getPermissions().allowModifyBy(gAgent.getID()));
- }
- return FALSE;
-}
-
-BOOL LLItemBridge::renameItem(const std::string& new_name)
-{
- if(!isItemRenameable())
- return FALSE;
- LLPreview::dirty(mUUID);
- LLInventoryModel* model = getInventoryModel();
- if(!model)
- return FALSE;
- LLViewerInventoryItem* item = getItem();
- if(item && (item->getName() != new_name))
- {
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->rename(new_name);
- buildDisplayName(new_item, mDisplayName);
- new_item->updateServer(FALSE);
- model->updateItem(new_item);
-
- model->notifyObservers();
- }
- // return FALSE because we either notified observers (& therefore
- // rebuilt) or we didn't update.
- return FALSE;
-}
-
-
-BOOL LLItemBridge::removeItem()
-{
- if(!isItemRemovable())
- {
- return FALSE;
- }
- // move it to the trash
- LLPreview::hide(mUUID, TRUE);
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- LLViewerInventoryItem* item = getItem();
-
- // if item is not already in trash
- if(item && !model->isObjectDescendentOf(mUUID, trash_id))
- {
- // move to trash, and restamp
- LLInvFVBridge::changeItemParent(model, item, trash_id, TRUE);
- // delete was successful
- return TRUE;
- }
- else
- {
- // tried to delete already item in trash (should purge?)
- return FALSE;
- }
-}
-
-BOOL LLItemBridge::isItemCopyable() const
-{
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- // can't copy worn objects. DEV-15183
- LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
- if( !avatarp )
- {
- return FALSE;
- }
-
- if(avatarp->isWearingAttachment(mUUID))
- {
- return FALSE;
- }
-
- // All items can be copied, not all can be pasted.
- // The only time an item can't be copied is if it's a link
- // return (item->getPermissions().allowCopyBy(gAgent.getID()));
- if (item->getIsLinkType())
- {
- return FALSE;
- }
- return TRUE;
- }
- return FALSE;
-}
-BOOL LLItemBridge::copyToClipboard() const
-{
- if(isItemCopyable())
- {
- LLInventoryClipboard::instance().add(mUUID);
- return TRUE;
- }
- return FALSE;
-}
-
-LLViewerInventoryItem* LLItemBridge::getItem() const
-{
- LLViewerInventoryItem* item = NULL;
- LLInventoryModel* model = getInventoryModel();
- if(model)
- {
- item = (LLViewerInventoryItem*)model->getItem(mUUID);
- }
- return item;
-}
-
-BOOL LLItemBridge::isItemPermissive() const
-{
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- U32 mask = item->getPermissions().getMaskBase();
- if((mask & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED)
- {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-// +=================================================+
-// | LLFolderBridge |
-// +=================================================+
-
-LLFolderBridge* LLFolderBridge::sSelf=NULL;
-
-// Can be moved to another folder
-BOOL LLFolderBridge::isItemMovable() const
-{
- LLInventoryObject* obj = getInventoryObject();
- if(obj)
- {
- return (!LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)obj)->getPreferredType()));
- }
- return FALSE;
-}
-
-void LLFolderBridge::selectItem()
-{
-}
-
-
-// Can be destroyed (or moved to trash)
-BOOL LLFolderBridge::isItemRemovable()
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model)
- {
- return FALSE;
- }
-
- if(!model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID()))
- {
- return FALSE;
- }
-
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if( !avatar )
- {
- return FALSE;
- }
-
- LLInventoryCategory* category = model->getCategory(mUUID);
- if( !category )
- {
- return FALSE;
- }
-
- if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
- {
- return FALSE;
- }
-
- LLInventoryModel::cat_array_t descendent_categories;
- LLInventoryModel::item_array_t descendent_items;
- gInventory.collectDescendents( mUUID, descendent_categories, descendent_items, FALSE );
-
- S32 i;
- for( i = 0; i < descendent_categories.count(); i++ )
- {
- LLInventoryCategory* category = descendent_categories[i];
- if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
- {
- return FALSE;
- }
- }
-
- for( i = 0; i < descendent_items.count(); i++ )
- {
- LLInventoryItem* item = descendent_items[i];
- if( (item->getType() == LLAssetType::AT_CLOTHING) ||
- (item->getType() == LLAssetType::AT_BODYPART) )
- {
- if(gAgentWearables.isWearingItem(item->getUUID()))
- {
- return FALSE;
- }
- }
- else
- if( item->getType() == LLAssetType::AT_OBJECT )
- {
- if(avatar->isWearingAttachment(item->getUUID()))
- {
- return FALSE;
- }
- }
- }
-
- return TRUE;
-}
-
-BOOL LLFolderBridge::isUpToDate() const
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
- if( !category )
- {
- return FALSE;
- }
-
- return category->getVersion() != LLViewerInventoryCategory::VERSION_UNKNOWN;
-}
-
-BOOL LLFolderBridge::isItemCopyable() const
-{
- return TRUE;
-}
-
-BOOL LLFolderBridge::copyToClipboard() const
-{
- if(isItemCopyable())
- {
- LLInventoryClipboard::instance().add(mUUID);
- return TRUE;
- }
- return FALSE;
-}
-
-BOOL LLFolderBridge::isClipboardPasteable() const
-{
- if ( ! LLInvFVBridge::isClipboardPasteable() )
- return FALSE;
-
- // Don't allow pasting duplicates to the Calling Card/Friends subfolders, see bug EXT-1599
- if ( LLFriendCardsManager::instance().isCategoryInFriendFolder( getCategory() ) )
- {
- LLInventoryModel* model = getInventoryModel();
- if ( !model )
- {
- return FALSE;
- }
-
- LLDynamicArray<LLUUID> objects;
- LLInventoryClipboard::instance().retrieve(objects);
- const LLViewerInventoryCategory *current_cat = getCategory();
-
- // Search for the direct descendent of current Friends subfolder among all pasted items,
- // and return false if is found.
- for(S32 i = objects.count() - 1; i >= 0; --i)
- {
- const LLUUID &obj_id = objects.get(i);
- if ( LLFriendCardsManager::instance().isObjDirectDescendentOfCategory(model->getObject(obj_id), current_cat) )
- {
- return FALSE;
- }
- }
-
- }
- return TRUE;
-}
-
-BOOL LLFolderBridge::isClipboardPasteableAsLink() const
-{
- // Check normal paste-as-link permissions
- if (!LLInvFVBridge::isClipboardPasteableAsLink())
- {
- return FALSE;
- }
-
- const LLInventoryModel* model = getInventoryModel();
- if (!model)
- {
- return FALSE;
- }
-
- const LLViewerInventoryCategory *current_cat = getCategory();
- if (current_cat)
- {
- const BOOL is_in_friend_folder = LLFriendCardsManager::instance().isCategoryInFriendFolder( current_cat );
- const LLUUID &current_cat_id = current_cat->getUUID();
- LLDynamicArray<LLUUID> objects;
- LLInventoryClipboard::instance().retrieve(objects);
- S32 count = objects.count();
- for(S32 i = 0; i < count; i++)
- {
- const LLUUID &obj_id = objects.get(i);
- const LLInventoryCategory *cat = model->getCategory(obj_id);
- if (cat)
- {
- const LLUUID &cat_id = cat->getUUID();
- // Don't allow recursive pasting
- if ((cat_id == current_cat_id) ||
- model->isObjectDescendentOf(current_cat_id, cat_id))
- {
- return FALSE;
- }
- }
- // Don't allow pasting duplicates to the Calling Card/Friends subfolders, see bug EXT-1599
- if ( is_in_friend_folder )
- {
- // If object is direct descendent of current Friends subfolder than return false.
- // Note: We can't use 'const LLInventoryCategory *cat', because it may be null
- // in case type of obj_id is LLInventoryItem.
- if ( LLFriendCardsManager::instance().isObjDirectDescendentOfCategory(model->getObject(obj_id), current_cat) )
- {
- return FALSE;
- }
- }
- }
- }
- return TRUE;
-
-}
-
-BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
- BOOL drop)
-{
- // This should never happen, but if an inventory item is incorrectly parented,
- // the UI will get confused and pass in a NULL.
- if(!inv_cat) return FALSE;
-
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
-
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if(!avatar) return FALSE;
-
- // cannot drag categories into library
- if(!isAgentInventory())
- {
- return FALSE;
- }
-
- // check to make sure source is agent inventory, and is represented there.
- LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();
- BOOL is_agent_inventory = (model->getCategory(inv_cat->getUUID()) != NULL)
- && (LLToolDragAndDrop::SOURCE_AGENT == source);
-
- BOOL accept = FALSE;
- S32 i;
- LLInventoryModel::cat_array_t descendent_categories;
- LLInventoryModel::item_array_t descendent_items;
- if(is_agent_inventory)
- {
- const LLUUID& cat_id = inv_cat->getUUID();
-
- // Is the destination the trash?
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- BOOL move_is_into_trash = (mUUID == trash_id)
- || model->isObjectDescendentOf(mUUID, trash_id);
- BOOL is_movable = (!LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()));
- const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
- BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
- BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
- if (move_is_into_current_outfit || move_is_into_outfit)
- {
- // BAP - restrictions?
- is_movable = true;
- }
-
- if (mUUID == gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE))
- {
- is_movable = FALSE; // It's generally movable but not into Favorites folder. EXT-1604
- }
-
- if( is_movable )
- {
- gInventory.collectDescendents( cat_id, descendent_categories, descendent_items, FALSE );
-
- for( i = 0; i < descendent_categories.count(); i++ )
- {
- LLInventoryCategory* category = descendent_categories[i];
- if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
- {
- // ...can't move "special folders" like Textures
- is_movable = FALSE;
- break;
- }
- }
-
- if( is_movable )
- {
- if( move_is_into_trash )
- {
- for( i = 0; i < descendent_items.count(); i++ )
- {
- LLInventoryItem* item = descendent_items[i];
- if( (item->getType() == LLAssetType::AT_CLOTHING) ||
- (item->getType() == LLAssetType::AT_BODYPART) )
- {
- if( gAgentWearables.isWearingItem( item->getUUID() ) )
- {
- is_movable = FALSE; // It's generally movable, but not into the trash!
- break;
- }
- }
- else
- if( item->getType() == LLAssetType::AT_OBJECT )
- {
- if( avatar->isWearingAttachment( item->getUUID() ) )
- {
- is_movable = FALSE; // It's generally movable, but not into the trash!
- break;
- }
- }
- }
- }
- }
- }
-
-
- accept = is_movable
- && (mUUID != cat_id) // Can't move a folder into itself
- && (mUUID != inv_cat->getParentUUID()) // Avoid moves that would change nothing
- && !(model->isObjectDescendentOf(mUUID, cat_id)); // Avoid circularity
- if(accept && drop)
- {
- // Look for any gestures and deactivate them
- if (move_is_into_trash)
- {
- for (i = 0; i < descendent_items.count(); i++)
- {
- LLInventoryItem* item = descendent_items[i];
- if (item->getType() == LLAssetType::AT_GESTURE
- && LLGestureManager::instance().isGestureActive(item->getUUID()))
- {
- LLGestureManager::instance().deactivateGesture(item->getUUID());
- }
- }
- }
- // if target is an outfit or current outfit folder we use link
- if (move_is_into_current_outfit || move_is_into_outfit)
- {
- if (inv_cat->getPreferredType() == LLFolderType::FT_NONE)
- {
- if (move_is_into_current_outfit)
- {
- // traverse category and add all contents to currently worn.
- BOOL append = true;
- LLAppearanceManager::instance().wearInventoryCategory(inv_cat, false, append);
- }
- else
- {
- // Recursively create links in target outfit.
- LLInventoryModel::cat_array_t cats;
- LLInventoryModel::item_array_t items;
- gInventory.collectDescendents(inv_cat->getUUID(), cats, items, LLInventoryModel::EXCLUDE_TRASH);
- LLAppearanceManager::instance().linkAll(mUUID,items,NULL);
- }
- }
- else
- {
-#if SUPPORT_ENSEMBLES
- // BAP - should skip if dup.
- if (move_is_into_current_outfit)
- {
- LLAppearanceManager::instance().addEnsembleLink(inv_cat);
- }
- else
- {
- LLPointer<LLInventoryCallback> cb = NULL;
- link_inventory_item(
- gAgent.getID(),
- inv_cat->getUUID(),
- mUUID,
- inv_cat->getName(),
- LLAssetType::AT_LINK_FOLDER,
- cb);
- }
-#endif
- }
- }
- else
- {
-
- // Reparent the folder and restamp children if it's moving
- // into trash.
- LLInvFVBridge::changeCategoryParent(
- model,
- (LLViewerInventoryCategory*)inv_cat,
- mUUID,
- move_is_into_trash);
- }
- }
- }
- else if(LLToolDragAndDrop::SOURCE_WORLD == source)
- {
- // content category has same ID as object itself
- LLUUID object_id = inv_cat->getUUID();
- LLUUID category_id = mUUID;
- accept = move_inv_category_world_to_agent(object_id, category_id, drop);
- }
- return accept;
-}
-
-void warn_move_inventory(LLViewerObject* object, LLMoveInv* move_inv)
-{
- const char* dialog = NULL;
- if (object->flagScripted())
- {
- dialog = "MoveInventoryFromScriptedObject";
- }
- else
- {
- dialog = "MoveInventoryFromObject";
- }
- LLNotifications::instance().add(dialog, LLSD(), LLSD(), boost::bind(move_task_inventory_callback, _1, _2, move_inv));
-}
-
-// Move/copy all inventory items from the Contents folder of an in-world
-// object to the agent's inventory, inside a given category.
-BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
- const LLUUID& category_id,
- BOOL drop,
- void (*callback)(S32, void*),
- void* user_data)
-{
- // Make sure the object exists. If we allowed dragging from
- // anonymous objects, it would be possible to bypass
- // permissions.
- // content category has same ID as object itself
- LLViewerObject* object = gObjectList.findObject(object_id);
- if(!object)
- {
- llinfos << "Object not found for drop." << llendl;
- return FALSE;
- }
-
- // this folder is coming from an object, as there is only one folder in an object, the root,
- // we need to collect the entire contents and handle them as a group
- InventoryObjectList inventory_objects;
- object->getInventoryContents(inventory_objects);
-
- if (inventory_objects.empty())
- {
- llinfos << "Object contents not found for drop." << llendl;
- return FALSE;
- }
-
- BOOL accept = TRUE;
- BOOL is_move = FALSE;
-
- // coming from a task. Need to figure out if the person can
- // move/copy this item.
- InventoryObjectList::iterator it = inventory_objects.begin();
- InventoryObjectList::iterator end = inventory_objects.end();
- for ( ; it != end; ++it)
- {
- // coming from a task. Need to figure out if the person can
- // move/copy this item.
- LLPermissions perm(((LLInventoryItem*)((LLInventoryObject*)(*it)))->getPermissions());
- if((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())
- && perm.allowTransferTo(gAgent.getID())))
-// || gAgent.isGodlike())
- {
- accept = TRUE;
- }
- else if(object->permYouOwner())
- {
- // If the object cannot be copied, but the object the
- // inventory is owned by the agent, then the item can be
- // moved from the task to agent inventory.
- is_move = TRUE;
- accept = TRUE;
- }
- else
- {
- accept = FALSE;
- break;
- }
- }
-
- if(drop && accept)
- {
- it = inventory_objects.begin();
- InventoryObjectList::iterator first_it = inventory_objects.begin();
- LLMoveInv* move_inv = new LLMoveInv;
- move_inv->mObjectID = object_id;
- move_inv->mCategoryID = category_id;
- move_inv->mCallback = callback;
- move_inv->mUserData = user_data;
-
- for ( ; it != end; ++it)
- {
- two_uuids_t two(category_id, (*it)->getUUID());
- move_inv->mMoveList.push_back(two);
- }
-
- if(is_move)
- {
- // Callback called from within here.
- warn_move_inventory(object, move_inv);
- }
- else
- {
- LLNotification::Params params("MoveInventoryFromObject");
- params.functor.function(boost::bind(move_task_inventory_callback, _1, _2, move_inv));
- LLNotifications::instance().forceResponse(params, 0);
- }
- }
- return accept;
-}
-
-bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
- LLInventoryItem* item)
-{
- // Valid COF items are:
- // - links to wearables (body parts or clothing)
- // - links to attachments
- // - links to gestures
- // - links to ensemble folders
- LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem(); // BAP - safe?
- if (linked_item)
- {
- LLAssetType::EType type = linked_item->getType();
- return (type == LLAssetType::AT_CLOTHING ||
- type == LLAssetType::AT_BODYPART ||
- type == LLAssetType::AT_GESTURE ||
- type == LLAssetType::AT_OBJECT);
- }
- else
- {
- LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP - safe?
- // BAP remove AT_NONE support after ensembles are fully working?
- return (linked_category &&
- ((linked_category->getPreferredType() == LLFolderType::FT_NONE) ||
- (LLFolderType::lookupIsEnsembleType(linked_category->getPreferredType()))));
- }
-}
-
-
-bool LLFindWearables::operator()(LLInventoryCategory* cat,
- LLInventoryItem* item)
-{
- if(item)
- {
- if((item->getType() == LLAssetType::AT_CLOTHING)
- || (item->getType() == LLAssetType::AT_BODYPART))
- {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-
-
-//Used by LLFolderBridge as callback for directory recursion.
-class LLRightClickInventoryFetchObserver : public LLInventoryFetchObserver
-{
-public:
- LLRightClickInventoryFetchObserver() :
- mCopyItems(false)
- { };
- LLRightClickInventoryFetchObserver(const LLUUID& cat_id, bool copy_items) :
- mCatID(cat_id),
- mCopyItems(copy_items)
- { };
- virtual void done()
- {
- // we've downloaded all the items, so repaint the dialog
- LLFolderBridge::staticFolderOptionsMenu();
-
- gInventory.removeObserver(this);
- delete this;
- }
-
-
-protected:
- LLUUID mCatID;
- bool mCopyItems;
-
-};
-
-//Used by LLFolderBridge as callback for directory recursion.
-class LLRightClickInventoryFetchDescendentsObserver : public LLInventoryFetchDescendentsObserver
-{
-public:
- LLRightClickInventoryFetchDescendentsObserver(bool copy_items) : mCopyItems(copy_items) {}
- ~LLRightClickInventoryFetchDescendentsObserver() {}
- virtual void done();
-protected:
- bool mCopyItems;
-};
-
-void LLRightClickInventoryFetchDescendentsObserver::done()
-{
- // Avoid passing a NULL-ref as mCompleteFolders.front() down to
- // gInventory.collectDescendents()
- if( mCompleteFolders.empty() )
- {
- llwarns << "LLRightClickInventoryFetchDescendentsObserver::done with empty mCompleteFolders" << llendl;
- dec_busy_count();
- gInventory.removeObserver(this);
- delete this;
- return;
- }
-
- // What we do here is get the complete information on the items in
- // the library, and set up an observer that will wait for that to
- // happen.
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
- gInventory.collectDescendents(mCompleteFolders.front(),
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH);
- S32 count = item_array.count();
-#if 0 // HACK/TODO: Why?
- // This early causes a giant menu to get produced, and doesn't seem to be needed.
- if(!count)
- {
- llwarns << "Nothing fetched in category " << mCompleteFolders.front()
- << llendl;
- dec_busy_count();
- gInventory.removeObserver(this);
- delete this;
- return;
- }
-#endif
-
- LLRightClickInventoryFetchObserver* outfit;
- outfit = new LLRightClickInventoryFetchObserver(mCompleteFolders.front(), mCopyItems);
- LLInventoryFetchObserver::item_ref_t ids;
- for(S32 i = 0; i < count; ++i)
- {
- ids.push_back(item_array.get(i)->getUUID());
- }
-
- // clean up, and remove this as an observer since the call to the
- // outfit could notify observers and throw us into an infinite
- // loop.
- dec_busy_count();
- gInventory.removeObserver(this);
- delete this;
-
- // increment busy count and either tell the inventory to check &
- // call done, or add this object to the inventory for observation.
- inc_busy_count();
-
- // do the fetch
- outfit->fetchItems(ids);
- outfit->done(); //Not interested in waiting and this will be right 99% of the time.
-//Uncomment the following code for laggy Inventory UI.
-/* if(outfit->isEverythingComplete())
- {
- // everything is already here - call done.
- outfit->done();
- }
- else
- {
- // it's all on it's way - add an observer, and the inventory
- // will call done for us when everything is here.
- gInventory.addObserver(outfit);
- }*/
-}
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInventoryWearObserver
-//
-// Observer for "copy and wear" operation to support knowing
-// when the all of the contents have been added to inventory.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLInventoryCopyAndWearObserver : public LLInventoryObserver
-{
-public:
- LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
- virtual ~LLInventoryCopyAndWearObserver() {}
- virtual void changed(U32 mask);
-
-protected:
- LLUUID mCatID;
- int mContentsCount;
- BOOL mFolderAdded;
-};
-
-
-
-void LLInventoryCopyAndWearObserver::changed(U32 mask)
-{
- if((mask & (LLInventoryObserver::ADD)) != 0)
- {
- if (!mFolderAdded)
- {
- 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)
- {
- if ((*id_it) == mCatID)
- {
- mFolderAdded = TRUE;
- break;
- }
- }
- }
-
- if (mFolderAdded)
- {
- LLViewerInventoryCategory* category = gInventory.getCategory(mCatID);
-
- if (NULL == category)
- {
- llwarns << "gInventory.getCategory(" << mCatID
- << ") was NULL" << llendl;
- }
- else
- {
- if (category->getDescendentCount() ==
- mContentsCount)
- {
- gInventory.removeObserver(this);
- LLAppearanceManager::instance().wearInventoryCategory(category, FALSE, TRUE);
- delete this;
- }
- }
- }
-
- }
-}
-
-
-
-void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("open" == action)
- {
- openItem();
- return;
- }
- else if ("paste" == action)
- {
- pasteFromClipboard();
- return;
- }
- else if ("paste_link" == action)
- {
- pasteLinkFromClipboard();
- return;
- }
- else if ("properties" == action)
- {
- showProperties();
- return;
- }
- else if ("replaceoutfit" == action)
- {
- modifyOutfit(FALSE);
- return;
- }
-#if SUPPORT_ENSEMBLES
- else if ("wearasensemble" == action)
- {
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
- LLViewerInventoryCategory* cat = getCategory();
- if(!cat) return;
- LLAppearanceManager::instance().addEnsembleLink(cat,true);
- return;
- }
-#endif
- else if ("addtooutfit" == action)
- {
- modifyOutfit(TRUE);
- return;
- }
- else if ("copy" == action)
- {
- copyToClipboard();
- return;
- }
- else if ("removefromoutfit" == action)
- {
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
- LLViewerInventoryCategory* cat = getCategory();
- if(!cat) return;
-
- remove_inventory_category_from_avatar ( cat );
- return;
- }
- else if ("purge" == action)
- {
- purgeItem(model, mUUID);
- return;
- }
- else if ("restore" == action)
- {
- restoreItem();
- return;
- }
-}
-
-void LLFolderBridge::openItem()
-{
- lldebugs << "LLFolderBridge::openItem()" << llendl;
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
- if(mUUID.isNull()) return;
- bool fetching_inventory = model->fetchDescendentsOf(mUUID);
- // Only change folder type if we have the folder contents.
- if (!fetching_inventory)
- {
- // Disabling this for now, it's causing crash when new items are added to folders
- // since folder type may change before new item item has finished processing.
- // determineFolderType();
- }
-}
-
-void LLFolderBridge::closeItem()
-{
- determineFolderType();
-}
-
-void LLFolderBridge::determineFolderType()
-{
- if (isUpToDate())
- {
- LLInventoryModel* model = getInventoryModel();
- LLViewerInventoryCategory* category = model->getCategory(mUUID);
- category->determineFolderType();
- }
-}
-
-BOOL LLFolderBridge::isItemRenameable() const
-{
- LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)getCategory();
- if(cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType())
- && (cat->getOwnerID() == gAgent.getID()))
- {
- return TRUE;
- }
- return FALSE;
-}
-
-void LLFolderBridge::restoreItem()
-{
- LLViewerInventoryCategory* cat;
- cat = (LLViewerInventoryCategory*)getCategory();
- if(cat)
- {
- LLInventoryModel* model = getInventoryModel();
- const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(cat->getType()));
- // do not restamp children on restore
- LLInvFVBridge::changeCategoryParent(model, cat, new_parent, FALSE);
- }
-}
-
-LLFolderType::EType LLFolderBridge::getPreferredType() const
-{
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
- LLViewerInventoryCategory* cat = getCategory();
- if(cat)
- {
- preferred_type = cat->getPreferredType();
- }
-
- return preferred_type;
-}
-
-// 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);
-}
-
-LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type)
-{
- // we only have one folder image now
- return LLUI::getUIImage("Inv_FolderClosed");
-}
-
-BOOL LLFolderBridge::renameItem(const std::string& new_name)
-{
- if(!isItemRenameable())
- return FALSE;
- LLInventoryModel* model = getInventoryModel();
- if(!model)
- return FALSE;
- LLViewerInventoryCategory* cat = getCategory();
- if(cat && (cat->getName() != new_name))
- {
- LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat);
- new_cat->rename(new_name);
- new_cat->updateServer(FALSE);
- model->updateCategory(new_cat);
-
- model->notifyObservers();
- }
- // return FALSE because we either notified observers (& therefore
- // rebuilt) or we didn't update.
- return FALSE;
-}
-
-BOOL LLFolderBridge::removeItem()
-{
- if(!isItemRemovable())
- {
- return FALSE;
- }
- // move it to the trash
- LLPreview::hide(mUUID);
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
-
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
-
- // Look for any gestures and deactivate them
- LLInventoryModel::cat_array_t descendent_categories;
- LLInventoryModel::item_array_t descendent_items;
- gInventory.collectDescendents( mUUID, descendent_categories, descendent_items, FALSE );
-
- S32 i;
- for (i = 0; i < descendent_items.count(); i++)
- {
- LLInventoryItem* item = descendent_items[i];
- if (item->getType() == LLAssetType::AT_GESTURE
- && LLGestureManager::instance().isGestureActive(item->getUUID()))
- {
- LLGestureManager::instance().deactivateGesture(item->getUUID());
- }
- }
-
- // go ahead and do the normal remove if no 'last calling
- // cards' are being removed.
- LLViewerInventoryCategory* cat = getCategory();
- if(cat)
- {
- LLInvFVBridge::changeCategoryParent(model, cat, trash_id, TRUE);
- }
-
- return TRUE;
-}
-
-void LLFolderBridge::pasteFromClipboard()
-{
- LLInventoryModel* model = getInventoryModel();
- if(model && isClipboardPasteable())
- {
- LLInventoryItem* item = NULL;
- LLDynamicArray<LLUUID> objects;
- LLInventoryClipboard::instance().retrieve(objects);
- S32 count = objects.count();
- const LLUUID parent_id(mUUID);
- for(S32 i = 0; i < count; i++)
- {
- item = model->getItem(objects.get(i));
- if (item)
- {
- if(LLInventoryClipboard::instance().isCutMode())
- {
- // move_inventory_item() is not enough,
- //we have to update inventory locally too
- changeItemParent(model, dynamic_cast<LLViewerInventoryItem*>(item), parent_id, FALSE);
- }
- else
- {
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- parent_id,
- std::string(),
- LLPointer<LLInventoryCallback>(NULL));
- }
- }
- }
- }
-}
-
-void LLFolderBridge::pasteLinkFromClipboard()
-{
- const LLInventoryModel* model = getInventoryModel();
- if(model)
- {
- LLDynamicArray<LLUUID> objects;
- LLInventoryClipboard::instance().retrieve(objects);
- S32 count = objects.count();
- LLUUID parent_id(mUUID);
- for(S32 i = 0; i < count; i++)
- {
- const LLUUID &object_id = objects.get(i);
-#if SUPPORT_ENSEMBLES
- if (LLInventoryCategory *cat = model->getCategory(object_id))
- {
- link_inventory_item(
- gAgent.getID(),
- cat->getUUID(),
- parent_id,
- cat->getName(),
- LLAssetType::AT_LINK_FOLDER,
- LLPointer<LLInventoryCallback>(NULL));
- }
- else
-#endif
- if (LLInventoryItem *item = model->getItem(object_id))
- {
- link_inventory_item(
- gAgent.getID(),
- item->getLinkedUUID(),
- parent_id,
- item->getName(),
- LLAssetType::AT_LINK,
- LLPointer<LLInventoryCallback>(NULL));
- }
- }
- }
-}
-
-void LLFolderBridge::staticFolderOptionsMenu()
-{
- if (!sSelf) return;
- sSelf->folderOptionsMenu();
-}
-
-void LLFolderBridge::folderOptionsMenu()
-{
- std::vector<std::string> disabled_items;
-
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
-
- const LLInventoryCategory* category = model->getCategory(mUUID);
- LLFolderType::EType type = category->getPreferredType();
- const bool is_default_folder = category && LLFolderType::lookupIsProtectedType(type);
- // BAP change once we're no longer treating regular categories as ensembles.
- const bool is_ensemble = category && (type == LLFolderType::FT_NONE ||
- LLFolderType::lookupIsEnsembleType(type));
-
- // calling card related functionality for folders.
-
- // Only enable calling-card related options for non-default folders.
- if (!is_default_folder)
- {
- LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD);
- if (mCallingCards || checkFolderForContentsOfType(model, is_callingcard))
- {
- mItems.push_back(std::string("Calling Card Separator"));
- mItems.push_back(std::string("Conference Chat Folder"));
- mItems.push_back(std::string("IM All Contacts In Folder"));
- }
- }
-
- // wearables related functionality for folders.
- //is_wearable
- LLFindWearables is_wearable;
- LLIsType is_object( LLAssetType::AT_OBJECT );
- LLIsType is_gesture( LLAssetType::AT_GESTURE );
-
- if (mWearables ||
- checkFolderForContentsOfType(model, is_wearable) ||
- checkFolderForContentsOfType(model, is_object) ||
- checkFolderForContentsOfType(model, is_gesture) )
- {
- mItems.push_back(std::string("Folder Wearables Separator"));
-
- // Only enable add/replace outfit for non-default folders.
- if (!is_default_folder)
- {
- mItems.push_back(std::string("Add To Outfit"));
- mItems.push_back(std::string("Replace Outfit"));
- }
- if (is_ensemble)
- {
- mItems.push_back(std::string("Wear As Ensemble"));
- }
- mItems.push_back(std::string("Remove From Outfit"));
- }
- hide_context_entries(*mMenu, mItems, disabled_items);
-}
-
-BOOL LLFolderBridge::checkFolderForContentsOfType(LLInventoryModel* model, LLInventoryCollectFunctor& is_type)
-{
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
- model->collectDescendentsIf(mUUID,
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH,
- is_type);
- return ((item_array.count() > 0) ? TRUE : FALSE );
-}
-
-// Flags unused
-void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- mItems.clear();
- mDisabledItems.clear();
-
- lldebugs << "LLFolderBridge::buildContextMenu()" << llendl;
-// std::vector<std::string> disabled_items;
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
-
- mItems.clear(); //adding code to clear out member Items (which means Items should not have other data here at this point)
- mDisabledItems.clear(); //adding code to clear out disabled members from previous
- if (lost_and_found_id == mUUID)
- {
- // This is the lost+found folder.
- mItems.push_back(std::string("Empty Lost And Found"));
- }
-
- if(trash_id == mUUID)
- {
- // This is the trash.
- mItems.push_back(std::string("Empty Trash"));
- }
- else if(model->isObjectDescendentOf(mUUID, trash_id))
- {
- // This is a folder in the trash.
- mItems.clear(); // clear any items that used to exist
- mItems.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- mDisabledItems.push_back(std::string("Purge Item"));
- }
-
- mItems.push_back(std::string("Restore Item"));
- }
- else if(isAgentInventory()) // do not allow creating in library
- {
- LLViewerInventoryCategory *cat = getCategory();
- // BAP removed protected check to re-enable standard ops in untyped folders.
- // Not sure what the right thing is to do here.
- if (!isCOFFolder() && cat /*&&
- LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType())*/)
- {
- // Do not allow to create 2-level subfolder in the Calling Card/Friends folder. EXT-694.
- if (!LLFriendCardsManager::instance().isCategoryInFriendFolder(cat))
- mItems.push_back(std::string("New Folder"));
- mItems.push_back(std::string("New Script"));
- mItems.push_back(std::string("New Note"));
- mItems.push_back(std::string("New Gesture"));
- mItems.push_back(std::string("New Clothes"));
- mItems.push_back(std::string("New Body Parts"));
- mItems.push_back(std::string("Change Type"));
-
- LLViewerInventoryCategory *cat = getCategory();
- if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
- {
- mDisabledItems.push_back(std::string("Change Type"));
- }
-
- getClipboardEntries(false, mItems, mDisabledItems, flags);
- }
- else
- {
- // Want some but not all of the items from getClipboardEntries for outfits.
- if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT)
- {
- mItems.push_back(std::string("Rename"));
- mItems.push_back(std::string("Delete"));
- }
- }
-
- //Added by spatters to force inventory pull on right-click to display folder options correctly. 07-17-06
- mCallingCards = mWearables = FALSE;
-
- LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD);
- if (checkFolderForContentsOfType(model, is_callingcard))
- {
- mCallingCards=TRUE;
- }
-
- LLFindWearables is_wearable;
- 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) )
- {
- mWearables=TRUE;
- }
-
- mMenu = &menu;
- sSelf = this;
- LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(FALSE);
-
- LLInventoryFetchDescendentsObserver::folder_ref_t folders;
- LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
- if (category)
- {
- folders.push_back(category->getUUID());
- }
- fetch->fetchDescendents(folders);
- inc_busy_count();
- if(fetch->isEverythingComplete())
- {
- // everything is already here - call done.
- fetch->done();
- }
- else
- {
- // it's all on it's way - add an observer, and the inventory
- // will call done for us when everything is here.
- gInventory.addObserver(fetch);
- }
- }
- else
- {
- mItems.push_back(std::string("--no options--"));
- mDisabledItems.push_back(std::string("--no options--"));
- }
- hide_context_entries(menu, mItems, mDisabledItems);
-}
-
-BOOL LLFolderBridge::hasChildren() const
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
- LLInventoryModel::EHasChildren has_children;
- has_children = gInventory.categoryHasChildren(mUUID);
- return has_children != LLInventoryModel::CHILDREN_NO;
-}
-
-BOOL LLFolderBridge::dragOrDrop(MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data)
-{
- //llinfos << "LLFolderBridge::dragOrDrop()" << llendl;
- BOOL accept = FALSE;
- switch(cargo_type)
- {
- case DAD_TEXTURE:
- case DAD_SOUND:
- case DAD_CALLINGCARD:
- case DAD_LANDMARK:
- case DAD_SCRIPT:
- case DAD_OBJECT:
- case DAD_NOTECARD:
- case DAD_CLOTHING:
- case DAD_BODYPART:
- case DAD_ANIMATION:
- case DAD_GESTURE:
- case DAD_LINK:
- accept = dragItemIntoFolder((LLInventoryItem*)cargo_data,
- drop);
- break;
- case DAD_CATEGORY:
- if (LLFriendCardsManager::instance().isAnyFriendCategory(mUUID))
- {
- accept = FALSE;
- }
- else
- {
- accept = dragCategoryIntoFolder((LLInventoryCategory*)cargo_data, drop);
- }
- break;
- default:
- break;
- }
- return accept;
-}
-
-LLViewerInventoryCategory* LLFolderBridge::getCategory() const
-{
- LLViewerInventoryCategory* cat = NULL;
- LLInventoryModel* model = getInventoryModel();
- if(model)
- {
- cat = (LLViewerInventoryCategory*)model->getCategory(mUUID);
- }
- return cat;
-}
-
-
-// static
-void LLFolderBridge::pasteClipboard(void* user_data)
-{
- LLFolderBridge* self = (LLFolderBridge*)user_data;
- if(self) self->pasteFromClipboard();
-}
-
-void LLFolderBridge::createNewCategory(void* user_data)
-{
- LLFolderBridge* bridge = (LLFolderBridge*)user_data;
- if(!bridge) return;
- LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(bridge->mInventoryPanel.get());
- if (!panel) return;
- LLInventoryModel* model = panel->getModel();
- if(!model) return;
- LLUUID id;
- id = model->createNewCategory(bridge->getUUID(),
- LLFolderType::FT_NONE,
- LLStringUtil::null);
- model->notifyObservers();
-
- // At this point, the bridge has probably been deleted, but the
- // view is still there.
- panel->setSelection(id, TAKE_FOCUS_YES);
-}
-
-void LLFolderBridge::createNewShirt(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SHIRT);
-}
-
-void LLFolderBridge::createNewPants(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_PANTS);
-}
-
-void LLFolderBridge::createNewShoes(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SHOES);
-}
-
-void LLFolderBridge::createNewSocks(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SOCKS);
-}
-
-void LLFolderBridge::createNewJacket(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_JACKET);
-}
-
-void LLFolderBridge::createNewSkirt(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SKIRT);
-}
-
-void LLFolderBridge::createNewGloves(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_GLOVES);
-}
-
-void LLFolderBridge::createNewUndershirt(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_UNDERSHIRT);
-}
-
-void LLFolderBridge::createNewUnderpants(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_UNDERPANTS);
-}
-
-void LLFolderBridge::createNewShape(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SHAPE);
-}
-
-void LLFolderBridge::createNewSkin(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SKIN);
-}
-
-void LLFolderBridge::createNewHair(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_HAIR);
-}
-
-void LLFolderBridge::createNewEyes(void* user_data)
-{
- LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_EYES);
-}
-
-// static
-void LLFolderBridge::createWearable(LLFolderBridge* bridge, EWearableType type)
-{
- if(!bridge) return;
- LLUUID parent_id = bridge->getUUID();
- createWearable(parent_id, type);
-}
-
-// Separate function so can be called by global menu as well as right-click
-// menu.
-// static
-void LLFolderBridge::createWearable(const LLUUID &parent_id, EWearableType type)
-{
- LLWearable* wearable = LLWearableList::instance().createNewWearable(type);
- LLAssetType::EType asset_type = wearable->getAssetType();
- LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
- create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
- parent_id, wearable->getTransactionID(), wearable->getName(),
- wearable->getDescription(), asset_type, inv_type, wearable->getType(),
- wearable->getPermissions().getMaskNextOwner(),
- LLPointer<LLInventoryCallback>(NULL));
-}
-
-void LLFolderBridge::modifyOutfit(BOOL append)
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model) return;
- LLViewerInventoryCategory* cat = getCategory();
- if(!cat) return;
-
- // BAP - was:
- // wear_inventory_category_on_avatar( cat, append );
- LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append );
-}
-
-// helper stuff
-bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv* move_inv)
-{
- LLFloaterOpenObject::LLCatAndWear* cat_and_wear = (LLFloaterOpenObject::LLCatAndWear* )move_inv->mUserData;
- LLViewerObject* object = gObjectList.findObject(move_inv->mObjectID);
- S32 option = LLNotification::getSelectedOption(notification, response);
-
- if(option == 0 && object)
- {
- if (cat_and_wear && cat_and_wear->mWear)
- {
- InventoryObjectList inventory_objects;
- object->getInventoryContents(inventory_objects);
- int contents_count = inventory_objects.size()-1; //subtract one for containing folder
-
- LLInventoryCopyAndWearObserver* inventoryObserver = new LLInventoryCopyAndWearObserver(cat_and_wear->mCatID, contents_count);
- gInventory.addObserver(inventoryObserver);
- }
-
- two_uuids_list_t::iterator move_it;
- for (move_it = move_inv->mMoveList.begin();
- move_it != move_inv->mMoveList.end();
- ++move_it)
- {
- object->moveInventory(move_it->first, move_it->second);
- }
-
- // update the UI.
- dialog_refresh_all();
- }
-
- if (move_inv->mCallback)
- {
- move_inv->mCallback(option, move_inv->mUserData);
- }
-
- delete move_inv;
- return false;
-}
-
-/*
-Next functions intended to reorder items in the inventory folder and save order on server
-Is now used for Favorites folder.
-
-*TODO: refactoring is needed with Favorites Bar functionality. Probably should be moved in LLInventoryModel
-*/
-void saveItemsOrder(LLInventoryModel::item_array_t& items)
-{
- int sortField = 0;
-
- // current order is saved by setting incremental values (1, 2, 3, ...) for the sort field
- for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
- {
- LLViewerInventoryItem* item = *i;
-
- item->setSortField(++sortField);
- item->setComplete(TRUE);
- item->updateServer(FALSE);
-
- gInventory.updateItem(item);
- }
-
- gInventory.notifyObservers();
-}
-
-LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
-{
- LLInventoryModel::item_array_t::iterator result = items.end();
-
- for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
- {
- if ((*i)->getUUID() == id)
- {
- result = i;
- break;
- }
- }
-
- return result;
-}
-
-void updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& srcItemId, const LLUUID& destItemId)
-{
- LLViewerInventoryItem* srcItem = gInventory.getItem(srcItemId);
- LLViewerInventoryItem* destItem = gInventory.getItem(destItemId);
-
- items.erase(findItemByUUID(items, srcItem->getUUID()));
- items.insert(findItemByUUID(items, destItem->getUUID()), srcItem);
-}
-
-BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
- BOOL drop)
-{
- LLInventoryModel* model = getInventoryModel();
- if(!model) return FALSE;
-
- // cannot drag into library
- if(!isAgentInventory())
- {
- return FALSE;
- }
-
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if(!avatar) return FALSE;
-
- LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();
- BOOL accept = FALSE;
- LLViewerObject* object = NULL;
- if(LLToolDragAndDrop::SOURCE_AGENT == source)
- {
-
- BOOL is_movable = TRUE;
- switch( inv_item->getActualType() )
- {
- case LLAssetType::AT_CATEGORY:
- is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
- break;
- default:
- break;
- }
-
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
- const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
- BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
- BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
-
- if(is_movable && move_is_into_trash)
- {
- switch(inv_item->getType())
- {
- case LLAssetType::AT_CLOTHING:
- case LLAssetType::AT_BODYPART:
- is_movable = !gAgentWearables.isWearingItem(inv_item->getUUID());
- break;
-
- case LLAssetType::AT_OBJECT:
- is_movable = !avatar->isWearingAttachment(inv_item->getUUID());
- break;
- default:
- break;
- }
- }
-
- if ( is_movable )
- {
- // Don't allow creating duplicates in the Calling Card/Friends
- // subfolders, see bug EXT-1599. Check is item direct descendent
- // of target folder and forbid item's movement if it so.
- // Note: isItemDirectDescendentOfCategory checks if
- // passed category is in the Calling Card/Friends folder
- is_movable = ! LLFriendCardsManager::instance()
- .isObjDirectDescendentOfCategory (inv_item, getCategory());
- }
-
- const LLUUID& favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
- const LLUUID& landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
- const BOOL folder_allows_reorder = ((mUUID == landmarks_id) || (mUUID == favorites_id));
-
- // we can move item inside a folder only if this folder is Favorites. See EXT-719
- accept = is_movable && ((mUUID != inv_item->getParentUUID()) || folder_allows_reorder);
- if(accept && drop)
- {
- if (inv_item->getType() == LLAssetType::AT_GESTURE
- && LLGestureManager::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)
- {
- LLGestureManager::instance().deactivateGesture(inv_item->getUUID());
- }
- // If an item is being dragged between windows, unselect
- // everything in the active window so that we don't follow
- // the selection to its new location (which is very
- // annoying).
- if (LLFloaterInventory::getActiveInventory())
- {
- LLInventoryPanel* active_panel = LLFloaterInventory::getActiveInventory()->getPanel();
- LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
- if (active_panel && (panel != active_panel))
- {
- active_panel->unSelectAll();
- }
- }
-
- // if dragging from/into favorites folder only reorder items
- if ((mUUID == inv_item->getParentUUID()) && folder_allows_reorder)
- {
- LLInventoryModel::cat_array_t cats;
- LLInventoryModel::item_array_t items;
- LLIsType is_type(LLAssetType::AT_LANDMARK);
- model->collectDescendentsIf(mUUID, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type);
-
- LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
- LLFolderViewItem* itemp = panel ? panel->getRootFolder()->getDraggingOverItem() : NULL;
- if (itemp)
- {
- LLUUID srcItemId = inv_item->getUUID();
- LLUUID destItemId = itemp->getListener()->getUUID();
-
- // update order
- updateItemsOrder(items, srcItemId, destItemId);
-
- saveItemsOrder(items);
- }
- }
- else if (favorites_id == mUUID) // if target is the favorites folder we use copy
- {
- copy_inventory_item(
- gAgent.getID(),
- inv_item->getPermissions().getOwner(),
- inv_item->getUUID(),
- mUUID,
- std::string(),
- LLPointer<LLInventoryCallback>(NULL));
- }
- else if (move_is_into_current_outfit || move_is_into_outfit)
- {
- // BAP - should skip if dup.
- if (move_is_into_current_outfit)
- {
- LLAppearanceManager::instance().addCOFItemLink(inv_item);
- }
- else
- {
- LLPointer<LLInventoryCallback> cb = NULL;
- link_inventory_item(
- gAgent.getID(),
- inv_item->getLinkedUUID(),
- mUUID,
- inv_item->getName(),
- LLAssetType::AT_LINK,
- cb);
- }
- }
- else
- {
- // restamp if the move is into the trash.
- LLInvFVBridge::changeItemParent(
- model,
- (LLViewerInventoryItem*)inv_item,
- mUUID,
- move_is_into_trash);
- }
- }
- }
- else if(LLToolDragAndDrop::SOURCE_WORLD == source)
- {
- // Make sure the object exists. If we allowed dragging from
- // anonymous objects, it would be possible to bypass
- // permissions.
- object = gObjectList.findObject(inv_item->getParentUUID());
- if(!object)
- {
- llinfos << "Object not found for drop." << llendl;
- return FALSE;
- }
-
- // coming from a task. Need to figure out if the person can
- // move/copy this item.
- LLPermissions perm(inv_item->getPermissions());
- BOOL is_move = FALSE;
- if((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())
- && perm.allowTransferTo(gAgent.getID())))
-// || gAgent.isGodlike())
-
- {
- accept = TRUE;
- }
- else if(object->permYouOwner())
- {
- // If the object cannot be copied, but the object the
- // inventory is owned by the agent, then the item can be
- // moved from the task to agent inventory.
- is_move = TRUE;
- accept = TRUE;
- }
- if(drop && accept)
- {
- LLMoveInv* move_inv = new LLMoveInv;
- move_inv->mObjectID = inv_item->getParentUUID();
- two_uuids_t item_pair(mUUID, inv_item->getUUID());
- move_inv->mMoveList.push_back(item_pair);
- move_inv->mCallback = NULL;
- move_inv->mUserData = NULL;
- if(is_move)
- {
- warn_move_inventory(object, move_inv);
- }
- else
- {
- LLNotification::Params params("MoveInventoryFromObject");
- params.functor.function(boost::bind(move_task_inventory_callback, _1, _2, move_inv));
- LLNotifications::instance().forceResponse(params, 0);
- }
- }
-
- }
- else if(LLToolDragAndDrop::SOURCE_NOTECARD == source)
- {
- accept = TRUE;
- if(drop)
- {
- copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(),
- LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
- }
- }
- else if(LLToolDragAndDrop::SOURCE_LIBRARY == source)
- {
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)inv_item;
- if(item && item->isComplete())
- {
- accept = TRUE;
- if(drop)
- {
- copy_inventory_item(
- gAgent.getID(),
- inv_item->getPermissions().getOwner(),
- inv_item->getUUID(),
- mUUID,
- std::string(),
- LLPointer<LLInventoryCallback>(NULL));
- }
- }
- }
- else
- {
- llwarns << "unhandled drag source" << llendl;
- }
- return accept;
-}
-
-// +=================================================+
-// | LLScriptBridge (DEPRECTED) |
-// +=================================================+
-
-LLUIImagePtr LLScriptBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_SCRIPT, LLInventoryType::IT_LSL, 0, FALSE);
-}
-
-// +=================================================+
-// | LLTextureBridge |
-// +=================================================+
-
-LLUIImagePtr LLTextureBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_TEXTURE, mInvType, 0, FALSE);
-}
-
-void LLTextureBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-}
-
-void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- lldebugs << "LLTextureBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
-
- items.push_back(std::string("Texture Separator"));
- items.push_back(std::string("Save As"));
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-// virtual
-void LLTextureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("save_as" == action)
- {
- LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
- LLPreviewTexture* preview_texture = LLFloaterReg::findTypedInstance<LLPreviewTexture>("preview_texture", mUUID);
- if (preview_texture)
- {
- preview_texture->openToSave();
- }
- }
- else LLItemBridge::performAction(folder, model, action);
-}
-
-// +=================================================+
-// | LLSoundBridge |
-// +=================================================+
-
-LLUIImagePtr LLSoundBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_SOUND, LLInventoryType::IT_SOUND, 0, FALSE);
-}
-
-void LLSoundBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-/*
-// Changed this back to the way it USED to work:
-// only open the preview dialog through the contextual right-click menu
-// double-click just plays the sound
-
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- openSoundPreview((void*)this);
- //send_uuid_sound_trigger(item->getAssetUUID(), 1.0);
- }
-*/
-}
-
-void LLSoundBridge::previewItem()
-{
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- send_sound_trigger(item->getAssetUUID(), 1.0);
- }
-}
-
-void LLSoundBridge::openSoundPreview(void* which)
-{
- LLSoundBridge *me = (LLSoundBridge *)which;
- LLFloaterReg::showInstance("preview_sound", LLSD(me->mUUID), TAKE_FOCUS_YES);
-}
-
-void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- lldebugs << "LLSoundBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
-
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Sound Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
- }
-
- items.push_back(std::string("Sound Separator"));
- items.push_back(std::string("Sound Play"));
-
- hide_context_entries(menu, items, disabled_items);
-}
-
-// +=================================================+
-// | LLLandmarkBridge |
-// +=================================================+
-
-LLLandmarkBridge::LLLandmarkBridge(LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags/* = 0x00*/) :
-LLItemBridge(inventory, uuid)
-{
- mVisited = FALSE;
- if (flags & LLInventoryItem::II_FLAGS_LANDMARK_VISITED)
- {
- mVisited = TRUE;
- }
-}
-
-LLUIImagePtr LLLandmarkBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_LANDMARK, LLInventoryType::IT_LANDMARK, mVisited, FALSE);
-}
-
-void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
-
- lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl;
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Landmark Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
- }
-
- items.push_back(std::string("Landmark Separator"));
- items.push_back(std::string("About Landmark"));
-
- // Disable "About Landmark" menu item for
- // multiple landmarks selected. Only one landmark
- // info panel can be shown at a time.
- if ((flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("About Landmark"));
- }
-
- hide_context_entries(menu, items, disabled_items);
-}
-
-// Convenience function for the two functions below.
-void teleport_via_landmark(const LLUUID& asset_id)
-{
- gAgent.teleportViaLandmark( asset_id );
-
- // we now automatically track the landmark you're teleporting to
- // because you'll probably arrive at a telehub instead
- LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance();
- if( floater_world_map )
- {
- floater_world_map->trackLandmark( asset_id );
- }
-}
-
-// virtual
-void LLLandmarkBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("teleport" == action)
- {
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- teleport_via_landmark(item->getAssetUUID());
- }
- }
- else if ("about" == action)
- {
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- LLSD key;
- key["type"] = "landmark";
- key["id"] = item->getUUID();
-
- LLSideTray::getInstance()->showPanel("panel_places", key);
- }
- }
- else
- {
- LLItemBridge::performAction(folder, model, action);
- }
-}
-
-static bool open_landmark_callback(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotification::getSelectedOption(notification, response);
-
- LLUUID asset_id = notification["payload"]["asset_id"].asUUID();
- if (option == 0)
- {
- teleport_via_landmark(asset_id);
- }
-
- return false;
-}
-static LLNotificationFunctorRegistration open_landmark_callback_reg("TeleportFromLandmark", open_landmark_callback);
-
-
-void LLLandmarkBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-/*
- LLViewerInventoryItem* item = getItem();
- if( item )
- {
- // Opening (double-clicking) a landmark immediately teleports,
- // but warns you the first time.
- // open_landmark(item);
- LLSD payload;
- payload["asset_id"] = item->getAssetUUID();
- LLNotifications::instance().add("TeleportFromLandmark", LLSD(), payload);
- }
-*/
-}
-
-
-// +=================================================+
-// | LLCallingCardObserver |
-// +=================================================+
-void LLCallingCardObserver::changed(U32 mask)
-{
- mBridgep->refreshFolderViewItem();
-}
-
-// +=================================================+
-// | LLCallingCardBridge |
-// +=================================================+
-
-LLCallingCardBridge::LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
- LLItemBridge(inventory, uuid)
-{
- mObserver = new LLCallingCardObserver(this);
- LLAvatarTracker::instance().addObserver(mObserver);
-}
-
-LLCallingCardBridge::~LLCallingCardBridge()
-{
- LLAvatarTracker::instance().removeObserver(mObserver);
- delete mObserver;
-}
-
-void LLCallingCardBridge::refreshFolderViewItem()
-{
- LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
- LLFolderViewItem* itemp = panel ? panel->getRootFolder()->getItemByID(mUUID) : NULL;
- if (itemp)
- {
- itemp->refresh();
- }
-}
-
-// virtual
-void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("begin_im" == action)
- {
- LLViewerInventoryItem *item = getItem();
- if (item && (item->getCreatorUUID() != gAgent.getID()) &&
- (!item->getCreatorUUID().isNull()))
- {
- std::string callingcard_name;
- gCacheName->getFullName(item->getCreatorUUID(), callingcard_name);
- LLUUID session_id = gIMMgr->addSession(callingcard_name, IM_NOTHING_SPECIAL, item->getCreatorUUID());
- if (session_id != LLUUID::null)
- {
- LLIMFloater::show(session_id);
- }
- }
- }
- else if ("lure" == action)
- {
- LLViewerInventoryItem *item = getItem();
- if (item && (item->getCreatorUUID() != gAgent.getID()) &&
- (!item->getCreatorUUID().isNull()))
- {
- LLAvatarActions::offerTeleport(item->getCreatorUUID());
- }
- }
- else LLItemBridge::performAction(folder, model, action);
-}
-
-LLUIImagePtr LLCallingCardBridge::getIcon() const
-{
- BOOL online = FALSE;
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- online = LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID());
- }
- return get_item_icon(LLAssetType::AT_CALLINGCARD, LLInventoryType::IT_CALLINGCARD, online, FALSE);
-}
-
-std::string LLCallingCardBridge::getLabelSuffix() const
-{
- LLViewerInventoryItem* item = getItem();
- if( item && LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()) )
- {
- return LLItemBridge::getLabelSuffix() + " (online)";
- }
- else
- {
- return LLItemBridge::getLabelSuffix();
- }
-}
-
-void LLCallingCardBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-/*
- LLViewerInventoryItem* item = getItem();
- if(item && !item->getCreatorUUID().isNull())
- {
- LLAvatarActions::showProfile(item->getCreatorUUID());
- }
-*/
-}
-
-void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- lldebugs << "LLCallingCardBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
-
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
-
- LLInventoryItem* item = getItem();
- BOOL good_card = (item
- && (LLUUID::null != item->getCreatorUUID())
- && (item->getCreatorUUID() != gAgent.getID()));
- BOOL user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()));
- items.push_back(std::string("Send Instant Message Separator"));
- items.push_back(std::string("Send Instant Message"));
- items.push_back(std::string("Offer Teleport..."));
- items.push_back(std::string("Conference Chat"));
-
- if (!good_card)
- {
- disabled_items.push_back(std::string("Send Instant Message"));
- }
- if (!good_card || !user_online)
- {
- disabled_items.push_back(std::string("Offer Teleport..."));
- disabled_items.push_back(std::string("Conference Chat"));
- }
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data)
-{
- LLViewerInventoryItem* item = getItem();
- BOOL rv = FALSE;
- if(item)
- {
- // check the type
- switch(cargo_type)
- {
- case DAD_TEXTURE:
- case DAD_SOUND:
- case DAD_LANDMARK:
- case DAD_SCRIPT:
- case DAD_CLOTHING:
- case DAD_OBJECT:
- case DAD_NOTECARD:
- case DAD_BODYPART:
- case DAD_ANIMATION:
- case DAD_GESTURE:
- {
- LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
- const LLPermissions& perm = inv_item->getPermissions();
- if(gInventory.getItem(inv_item->getUUID())
- && perm.allowOperationBy(PERM_TRANSFER, gAgent.getID()))
- {
- rv = TRUE;
- if(drop)
- {
- LLToolDragAndDrop::giveInventory(item->getCreatorUUID(),
- (LLInventoryItem*)cargo_data);
- }
- }
- else
- {
- // It's not in the user's inventory (it's probably in
- // an object's contents), so disallow dragging it here.
- // You can't give something you don't yet have.
- rv = FALSE;
- }
- break;
- }
- case DAD_CATEGORY:
- {
- LLInventoryCategory* inv_cat = (LLInventoryCategory*)cargo_data;
- if( gInventory.getCategory( inv_cat->getUUID() ) )
- {
- rv = TRUE;
- if(drop)
- {
- LLToolDragAndDrop::giveInventoryCategory(
- item->getCreatorUUID(),
- inv_cat);
- }
- }
- else
- {
- // It's not in the user's inventory (it's probably in
- // an object's contents), so disallow dragging it here.
- // You can't give something you don't yet have.
- rv = FALSE;
- }
- break;
- }
- default:
- break;
- }
- }
- return rv;
-}
-
-BOOL LLCallingCardBridge::removeItem()
-{
- if (LLFriendCardsManager::instance().isItemInAnyFriendsList(getItem()))
- {
- LLAvatarActions::removeFriendDialog(getItem()->getCreatorUUID());
- return FALSE;
- }
- else
- {
- return LLItemBridge::removeItem();
- }
-}
-// +=================================================+
-// | LLNotecardBridge |
-// +=================================================+
-
-LLUIImagePtr LLNotecardBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_NOTECARD, LLInventoryType::IT_NOTECARD, 0, FALSE);
-}
-
-void LLNotecardBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-
-/*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
- }
-*/
-}
-
-
-// +=================================================+
-// | LLGestureBridge |
-// +=================================================+
-
-LLUIImagePtr LLGestureBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_GESTURE, LLInventoryType::IT_GESTURE, 0, FALSE);
-}
-
-LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const
-{
- if( LLGestureManager::instance().isGestureActive(mUUID) )
- {
- return LLFontGL::BOLD;
- }
- else
- {
- return LLFontGL::NORMAL;
- }
-}
-
-std::string LLGestureBridge::getLabelSuffix() const
-{
- if( LLGestureManager::instance().isGestureActive(mUUID) )
- {
- return LLItemBridge::getLabelSuffix() + " (active)";
- }
- else
- {
- return LLItemBridge::getLabelSuffix();
- }
-}
-
-// virtual
-void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("activate" == action)
- {
- LLGestureManager::instance().activateGesture(mUUID);
-
- LLViewerInventoryItem* item = gInventory.getItem(mUUID);
- if (!item) return;
-
- // Since we just changed the suffix to indicate (active)
- // the server doesn't need to know, just the viewer.
- gInventory.updateItem(item);
- gInventory.notifyObservers();
- }
- else if ("deactivate" == action)
- {
- LLGestureManager::instance().deactivateGesture(mUUID);
-
- LLViewerInventoryItem* item = gInventory.getItem(mUUID);
- if (!item) return;
-
- // Since we just changed the suffix to indicate (active)
- // the server doesn't need to know, just the viewer.
- gInventory.updateItem(item);
- gInventory.notifyObservers();
- }
- else LLItemBridge::performAction(folder, model, action);
-}
-
-void LLGestureBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-/*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
- preview->setFocus(TRUE);
- }
-*/
-}
-
-BOOL LLGestureBridge::removeItem()
-{
- // Force close the preview window, if it exists
- LLGestureManager::instance().deactivateGesture(mUUID);
- return LLItemBridge::removeItem();
-}
-
-void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- lldebugs << "LLGestureBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- LLInventoryItem* item = getItem();
- if (item && item->getIsLinkType())
- {
- items.push_back(std::string("Find Original"));
- }
- items.push_back(std::string("Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
-
- items.push_back(std::string("Gesture Separator"));
- items.push_back(std::string("Activate"));
- items.push_back(std::string("Deactivate"));
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-// +=================================================+
-// | LLAnimationBridge |
-// +=================================================+
-
-LLUIImagePtr LLAnimationBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_ANIMATION, LLInventoryType::IT_ANIMATION, 0, FALSE);
-}
-
-void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
-
- lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl;
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Animation Open"));
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
- }
-
- items.push_back(std::string("Animation Separator"));
- items.push_back(std::string("Animation Play"));
- items.push_back(std::string("Animation Audition"));
-
- hide_context_entries(menu, items, disabled_items);
-
-}
-
-// virtual
-void LLAnimationBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ((action == "playworld") || (action == "playlocal"))
- {
- if (getItem())
- {
- LLPreviewAnim::e_activation_type activate = LLPreviewAnim::NONE;
- if ("playworld" == action) activate = LLPreviewAnim::PLAY;
- if ("playlocal" == action) activate = LLPreviewAnim::AUDITION;
-
- LLPreviewAnim* preview = LLFloaterReg::showTypedInstance<LLPreviewAnim>("preview_anim", LLSD(mUUID));
- if (preview)
- {
- preview->activate(activate);
- }
- }
- }
- else
- {
- LLItemBridge::performAction(folder, model, action);
- }
-}
-
-void LLAnimationBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-/*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
- }
-*/
-}
-
-// +=================================================+
-// | LLObjectBridge |
-// +=================================================+
-
-// static
-LLUUID LLObjectBridge::sContextMenuItemID;
-
-LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type, U32 flags) :
-LLItemBridge(inventory, uuid), mInvType(type)
-{
- mAttachPt = (flags & 0xff); // low bye of inventory flags
-
- mIsMultiObject = ( flags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ? TRUE: FALSE;
-}
-
-BOOL LLObjectBridge::isItemRemovable()
-{
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if(!avatar) return FALSE;
- if(avatar->isWearingAttachment(mUUID)) return FALSE;
- return LLInvFVBridge::isItemRemovable();
-}
-
-LLUIImagePtr LLObjectBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_OBJECT, mInvType, mAttachPt, mIsMultiObject );
-}
-
-LLInventoryObject* LLObjectBridge::getObject() const
-{
- LLInventoryObject* object = NULL;
- LLInventoryModel* model = getInventoryModel();
- if(model)
- {
- object = (LLInventoryObject*)model->getObject(mUUID);
- }
- return object;
-}
-
-// virtual
-void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("attach" == action)
- {
- LLUUID object_id = mUUID;
- LLViewerInventoryItem* item;
- item = (LLViewerInventoryItem*)gInventory.getItem(object_id);
- if(item && gInventory.isObjectDescendentOf(object_id, gInventory.getRootFolderID()))
- {
- rez_attachment(item, NULL);
- }
- else if(item && item->isComplete())
- {
- // must be in library. copy it to our inventory and put it on.
- LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- gFocusMgr.setKeyboardFocus(NULL);
- }
- else if ("detach" == action)
- {
- LLInventoryItem* item = gInventory.getItem(mUUID);
- if(item)
- {
- gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
- gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
- gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- gMessageSystem->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
- gMessageSystem->sendReliable( gAgent.getRegion()->getHost());
- }
- // this object might have been selected, so let the selection manager know it's gone now
- LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
- if (found_obj)
- {
- LLSelectMgr::getInstance()->remove(found_obj);
- }
- }
- else LLItemBridge::performAction(folder, model, action);
-}
-
-void LLObjectBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
-
- LLSD key;
- key["id"] = mUUID;
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
-
- // Disable old properties floater; this is replaced by the sidepanel.
- /*
- LLFloaterReg::showInstance("properties", mUUID);
- */
-}
-
-LLFontGL::StyleFlags LLObjectBridge::getLabelStyle() const
-{
- U8 font = LLFontGL::NORMAL;
-
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if( avatar && avatar->isWearingAttachment( mUUID ) )
- {
- font |= LLFontGL::BOLD;
- }
-
- LLInventoryItem* item = getItem();
- if (item && item->getIsLinkType())
- {
- font |= LLFontGL::ITALIC;
- }
-
- return (LLFontGL::StyleFlags)font;
-}
-
-std::string LLObjectBridge::getLabelSuffix() const
-{
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if( avatar && avatar->isWearingAttachment( mUUID ) )
- {
- std::string attachment_point_name = avatar->getAttachedPointName(mUUID);
-
- // e.g. "(worn on ...)" / "(attached to ...)"
- LLStringUtil::format_map_t args;
- args["[ATTACHMENT_POINT]"] = attachment_point_name.c_str();
- return LLItemBridge::getLabelSuffix() + LLTrans::getString("WornOnAttachmentPoint", args);
- }
- else
- {
- return LLItemBridge::getLabelSuffix();
- }
-}
-
-void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment)
-{
- LLSD payload;
- payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.
-
- S32 attach_pt = 0;
- if (gAgent.getAvatarObject() && attachment)
- {
- for (LLVOAvatar::attachment_map_t::iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin();
- iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter)
- {
- if (iter->second == attachment)
- {
- attach_pt = iter->first;
- break;
- }
- }
- }
-
- payload["attachment_point"] = attach_pt;
-
-#if !ENABLE_MULTIATTACHMENTS
- if (attachment && attachment->getNumObjects() > 0)
- {
- LLNotifications::instance().add("ReplaceAttachment", LLSD(), payload, confirm_replace_attachment_rez);
- }
- else
-#endif
- {
- LLNotifications::instance().forceResponse(LLNotification::Params("ReplaceAttachment").payload(payload), 0/*YES*/);
- }
-}
-
-bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response)
-{
- LLVOAvatar *avatarp = gAgent.getAvatarObject();
-
- if (!avatarp->canAttachMoreObjects())
- {
- LLSD args;
- args["MAX_ATTACHMENTS"] = llformat("%d", MAX_AGENT_ATTACHMENTS);
- LLNotifications::instance().add("MaxAttachmentsOnOutfit", args);
- return false;
- }
-
- S32 option = LLNotification::getSelectedOption(notification, response);
- if (option == 0/*YES*/)
- {
- LLViewerInventoryItem* itemp = gInventory.getItem(notification["payload"]["item_id"].asUUID());
-
- if (itemp)
- {
- LLMessageSystem* msg = gMessageSystem;
- msg->newMessageFast(_PREHASH_RezSingleAttachmentFromInv);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
- msg->nextBlockFast(_PREHASH_ObjectData);
- msg->addUUIDFast(_PREHASH_ItemID, itemp->getUUID());
- msg->addUUIDFast(_PREHASH_OwnerID, itemp->getPermissions().getOwner());
- U8 attachment_pt = notification["payload"]["attachment_point"].asInteger();
-#if ENABLE_MULTIATTACHMENTS
- attachment_pt |= ATTACHMENT_ADD;
-#endif
- msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt);
- pack_permissions_slam(msg, itemp->getFlags(), itemp->getPermissions());
- msg->addStringFast(_PREHASH_Name, itemp->getName());
- msg->addStringFast(_PREHASH_Description, itemp->getDescription());
- msg->sendReliable(gAgent.getRegion()->getHost());
- }
- }
- return false;
-}
-static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("ReplaceAttachment", confirm_replace_attachment_rez);
-
-void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- LLInventoryItem* item = getItem();
- if (item && item->getIsLinkType())
- {
- items.push_back(std::string("Find Original"));
- }
-
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
-
- LLObjectBridge::sContextMenuItemID = mUUID;
-
- if(item)
- {
- LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
- if( !avatarp )
- {
- return;
- }
-
- if( avatarp->isWearingAttachment( mUUID ) )
- {
- items.push_back(std::string("Detach From Yourself"));
- }
- else
- if( !isInTrash() && !isLinkedObjectInTrash() )
- {
- items.push_back(std::string("Attach Separator"));
- items.push_back(std::string("Object Wear"));
- items.push_back(std::string("Attach To"));
- items.push_back(std::string("Attach To HUD"));
- // commented out for DEV-32347
- //items.push_back(std::string("Restore to Last Position"));
-
- if (!avatarp->canAttachMoreObjects())
- {
- disabled_items.push_back(std::string("Object Wear"));
- disabled_items.push_back(std::string("Attach To"));
- disabled_items.push_back(std::string("Attach To HUD"));
- }
- LLMenuGL* attach_menu = menu.findChildMenuByName("Attach To", TRUE);
- LLMenuGL* attach_hud_menu = menu.findChildMenuByName("Attach To HUD", TRUE);
- LLVOAvatar *avatarp = gAgent.getAvatarObject();
- if (attach_menu
- && (attach_menu->getChildCount() == 0)
- && attach_hud_menu
- && (attach_hud_menu->getChildCount() == 0)
- && avatarp)
- {
- for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();
- iter != avatarp->mAttachmentPoints.end(); )
- {
- LLVOAvatar::attachment_map_t::iterator curiter = iter++;
- LLViewerJointAttachment* attachment = curiter->second;
- LLMenuItemCallGL::Params p;
- std::string submenu_name = attachment->getName();
- if (LLTrans::getString(submenu_name) != "")
- {
- p.name = (" ")+LLTrans::getString(submenu_name)+" ";
- }
- else
- {
- p.name = submenu_name;
- }
- LLSD cbparams;
- cbparams["index"] = curiter->first;
- cbparams["label"] = attachment->getName();
- p.on_click.function_name = "Inventory.AttachObject";
- p.on_click.parameter = LLSD(attachment->getName());
- p.on_enable.function_name = "Attachment.Label";
- p.on_enable.parameter = cbparams;
- LLView* parent = attachment->getIsHUDAttachment() ? attach_hud_menu : attach_menu;
- LLUICtrlFactory::create<LLMenuItemCallGL>(p, parent);
- }
- }
- }
- }
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-BOOL LLObjectBridge::renameItem(const std::string& new_name)
-{
- if(!isItemRenameable())
- return FALSE;
- LLPreview::dirty(mUUID);
- LLInventoryModel* model = getInventoryModel();
- if(!model)
- return FALSE;
- LLViewerInventoryItem* item = getItem();
- if(item && (item->getName() != new_name))
- {
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->rename(new_name);
- buildDisplayName(new_item, mDisplayName);
- new_item->updateServer(FALSE);
- model->updateItem(new_item);
-
- model->notifyObservers();
-
- LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
- if( avatar )
- {
- LLViewerObject* obj = avatar->getWornAttachment( item->getUUID() );
- if( obj )
- {
- LLSelectMgr::getInstance()->deselectAll();
- LLSelectMgr::getInstance()->addAsIndividual( obj, SELECT_ALL_TES, FALSE );
- LLSelectMgr::getInstance()->selectionSetObjectName( new_name );
- LLSelectMgr::getInstance()->deselectAll();
- }
- }
- }
- // return FALSE because we either notified observers (& therefore
- // rebuilt) or we didn't update.
- return FALSE;
-}
-
-// +=================================================+
-// | LLLSLTextBridge |
-// +=================================================+
-
-LLUIImagePtr LLLSLTextBridge::getIcon() const
-{
- return get_item_icon(LLAssetType::AT_SCRIPT, LLInventoryType::IT_LSL, 0, FALSE);
-}
-
-void LLLSLTextBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
- /*
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
- }
- */
-}
-
-// +=================================================+
-// | LLWearableBridge |
-// +=================================================+
-
-// *NOTE: hack to get from avatar inventory to avatar
-void wear_inventory_item_on_avatar( LLInventoryItem* item )
-{
- if(item)
- {
- lldebugs << "wear_inventory_item_on_avatar( " << item->getName()
- << " )" << llendl;
-
- LLAppearanceManager::instance().addCOFItemLink(item);
- }
-}
-
-void wear_add_inventory_item_on_avatar( LLInventoryItem* item )
-{
- if(item)
- {
- lldebugs << "wear_add_inventory_item_on_avatar( " << item->getName()
- << " )" << llendl;
-
- LLWearableList::instance().getAsset(item->getAssetUUID(),
- item->getName(),
- item->getType(),
- LLWearableBridge::onWearAddOnAvatarArrived,
- new LLUUID(item->getUUID()));
- }
-}
-
-void remove_inventory_category_from_avatar( LLInventoryCategory* category )
-{
- if(!category) return;
- lldebugs << "remove_inventory_category_from_avatar( " << category->getName()
- << " )" << llendl;
-
-
- if( gFloaterCustomize )
- {
- gFloaterCustomize->askToSaveIfDirty(
- boost::bind(remove_inventory_category_from_avatar_step2, _1, category->getUUID()));
- }
- else
- {
- remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
- }
-}
-
-struct OnRemoveStruct
-{
- LLUUID mUUID;
- OnRemoveStruct(const LLUUID& uuid):
- mUUID(uuid)
- {
- }
-};
-
-void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id)
-{
-
- // Find all the wearables that are in the category's subtree.
- lldebugs << "remove_inventory_category_from_avatar_step2()" << llendl;
- if(proceed)
- {
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
- LLFindWearables is_wearable;
- gInventory.collectDescendentsIf(category_id,
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH,
- is_wearable);
- S32 i;
- S32 wearable_count = item_array.count();
-
- LLInventoryModel::cat_array_t obj_cat_array;
- LLInventoryModel::item_array_t obj_item_array;
- LLIsType is_object( LLAssetType::AT_OBJECT );
- gInventory.collectDescendentsIf(category_id,
- obj_cat_array,
- obj_item_array,
- LLInventoryModel::EXCLUDE_TRASH,
- is_object);
- S32 obj_count = obj_item_array.count();
-
- // Find all gestures in this folder
- LLInventoryModel::cat_array_t gest_cat_array;
- LLInventoryModel::item_array_t gest_item_array;
- LLIsType is_gesture( LLAssetType::AT_GESTURE );
- gInventory.collectDescendentsIf(category_id,
- gest_cat_array,
- gest_item_array,
- LLInventoryModel::EXCLUDE_TRASH,
- is_gesture);
- S32 gest_count = gest_item_array.count();
-
- if (wearable_count > 0) //Loop through wearables. If worn, remove.
- {
- for(i = 0; i < wearable_count; ++i)
- {
- if( gAgentWearables.isWearingItem (item_array.get(i)->getUUID()) )
- {
- LLWearableList::instance().getAsset(item_array.get(i)->getAssetUUID(),
- item_array.get(i)->getName(),
- item_array.get(i)->getType(),
- LLWearableBridge::onRemoveFromAvatarArrived,
- new OnRemoveStruct(item_array.get(i)->getUUID()));
-
- }
- }
- }
-
-
- if (obj_count > 0)
- {
- for(i = 0; i < obj_count; ++i)
- {
- gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
- gMessageSystem->nextBlockFast(_PREHASH_ObjectData );
- gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
- gMessageSystem->addUUIDFast(_PREHASH_ItemID, obj_item_array.get(i)->getUUID() );
-
- gMessageSystem->sendReliable( gAgent.getRegion()->getHost() );
-
- // this object might have been selected, so let the selection manager know it's gone now
- LLViewerObject *found_obj = gObjectList.findObject( obj_item_array.get(i)->getUUID());
- if (found_obj)
- {
- LLSelectMgr::getInstance()->remove(found_obj);
- }
- }
- }
-
- if (gest_count > 0)
- {
- for(i = 0; i < gest_count; ++i)
- {
- if ( LLGestureManager::instance().isGestureActive( gest_item_array.get(i)->getUUID()) )
- {
- LLGestureManager::instance().deactivateGesture( gest_item_array.get(i)->getUUID() );
- gInventory.updateItem( gest_item_array.get(i) );
- gInventory.notifyObservers();
- }
-
- }
- }
- }
-}
-
-BOOL LLWearableBridge::renameItem(const std::string& new_name)
-{
- if( gAgentWearables.isWearingItem( mUUID ) )
- {
- gAgentWearables.setWearableName( mUUID, new_name );
- }
- return LLItemBridge::renameItem(new_name);
-}
-
-BOOL LLWearableBridge::isItemRemovable()
-{
- if (gAgentWearables.isWearingItem(mUUID)) return FALSE;
- return LLInvFVBridge::isItemRemovable();
-}
-
-std::string LLWearableBridge::getLabelSuffix() const
-{
- if( gAgentWearables.isWearingItem( mUUID ) )
- {
- // e.g. "(worn)"
- return LLItemBridge::getLabelSuffix() + LLTrans::getString("worn");
- }
- else
- {
- return LLItemBridge::getLabelSuffix();
- }
-}
-
-LLUIImagePtr LLWearableBridge::getIcon() const
-{
- return get_item_icon(mAssetType, mInvType, mWearableType, FALSE);
-}
-
-// virtual
-void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("wear" == action)
- {
- wearOnAvatar();
- }
- else if ("wear_add" == action)
- {
- wearAddOnAvatar();
- }
- else if ("edit" == action)
- {
- editOnAvatar();
- return;
- }
- else if ("take_off" == action)
- {
- if(gAgentWearables.isWearingItem(mUUID))
- {
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLWearableList::instance().getAsset(item->getAssetUUID(),
- item->getName(),
- item->getType(),
- LLWearableBridge::onRemoveFromAvatarArrived,
- new OnRemoveStruct(mUUID));
- }
- }
- }
- else LLItemBridge::performAction(folder, model, action);
-}
-
-void LLWearableBridge::openItem()
-{
- LLViewerInventoryItem* item = getItem();
-
- if (item)
- {
- LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
- }
- /*
- if( isInTrash() )
- {
- LLNotifications::instance().add("CannotWearTrash");
- }
- else if(isAgentInventory())
- {
- if( !gAgentWearables.isWearingItem( mUUID ) )
- {
- wearOnAvatar();
- }
- }
- else
- {
- // must be in the inventory library. copy it to our inventory
- // and put it on right away.
- LLViewerInventoryItem* item = getItem();
- if(item && item->isComplete())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else if(item)
- {
- // *TODO: We should fetch the item details, and then do
- // the operation above.
- LLNotifications::instance().add("CannotWearInfoNotComplete");
- }
- }
- */
-}
-
-void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- lldebugs << "LLWearableBridge::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- { // FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere
- BOOL no_open = ((flags & SUPPRESS_OPEN_ITEM) == SUPPRESS_OPEN_ITEM);
-
- // If we have clothing, don't add "Open" as it's the same action as "Wear" SL-18976
- LLViewerInventoryItem* item = getItem();
- if( !no_open && item )
- {
- no_open = (item->getType() == LLAssetType::AT_CLOTHING) ||
- (item->getType() == LLAssetType::AT_BODYPART);
- }
- if (!no_open)
- {
- items.push_back(std::string("Open"));
- }
-
- if (item && item->getIsLinkType())
- {
- items.push_back(std::string("Find Original"));
- }
-
- items.push_back(std::string("Properties"));
-
- getClipboardEntries(true, items, disabled_items, flags);
-
- items.push_back(std::string("Wearable Separator"));
-
- items.push_back(std::string("Wearable Wear"));
- items.push_back(std::string("Wearable Add"));
- items.push_back(std::string("Wearable Edit"));
-
- if ((flags & FIRST_SELECTED_ITEM) == 0)
- {
- disabled_items.push_back(std::string("Wearable Edit"));
- }
- // Don't allow items to be worn if their baseobj is in the trash.
- if (isLinkedObjectInTrash())
- {
- disabled_items.push_back(std::string("Wearable Wear"));
- disabled_items.push_back(std::string("Wearable Add"));
- disabled_items.push_back(std::string("Wearable Edit"));
- }
-
- // Disable wear and take off based on whether the item is worn.
- if(item)
- {
- switch (item->getType())
- {
- case LLAssetType::AT_CLOTHING:
- items.push_back(std::string("Take Off"));
- case LLAssetType::AT_BODYPART:
- if (gAgentWearables.isWearingItem(item->getUUID()))
- {
- disabled_items.push_back(std::string("Wearable Wear"));
- disabled_items.push_back(std::string("Wearable Add"));
- }
- else
- {
- disabled_items.push_back(std::string("Take Off"));
- }
- break;
- default:
- break;
- }
- }
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-// Called from menus
-// static
-BOOL LLWearableBridge::canWearOnAvatar(void* user_data)
-{
- LLWearableBridge* self = (LLWearableBridge*)user_data;
- if(!self) return FALSE;
- if(!self->isAgentInventory())
- {
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)self->getItem();
- if(!item || !item->isComplete()) return FALSE;
- }
- return (!gAgentWearables.isWearingItem(self->mUUID));
-}
-
-// Called from menus
-// static
-void LLWearableBridge::onWearOnAvatar(void* user_data)
-{
- LLWearableBridge* self = (LLWearableBridge*)user_data;
- if(!self) return;
- self->wearOnAvatar();
-}
-
-void LLWearableBridge::wearOnAvatar()
-{
- // Don't wear anything until initial wearables are loaded, can
- // destroy clothing items.
- if (!gAgentWearables.areWearablesLoaded())
- {
- LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded");
- return;
- }
-
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- if(!isAgentInventory())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else
- {
- wear_inventory_item_on_avatar(item);
- }
- }
-}
-
-void LLWearableBridge::wearAddOnAvatar()
-{
- // Don't wear anything until initial wearables are loaded, can
- // destroy clothing items.
- if (!gAgentWearables.areWearablesLoaded())
- {
- LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded");
- return;
- }
-
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- if(!isAgentInventory())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else
- {
- wear_add_inventory_item_on_avatar(item);
- }
- }
-}
-
-// static
-void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userdata )
-{
- LLUUID* item_id = (LLUUID*) userdata;
- if(wearable)
- {
- LLViewerInventoryItem* item = NULL;
- item = (LLViewerInventoryItem*)gInventory.getItem(*item_id);
- if(item)
- {
- if(item->getAssetUUID() == wearable->getAssetID())
- {
- gAgentWearables.setWearableItem(item, wearable);
- gInventory.notifyObservers();
- //self->getFolderItem()->refreshFromRoot();
- }
- else
- {
- llinfos << "By the time wearable asset arrived, its inv item already pointed to a different asset." << llendl;
- }
- }
- }
- delete item_id;
-}
-
-// static
-// BAP remove the "add" code path once everything is fully COF-ified.
-void LLWearableBridge::onWearAddOnAvatarArrived( LLWearable* wearable, void* userdata )
-{
- LLUUID* item_id = (LLUUID*) userdata;
- if(wearable)
- {
- LLViewerInventoryItem* item = NULL;
- item = (LLViewerInventoryItem*)gInventory.getItem(*item_id);
- if(item)
- {
- if(item->getAssetUUID() == wearable->getAssetID())
- {
- bool do_append = true;
- gAgentWearables.setWearableItem(item, wearable, do_append);
- gInventory.notifyObservers();
- //self->getFolderItem()->refreshFromRoot();
- }
- else
- {
- llinfos << "By the time wearable asset arrived, its inv item already pointed to a different asset." << llendl;
- }
- }
- }
- delete item_id;
-}
-
-// static
-BOOL LLWearableBridge::canEditOnAvatar(void* user_data)
-{
- LLWearableBridge* self = (LLWearableBridge*)user_data;
- if(!self) return FALSE;
-
- return (gAgentWearables.isWearingItem(self->mUUID));
-}
-
-// static
-void LLWearableBridge::onEditOnAvatar(void* user_data)
-{
- LLWearableBridge* self = (LLWearableBridge*)user_data;
- if(self)
- {
- self->editOnAvatar();
- }
-}
-
-void LLWearableBridge::editOnAvatar()
-{
- const LLWearable* wearable = gAgentWearables.getWearableFromItemID(mUUID);
- if( wearable )
- {
- // Set the tab to the right wearable.
- if (gFloaterCustomize)
- gFloaterCustomize->setCurrentWearableType( wearable->getType() );
-
- if( CAMERA_MODE_CUSTOMIZE_AVATAR != gAgent.getCameraMode() )
- {
- // Start Avatar Customization
- gAgent.changeCameraToCustomizeAvatar();
- }
- }
-}
-
-// static
-BOOL LLWearableBridge::canRemoveFromAvatar(void* user_data)
-{
- LLWearableBridge* self = (LLWearableBridge*)user_data;
- if( self && (LLAssetType::AT_BODYPART != self->mAssetType) )
- {
- return gAgentWearables.isWearingItem( self->mUUID );
- }
- return FALSE;
-}
-
-// static
-void LLWearableBridge::onRemoveFromAvatar(void* user_data)
-{
- LLWearableBridge* self = (LLWearableBridge*)user_data;
- if(!self) return;
- if(gAgentWearables.isWearingItem(self->mUUID))
- {
- LLViewerInventoryItem* item = self->getItem();
- if (item)
- {
- LLUUID parent_id = item->getParentUUID();
- LLWearableList::instance().getAsset(item->getAssetUUID(),
- item->getName(),
- item->getType(),
- onRemoveFromAvatarArrived,
- new OnRemoveStruct(LLUUID(self->mUUID)));
- }
- }
-}
-
-// static
-void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
- void* userdata)
-{
- OnRemoveStruct *on_remove_struct = (OnRemoveStruct*) userdata;
- const LLUUID &item_id = gInventory.getLinkedItemID(on_remove_struct->mUUID);
- if(wearable)
- {
- if( gAgentWearables.isWearingItem( item_id ) )
- {
- EWearableType type = wearable->getType();
-
- if( !(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR || type==WT_EYES ) ) //&&
- //!((!gAgent.isTeen()) && ( type==WT_UNDERPANTS || type==WT_UNDERSHIRT )) )
- {
- // MULTI_WEARABLE: FIXME HACK - always remove all
- bool do_remove_all = false;
- gAgentWearables.removeWearable( type, do_remove_all, 0 );
- }
- }
- }
-
- // Find and remove this item from the COF.
- LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF());
- llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF.
- for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
- iter != items.end();
- ++iter)
- {
- const LLViewerInventoryItem *linked_item = (*iter);
- const LLUUID &item_id = linked_item->getUUID();
- gInventory.purgeObject(item_id);
- }
- gInventory.notifyObservers();
-
- delete on_remove_struct;
-}
-
-LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
- const LLUUID& uuid,LLInventoryModel* model)
-{
- LLInvFVBridgeAction* action = NULL;
- switch(asset_type)
- {
- case LLAssetType::AT_TEXTURE:
- action = new LLTextureBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_SOUND:
- action = new LLSoundBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_LANDMARK:
- action = new LLLandmarkBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_CALLINGCARD:
- action = new LLCallingCardBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_OBJECT:
- action = new LLObjectBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_NOTECARD:
- action = new LLNotecardBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_ANIMATION:
- action = new LLAnimationBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_GESTURE:
- action = new LLGestureBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_LSL_TEXT:
- action = new LLLSLTextBridgeAction(uuid,model);
- break;
-
- case LLAssetType::AT_CLOTHING:
- case LLAssetType::AT_BODYPART:
- action = new LLWearableBridgeAction(uuid,model);
-
- break;
-
- default:
- break;
- }
- return action;
-}
-
-//static
-void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
- const LLUUID& uuid,LLInventoryModel* model)
-{
- LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
- if(action)
- {
- action->doIt();
- delete action;
- }
-}
-
-//static
-void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
-{
- LLAssetType::EType asset_type = model->getItem(uuid)->getType();
- LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
- if(action)
- {
- action->doIt();
- delete action;
- }
-}
-
-LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
-{
- if(mModel)
- return (LLViewerInventoryItem*)mModel->getItem(mUUID);
- return NULL;
-}
-
-//virtual
-void LLTextureBridgeAction::doIt()
-{
- if (getItem())
- {
- LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLSoundBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLLandmarkBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if( item )
- {
- // Opening (double-clicking) a landmark immediately teleports,
- // but warns you the first time.
- LLSD payload;
- payload["asset_id"] = item->getAssetUUID();
- LLNotifications::instance().add("TeleportFromLandmark", LLSD(), payload);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLCallingCardBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if(item && item->getCreatorUUID().notNull())
- {
- LLAvatarActions::showProfile(item->getCreatorUUID());
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void
-LLNotecardBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLGestureBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
- preview->setFocus(TRUE);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-//virtual
-void LLAnimationBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLObjectBridgeAction::doIt()
-{
- LLFloaterReg::showInstance("properties", mUUID);
-
- LLInvFVBridgeAction::doIt();
-}
-
-
-//virtual
-void LLLSLTextBridgeAction::doIt()
-{
- LLViewerInventoryItem* item = getItem();
- if (item)
- {
- LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-
-BOOL LLWearableBridgeAction::isInTrash() const
-{
- if(!mModel) return FALSE;
- const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- return mModel->isObjectDescendentOf(mUUID, trash_id);
-}
-
-BOOL LLWearableBridgeAction::isAgentInventory() const
-{
- if(!mModel) return FALSE;
- if(gInventory.getRootFolderID() == mUUID) return TRUE;
- return mModel->isObjectDescendentOf(mUUID, gInventory.getRootFolderID());
-}
-
-void LLWearableBridgeAction::wearOnAvatar()
-{
- // Don't wear anything until initial wearables are loaded, can
- // destroy clothing items.
- if (!gAgentWearables.areWearablesLoaded())
- {
- LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded");
- return;
- }
-
- LLViewerInventoryItem* item = getItem();
- if(item)
- {
- if(!isAgentInventory())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else
- {
- wear_inventory_item_on_avatar(item);
- }
- }
-}
-
-//virtual
-void LLWearableBridgeAction::doIt()
-{
- if(isInTrash())
- {
- LLNotifications::instance().add("CannotWearTrash");
- }
- else if(isAgentInventory())
- {
- if(!gAgentWearables.isWearingItem(mUUID))
- {
- wearOnAvatar();
- }
- }
- else
- {
- // must be in the inventory library. copy it to our inventory
- // and put it on right away.
- LLViewerInventoryItem* item = getItem();
- if(item && item->isComplete())
- {
- LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
- copy_inventory_item(
- gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- else if(item)
- {
- // *TODO: We should fetch the item details, and then do
- // the operation above.
- LLNotifications::instance().add("CannotWearInfoNotComplete");
- }
- }
-
- LLInvFVBridgeAction::doIt();
-}
-
-// +=================================================+
-// | LLLinkItemBridge |
-// +=================================================+
-// For broken links
-
-std::string LLLinkItemBridge::sPrefix("Link: ");
-
-
-LLUIImagePtr LLLinkItemBridge::getIcon() const
-{
- if (LLViewerInventoryItem *item = getItem())
- {
- return get_item_icon(item->getActualType(), LLInventoryType::IT_NONE, 0, FALSE);
- }
- return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE);
-}
-
-void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- // *TODO: Translate
- lldebugs << "LLLink::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
-
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Delete"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Delete"));
- }
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-
-// +=================================================+
-// | LLLinkBridge |
-// +=================================================+
-// For broken links.
-
-std::string LLLinkFolderBridge::sPrefix("Link: ");
-
-
-LLUIImagePtr LLLinkFolderBridge::getIcon() const
-{
- LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
- if (LLViewerInventoryItem *item = getItem())
- {
- if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
- {
- preferred_type = cat->getPreferredType();
- }
- }
- return LLFolderBridge::getIcon(preferred_type);
-}
-
-void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
- // *TODO: Translate
- lldebugs << "LLLink::buildContextMenu()" << llendl;
- std::vector<std::string> items;
- std::vector<std::string> disabled_items;
-
- if(isInTrash())
- {
- items.push_back(std::string("Purge Item"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Purge Item"));
- }
-
- items.push_back(std::string("Restore Item"));
- }
- else
- {
- items.push_back(std::string("Find Original"));
- items.push_back(std::string("Delete"));
- if (!isItemRemovable())
- {
- disabled_items.push_back(std::string("Delete"));
- }
- }
- hide_context_entries(menu, items, disabled_items);
-}
-
-void LLLinkFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
- if ("goto" == action)
- {
- gotoItem(folder);
- return;
- }
- LLItemBridge::performAction(folder,model,action);
-}
-
-void LLLinkFolderBridge::gotoItem(LLFolderView *folder)
-{
- const LLUUID &cat_uuid = getFolderID();
- if (!cat_uuid.isNull())
- {
- if (LLFolderViewItem *base_folder = folder->getItemByID(cat_uuid))
- {
- if (LLInventoryModel* model = getInventoryModel())
- {
- model->fetchDescendentsOf(cat_uuid);
- }
- base_folder->setOpen(TRUE);
- folder->setSelectionFromRoot(base_folder,TRUE);
- folder->scrollToShowSelection();
- }
- }
-}
-
-const LLUUID &LLLinkFolderBridge::getFolderID() const
-{
- if (LLViewerInventoryItem *link_item = getItem())
- {
- if (const LLViewerInventoryCategory *cat = link_item->getLinkedCategory())
- {
- const LLUUID& cat_uuid = cat->getUUID();
- return cat_uuid;
- }
- }
- return LLUUID::null;
-}
+/**
+ * @file llinventorybridge.cpp
+ * @brief Implementation of the Inventory-Folder-View-Bridge classes.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llinventorybridge.h"
+
+#include "llagent.h"
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
+#include "llavataractions.h"
+#include "llfloatercustomize.h"
+#include "llfloaterinventory.h"
+#include "llfloateropenobject.h"
+#include "llfloaterreg.h"
+#include "llfloaterworldmap.h"
+#include "llfriendcard.h"
+#include "llgesturemgr.h"
+#include "llimfloater.h"
+#include "llimview.h"
+#include "llinventoryclipboard.h"
+#include "llinventoryfunctions.h"
+#include "llinventorymodel.h"
+#include "llinventorypanel.h"
+#include "llpreviewanim.h"
+#include "llpreviewgesture.h"
+#include "llpreviewtexture.h"
+#include "llselectmgr.h"
+#include "llsidetray.h"
+#include "lltrans.h"
+#include "llviewerassettype.h"
+#include "llviewermessage.h"
+#include "llviewerobjectlist.h"
+#include "llviewerwindow.h"
+#include "llvoavatarself.h"
+#include "llwearablelist.h"
+
+using namespace LLOldEvents;
+
+// Helpers
+// bug in busy count inc/dec right now, logic is complex... do we really need it?
+void inc_busy_count()
+{
+// gViewerWindow->getWindow()->incBusyCount();
+// check balance of these calls if this code is changed to ever actually
+// *do* something!
+}
+void dec_busy_count()
+{
+// gViewerWindow->getWindow()->decBusyCount();
+// check balance of these calls if this code is changed to ever actually
+// *do* something!
+}
+
+// Function declarations
+void wear_add_inventory_item_on_avatar(LLInventoryItem* item);
+void remove_inventory_category_from_avatar(LLInventoryCategory* category);
+void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id);
+bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*);
+bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response);
+
+std::string ICON_NAME[ICON_NAME_COUNT] =
+{
+ "Inv_Texture",
+ "Inv_Sound",
+ "Inv_CallingCard",
+ "Inv_CallingCard",
+ "Inv_Landmark",
+ "Inv_Landmark",
+ "Inv_Script",
+ "Inv_Clothing",
+ "Inv_Object",
+ "Inv_Object",
+ "Inv_Notecard",
+ "Inv_Skin",
+ "Inv_Snapshot",
+
+ "Inv_BodyShape",
+ "Inv_Skin",
+ "Inv_Hair",
+ "Inv_Eye",
+ "Inv_Shirt",
+ "Inv_Pants",
+ "Inv_Shoe",
+ "Inv_Socks",
+ "Inv_Jacket",
+ "Inv_Gloves",
+ "Inv_Undershirt",
+ "Inv_Underpants",
+ "Inv_Skirt",
+ "Inv_Alpha",
+ "Inv_Tattoo",
+
+ "Inv_Animation",
+ "Inv_Gesture",
+
+ "inv_item_linkitem.tga",
+ "inv_item_linkfolder.tga"
+};
+
+// +=================================================+
+// | LLInvFVBridge |
+// +=================================================+
+
+LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
+mUUID(uuid), mInvType(LLInventoryType::IT_NONE)
+{
+ mInventoryPanel = inventory->getHandle();
+}
+
+const std::string& LLInvFVBridge::getName() const
+{
+ LLInventoryObject* obj = getInventoryObject();
+ if(obj)
+ {
+ return obj->getName();
+ }
+ return LLStringUtil::null;
+}
+
+const std::string& LLInvFVBridge::getDisplayName() const
+{
+ return getName();
+}
+
+// Folders have full perms
+PermissionMask LLInvFVBridge::getPermissionMask() const
+{
+
+ return PERM_ALL;
+}
+
+// virtual
+LLFolderType::EType LLInvFVBridge::getPreferredType() const
+{
+ return LLFolderType::FT_NONE;
+}
+
+
+// Folders don't have creation dates.
+time_t LLInvFVBridge::getCreationDate() const
+{
+ return 0;
+}
+
+// Can be destoryed (or moved to trash)
+BOOL LLInvFVBridge::isItemRemovable()
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ if(model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID()))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// Can be moved to another folder
+BOOL LLInvFVBridge::isItemMovable() const
+{
+ return TRUE;
+}
+
+/*virtual*/
+/**
+ * @brief Adds this item into clipboard storage
+ */
+void LLInvFVBridge::cutToClipboard()
+{
+ if(isItemMovable())
+ {
+ LLInventoryClipboard::instance().cut(mUUID);
+ }
+}
+// *TODO: make sure this does the right thing
+void LLInvFVBridge::showProperties()
+{
+ LLSD key;
+ key["id"] = mUUID;
+ LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+
+ // Disable old properties floater; this is replaced by the sidepanel.
+ /*
+ LLFloaterReg::showInstance("properties", mUUID);
+ */
+}
+
+void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch)
+{
+ // Deactivate gestures when moving them into Trash
+ LLInvFVBridge* bridge;
+ LLInventoryModel* model = getInventoryModel();
+ LLViewerInventoryItem* item = NULL;
+ LLViewerInventoryCategory* cat = NULL;
+ LLInventoryModel::cat_array_t descendent_categories;
+ LLInventoryModel::item_array_t descendent_items;
+ S32 count = batch.count();
+ S32 i,j;
+ for(i = 0; i < count; ++i)
+ {
+ bridge = (LLInvFVBridge*)(batch.get(i));
+ if(!bridge || !bridge->isItemRemovable()) continue;
+ item = (LLViewerInventoryItem*)model->getItem(bridge->getUUID());
+ if (item)
+ {
+ if(LLAssetType::AT_GESTURE == item->getType())
+ {
+ LLGestureManager::instance().deactivateGesture(item->getUUID());
+ }
+ }
+ }
+ for(i = 0; i < count; ++i)
+ {
+ bridge = (LLInvFVBridge*)(batch.get(i));
+ if(!bridge || !bridge->isItemRemovable()) continue;
+ cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID());
+ if (cat)
+ {
+ gInventory.collectDescendents( cat->getUUID(), descendent_categories, descendent_items, FALSE );
+ for (j=0; j<descendent_items.count(); j++)
+ {
+ if(LLAssetType::AT_GESTURE == descendent_items[j]->getType())
+ {
+ LLGestureManager::instance().deactivateGesture(descendent_items[j]->getUUID());
+ }
+ }
+ }
+ }
+ removeBatchNoCheck(batch);
+}
+
+void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*>& batch)
+{
+ // this method moves a bunch of items and folders to the trash. As
+ // per design guidelines for the inventory model, the message is
+ // built and the accounting is performed first. After all of that,
+ // we call LLInventoryModel::moveObject() to move everything
+ // around.
+ LLInvFVBridge* bridge;
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+ LLMessageSystem* msg = gMessageSystem;
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLViewerInventoryItem* item = NULL;
+ LLViewerInventoryCategory* cat = NULL;
+ std::vector<LLUUID> move_ids;
+ LLInventoryModel::update_map_t update;
+ bool start_new_message = true;
+ S32 count = batch.count();
+ S32 i;
+ for(i = 0; i < count; ++i)
+ {
+ bridge = (LLInvFVBridge*)(batch.get(i));
+ if(!bridge || !bridge->isItemRemovable()) continue;
+ item = (LLViewerInventoryItem*)model->getItem(bridge->getUUID());
+ if(item)
+ {
+ if(item->getParentUUID() == trash_id) continue;
+ move_ids.push_back(item->getUUID());
+ LLPreview::hide(item->getUUID());
+ --update[item->getParentUUID()];
+ ++update[trash_id];
+ if(start_new_message)
+ {
+ start_new_message = false;
+ msg->newMessageFast(_PREHASH_MoveInventoryItem);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->addBOOLFast(_PREHASH_Stamp, TRUE);
+ }
+ msg->nextBlockFast(_PREHASH_InventoryData);
+ msg->addUUIDFast(_PREHASH_ItemID, item->getUUID());
+ msg->addUUIDFast(_PREHASH_FolderID, trash_id);
+ msg->addString("NewName", NULL);
+ if(msg->isSendFullFast(_PREHASH_InventoryData))
+ {
+ start_new_message = true;
+ gAgent.sendReliableMessage();
+ gInventory.accountForUpdate(update);
+ update.clear();
+ }
+ }
+ }
+ if(!start_new_message)
+ {
+ start_new_message = true;
+ gAgent.sendReliableMessage();
+ gInventory.accountForUpdate(update);
+ update.clear();
+ }
+ for(i = 0; i < count; ++i)
+ {
+ bridge = (LLInvFVBridge*)(batch.get(i));
+ if(!bridge || !bridge->isItemRemovable()) continue;
+ cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID());
+ if(cat)
+ {
+ if(cat->getParentUUID() == trash_id) continue;
+ move_ids.push_back(cat->getUUID());
+ --update[cat->getParentUUID()];
+ ++update[trash_id];
+ if(start_new_message)
+ {
+ start_new_message = false;
+ msg->newMessageFast(_PREHASH_MoveInventoryFolder);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->addBOOL("Stamp", TRUE);
+ }
+ msg->nextBlockFast(_PREHASH_InventoryData);
+ msg->addUUIDFast(_PREHASH_FolderID, cat->getUUID());
+ msg->addUUIDFast(_PREHASH_ParentID, trash_id);
+ if(msg->isSendFullFast(_PREHASH_InventoryData))
+ {
+ start_new_message = true;
+ gAgent.sendReliableMessage();
+ gInventory.accountForUpdate(update);
+ update.clear();
+ }
+ }
+ }
+ if(!start_new_message)
+ {
+ gAgent.sendReliableMessage();
+ gInventory.accountForUpdate(update);
+ }
+
+ // move everything.
+ std::vector<LLUUID>::iterator it = move_ids.begin();
+ std::vector<LLUUID>::iterator end = move_ids.end();
+ for(; it != end; ++it)
+ {
+ gInventory.moveObject((*it), trash_id);
+ }
+
+ // notify inventory observers.
+ model->notifyObservers();
+}
+
+BOOL LLInvFVBridge::isClipboardPasteable() const
+{
+ if (!LLInventoryClipboard::instance().hasContents() || !isAgentInventory())
+ {
+ return FALSE;
+ }
+ LLInventoryModel* model = getInventoryModel();
+ if (!model)
+ {
+ return FALSE;
+ }
+
+ const LLUUID &agent_id = gAgent.getID();
+
+ LLDynamicArray<LLUUID> objects;
+ LLInventoryClipboard::instance().retrieve(objects);
+ S32 count = objects.count();
+ for(S32 i = 0; i < count; i++)
+ {
+ const LLUUID &item_id = objects.get(i);
+
+ // Can't paste folders
+ const LLInventoryCategory *cat = model->getCategory(item_id);
+ if (cat)
+ {
+ return FALSE;
+ }
+
+ const LLInventoryItem *item = model->getItem(item_id);
+ if (item)
+ {
+ if (!item->getPermissions().allowCopyBy(agent_id))
+ {
+ return FALSE;
+ }
+ }
+ }
+ return TRUE;
+}
+
+BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
+{
+ if (!LLInventoryClipboard::instance().hasContents() || !isAgentInventory())
+ {
+ return FALSE;
+ }
+ const LLInventoryModel* model = getInventoryModel();
+ if (!model)
+ {
+ return FALSE;
+ }
+
+ LLDynamicArray<LLUUID> objects;
+ LLInventoryClipboard::instance().retrieve(objects);
+ S32 count = objects.count();
+ for(S32 i = 0; i < count; i++)
+ {
+ const LLInventoryItem *item = model->getItem(objects.get(i));
+ if (item)
+ {
+ if (!LLAssetType::lookupCanLink(item->getActualType()))
+ {
+ return FALSE;
+ }
+ }
+ const LLViewerInventoryCategory *cat = model->getCategory(objects.get(i));
+ if (cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+void hide_context_entries(LLMenuGL& menu,
+ const std::vector<std::string> &entries_to_show,
+ const std::vector<std::string> &disabled_entries)
+{
+ const LLView::child_list_t *list = menu.getChildList();
+
+ LLView::child_list_t::const_iterator itor;
+ for (itor = list->begin(); itor != list->end(); ++itor)
+ {
+ std::string name = (*itor)->getName();
+
+ // descend into split menus:
+ LLMenuItemBranchGL* branchp = dynamic_cast<LLMenuItemBranchGL*>(*itor);
+ if ((name == "More") && branchp)
+ {
+ hide_context_entries(*branchp->getBranch(), entries_to_show, disabled_entries);
+ }
+
+
+ bool found = false;
+ std::vector<std::string>::const_iterator itor2;
+ for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)
+ {
+ if (*itor2 == name)
+ {
+ found = true;
+ }
+ }
+ if (!found)
+ {
+ (*itor)->setVisible(FALSE);
+ }
+ else
+ {
+ for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2)
+ {
+ if (*itor2 == name)
+ {
+ (*itor)->setEnabled(FALSE);
+ }
+ }
+ }
+ }
+}
+
+// Helper for commonly-used entries
+void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
+ std::vector<std::string> &items,
+ std::vector<std::string> &disabled_items, U32 flags)
+{
+ items.push_back(std::string("Rename"));
+ if (!isItemRenameable() || (flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Rename"));
+ }
+
+ if (show_asset_id)
+ {
+ items.push_back(std::string("Copy Asset UUID"));
+ if ( (! ( isItemPermissive() || gAgent.isGodlike() ) )
+ || (flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Copy Asset UUID"));
+ }
+ }
+
+ items.push_back(std::string("Copy Separator"));
+
+ items.push_back(std::string("Copy"));
+ if (!isItemCopyable())
+ {
+ disabled_items.push_back(std::string("Copy"));
+ }
+
+ items.push_back(std::string("Paste"));
+ if (!isClipboardPasteable() || (flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Paste"));
+ }
+
+ items.push_back(std::string("Paste As Link"));
+ if (!isClipboardPasteableAsLink() || (flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Paste As Link"));
+ }
+ items.push_back(std::string("Paste Separator"));
+
+ items.push_back(std::string("Delete"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Delete"));
+ }
+
+ // If multiple items are selected, disable properties (if it exists).
+ if ((flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Properties"));
+ }
+}
+
+void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ lldebugs << "LLInvFVBridge::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+ if(isInTrash())
+ {
+ items.push_back(std::string("PurgeItem"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("PurgeItem"));
+ }
+ items.push_back(std::string("RestoreItem"));
+ }
+ else
+ {
+ items.push_back(std::string("Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// *TODO: remove this
+BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
+{
+ BOOL rv = FALSE;
+
+ const LLInventoryObject* obj = getInventoryObject();
+
+ if(obj)
+ {
+ *type = LLViewerAssetType::lookupDragAndDropType(obj->getActualType());
+ if(*type == DAD_NONE)
+ {
+ return FALSE;
+ }
+
+ *id = obj->getUUID();
+ //object_ids.put(obj->getUUID());
+
+ if (*type == DAD_CATEGORY)
+ {
+ gInventory.startBackgroundFetch(obj->getUUID());
+ }
+
+ rv = TRUE;
+ }
+
+ return rv;
+}
+
+LLInventoryObject* LLInvFVBridge::getInventoryObject() const
+{
+ LLInventoryObject* obj = NULL;
+ LLInventoryModel* model = getInventoryModel();
+ if(model)
+ {
+ obj = (LLInventoryObject*)model->getObject(mUUID);
+ }
+ return obj;
+}
+
+LLInventoryModel* LLInvFVBridge::getInventoryModel() const
+{
+ LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
+ return panel ? panel->getModel() : NULL;
+}
+
+BOOL LLInvFVBridge::isInTrash() const
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ return model->isObjectDescendentOf(mUUID, trash_id);
+}
+
+BOOL LLInvFVBridge::isLinkedObjectInTrash() const
+{
+ if (isInTrash()) return TRUE;
+
+ const LLInventoryObject *obj = getInventoryObject();
+ if (obj && obj->getIsLinkType())
+ {
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ return model->isObjectDescendentOf(obj->getLinkedUUID(), trash_id);
+ }
+ return FALSE;
+}
+
+BOOL LLInvFVBridge::isAgentInventory() const
+{
+ const LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ if(gInventory.getRootFolderID() == mUUID) return TRUE;
+ return model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID());
+}
+
+BOOL LLInvFVBridge::isCOFFolder() const
+{
+ const LLInventoryModel* model = getInventoryModel();
+ if(!model) return TRUE;
+ const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ if (mUUID == cof_id || model->isObjectDescendentOf(mUUID, cof_id))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL LLInvFVBridge::isItemPermissive() const
+{
+ return FALSE;
+}
+
+// static
+void LLInvFVBridge::changeItemParent(LLInventoryModel* model,
+ LLViewerInventoryItem* item,
+ const LLUUID& new_parent,
+ BOOL restamp)
+{
+ if(item->getParentUUID() != new_parent)
+ {
+ LLInventoryModel::update_list_t update;
+ LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1);
+ update.push_back(old_folder);
+ LLInventoryModel::LLCategoryUpdate new_folder(new_parent, 1);
+ update.push_back(new_folder);
+ gInventory.accountForUpdate(update);
+
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+ new_item->setParent(new_parent);
+ new_item->updateParentOnServer(restamp);
+ model->updateItem(new_item);
+ model->notifyObservers();
+ }
+}
+
+// static
+void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model,
+ LLViewerInventoryCategory* cat,
+ const LLUUID& new_parent,
+ BOOL restamp)
+{
+ if(cat->getParentUUID() != new_parent)
+ {
+ LLInventoryModel::update_list_t update;
+ LLInventoryModel::LLCategoryUpdate old_folder(cat->getParentUUID(), -1);
+ update.push_back(old_folder);
+ LLInventoryModel::LLCategoryUpdate new_folder(new_parent, 1);
+ update.push_back(new_folder);
+ gInventory.accountForUpdate(update);
+
+ LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat);
+ new_cat->setParent(new_parent);
+ new_cat->updateParentOnServer(restamp);
+ model->updateCategory(new_cat);
+ model->notifyObservers();
+ }
+}
+
+
+const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type)
+{
+ const std::string rv= LLInventoryType::lookup(inv_type);
+ if(rv.empty())
+ {
+ return std::string("<invalid>");
+ }
+ return rv;
+}
+
+LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
+ LLAssetType::EType actual_asset_type,
+ LLInventoryType::EType inv_type,
+ LLInventoryPanel* inventory,
+ const LLUUID& uuid,
+ U32 flags)
+{
+ LLInvFVBridge* new_listener = NULL;
+ switch(asset_type)
+ {
+ case LLAssetType::AT_TEXTURE:
+ if(!(inv_type == LLInventoryType::IT_TEXTURE || inv_type == LLInventoryType::IT_SNAPSHOT))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLTextureBridge(inventory, uuid, inv_type);
+ break;
+
+ case LLAssetType::AT_SOUND:
+ if(!(inv_type == LLInventoryType::IT_SOUND))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLSoundBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_LANDMARK:
+ if(!(inv_type == LLInventoryType::IT_LANDMARK))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLLandmarkBridge(inventory, uuid, flags);
+ break;
+
+ case LLAssetType::AT_CALLINGCARD:
+ if(!(inv_type == LLInventoryType::IT_CALLINGCARD))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLCallingCardBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_SCRIPT:
+ if(!(inv_type == LLInventoryType::IT_LSL))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLScriptBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_OBJECT:
+ if(!(inv_type == LLInventoryType::IT_OBJECT || inv_type == LLInventoryType::IT_ATTACHMENT))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLObjectBridge(inventory, uuid, inv_type, flags);
+ break;
+
+ case LLAssetType::AT_NOTECARD:
+ if(!(inv_type == LLInventoryType::IT_NOTECARD))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLNotecardBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_ANIMATION:
+ if(!(inv_type == LLInventoryType::IT_ANIMATION))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLAnimationBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_GESTURE:
+ if(!(inv_type == LLInventoryType::IT_GESTURE))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLGestureBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_LSL_TEXT:
+ if(!(inv_type == LLInventoryType::IT_LSL))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLLSLTextBridge(inventory, uuid);
+ break;
+
+ case LLAssetType::AT_CLOTHING:
+ case LLAssetType::AT_BODYPART:
+ if(!(inv_type == LLInventoryType::IT_WEARABLE))
+ {
+ llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+ }
+ new_listener = new LLWearableBridge(inventory, uuid, asset_type, inv_type, (EWearableType)flags);
+ break;
+ case LLAssetType::AT_CATEGORY:
+ if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
+ {
+ // Create a link folder handler instead.
+ new_listener = new LLLinkFolderBridge(inventory, uuid);
+ break;
+ }
+ new_listener = new LLFolderBridge(inventory, uuid);
+ break;
+ case LLAssetType::AT_LINK:
+ // Only should happen for broken links.
+ new_listener = new LLLinkItemBridge(inventory, uuid);
+ break;
+ case LLAssetType::AT_LINK_FOLDER:
+ // Only should happen for broken links.
+ new_listener = new LLLinkItemBridge(inventory, uuid);
+ break;
+ default:
+ llinfos << "Unhandled asset type (llassetstorage.h): "
+ << (S32)asset_type << llendl;
+ break;
+ }
+
+ if (new_listener)
+ {
+ new_listener->mInvType = inv_type;
+ }
+
+ return new_listener;
+}
+
+void LLInvFVBridge::purgeItem(LLInventoryModel *model, const LLUUID &uuid)
+{
+ LLInventoryCategory* cat = model->getCategory(uuid);
+ if (cat)
+ {
+ model->purgeDescendentsOf(uuid);
+ model->notifyObservers();
+ }
+ LLInventoryObject* obj = model->getObject(uuid);
+ if (obj)
+ {
+ model->purgeObject(uuid);
+ model->notifyObservers();
+ }
+}
+
+// +=================================================+
+// | InventoryFVBridgeBuilder |
+// +=================================================+
+LLInvFVBridge* LLInventoryFVBridgeBuilder::createBridge(LLAssetType::EType asset_type,
+ LLAssetType::EType actual_asset_type,
+ LLInventoryType::EType inv_type,
+ LLInventoryPanel* inventory,
+ const LLUUID& uuid,
+ U32 flags /* = 0x00 */) const
+{
+ return LLInvFVBridge::createBridge(asset_type,
+ actual_asset_type,
+ inv_type,
+ inventory,
+ uuid,
+ flags);
+}
+
+// +=================================================+
+// | LLItemBridge |
+// +=================================================+
+
+void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("goto" == action)
+ {
+ gotoItem(folder);
+ }
+ if ("open" == action)
+ {
+ openItem();
+ return;
+ }
+ else if ("properties" == action)
+ {
+ showProperties();
+ return;
+ }
+ else if ("purge" == action)
+ {
+ purgeItem(model, mUUID);
+ return;
+ }
+ else if ("restoreToWorld" == action)
+ {
+ restoreToWorld();
+ return;
+ }
+ else if ("restore" == action)
+ {
+ restoreItem();
+ return;
+ }
+ else if ("copy_uuid" == action)
+ {
+ // Single item only
+ LLInventoryItem* item = model->getItem(mUUID);
+ if(!item) return;
+ LLUUID asset_id = item->getAssetUUID();
+ std::string buffer;
+ asset_id.toString(buffer);
+
+ gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer));
+ return;
+ }
+ else if ("copy" == action)
+ {
+ copyToClipboard();
+ return;
+ }
+ else if ("paste" == action)
+ {
+ // Single item only
+ LLInventoryItem* itemp = model->getItem(mUUID);
+ if (!itemp) return;
+
+ LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
+ if (!folder_view_itemp) return;
+
+ folder_view_itemp->getListener()->pasteFromClipboard();
+ return;
+ }
+ else if ("paste_link" == action)
+ {
+ // Single item only
+ LLInventoryItem* itemp = model->getItem(mUUID);
+ if (!itemp) return;
+
+ LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
+ if (!folder_view_itemp) return;
+
+ folder_view_itemp->getListener()->pasteLinkFromClipboard();
+ return;
+ }
+}
+
+void LLItemBridge::selectItem()
+{
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)getItem();
+ if(item && !item->isComplete())
+ {
+ item->fetchFromServer();
+ }
+}
+
+void LLItemBridge::restoreItem()
+{
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)getItem();
+ if(item)
+ {
+ LLInventoryModel* model = getInventoryModel();
+ const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType()));
+ // do not restamp on restore.
+ LLInvFVBridge::changeItemParent(model, item, new_parent, FALSE);
+ }
+}
+
+void LLItemBridge::restoreToWorld()
+{
+ LLViewerInventoryItem* itemp = (LLViewerInventoryItem*)getItem();
+ if (itemp)
+ {
+ LLMessageSystem* msg = gMessageSystem;
+ msg->newMessage("RezRestoreToWorld");
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+
+ msg->nextBlockFast(_PREHASH_InventoryData);
+ itemp->packMessage(msg);
+ msg->sendReliable(gAgent.getRegion()->getHost());
+ }
+
+ //Similar functionality to the drag and drop rez logic
+ BOOL remove_from_inventory = FALSE;
+
+ //remove local inventory copy, sim will deal with permissions and removing the item
+ //from the actual inventory if its a no-copy etc
+ if(!itemp->getPermissions().allowCopyBy(gAgent.getID()))
+ {
+ remove_from_inventory = TRUE;
+ }
+
+ // Check if it's in the trash. (again similar to the normal rez logic)
+ const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
+ {
+ remove_from_inventory = TRUE;
+ }
+
+ if(remove_from_inventory)
+ {
+ gInventory.deleteObject(itemp->getUUID());
+ gInventory.notifyObservers();
+ }
+}
+
+void LLItemBridge::gotoItem(LLFolderView *folder)
+{
+ LLInventoryObject *obj = getInventoryObject();
+ if (obj && obj->getIsLinkType())
+ {
+ LLInventoryPanel* active_panel = LLFloaterInventory::getActiveInventory()->getPanel();
+ if (active_panel)
+ {
+ active_panel->setSelection(obj->getLinkedUUID(), TAKE_FOCUS_NO);
+ }
+ }
+}
+
+LLUIImagePtr LLItemBridge::getIcon() const
+{
+ return LLUI::getUIImage(ICON_NAME[OBJECT_ICON_NAME]);
+}
+
+PermissionMask LLItemBridge::getPermissionMask() const
+{
+ LLViewerInventoryItem* item = getItem();
+ PermissionMask perm_mask = 0;
+ if(item)
+ {
+ BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
+ BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID());
+ BOOL xfer = item->getPermissions().allowOperationBy(PERM_TRANSFER,
+ gAgent.getID());
+
+ if (copy) perm_mask |= PERM_COPY;
+ if (mod) perm_mask |= PERM_MODIFY;
+ if (xfer) perm_mask |= PERM_TRANSFER;
+
+ }
+ return perm_mask;
+}
+
+const std::string& LLItemBridge::getDisplayName() const
+{
+ if(mDisplayName.empty())
+ {
+ buildDisplayName(getItem(), mDisplayName);
+ }
+ return mDisplayName;
+}
+
+void LLItemBridge::buildDisplayName(LLInventoryItem* item, std::string& name)
+{
+ if(item)
+ {
+ name.assign(item->getName());
+ }
+ else
+ {
+ name.assign(LLStringUtil::null);
+ }
+}
+
+LLFontGL::StyleFlags LLItemBridge::getLabelStyle() const
+{
+ U8 font = LLFontGL::NORMAL;
+
+ if( gAgentWearables.isWearingItem( mUUID ) )
+ {
+ // llinfos << "BOLD" << llendl;
+ font |= LLFontGL::BOLD;
+ }
+
+ const LLViewerInventoryItem* item = getItem();
+ if (item && item->getIsLinkType())
+ {
+ font |= LLFontGL::ITALIC;
+ }
+ return (LLFontGL::StyleFlags)font;
+}
+
+std::string LLItemBridge::getLabelSuffix() const
+{
+ // String table is loaded before login screen and inventory items are
+ // loaded after login, so LLTrans should be ready.
+ static std::string NO_COPY =LLTrans::getString("no_copy");
+ static std::string NO_MOD = LLTrans::getString("no_modify");
+ static std::string NO_XFER = LLTrans::getString("no_transfer");
+ static std::string LINK = LLTrans::getString("link");
+ static std::string BROKEN_LINK = LLTrans::getString("broken_link");
+ std::string suffix;
+ LLInventoryItem* item = getItem();
+ if(item)
+ {
+ // it's a bit confusing to put nocopy/nomod/etc on calling cards.
+ if(LLAssetType::AT_CALLINGCARD != item->getType()
+ && item->getPermissions().getOwner() == gAgent.getID())
+ {
+ BOOL broken_link = LLAssetType::lookupIsLinkType(item->getType());
+ if (broken_link) return BROKEN_LINK;
+
+ BOOL link = item->getIsLinkType();
+ if (link) return LINK;
+
+ BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
+ if (!copy)
+ {
+ suffix += NO_COPY;
+ }
+ BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID());
+ if (!mod)
+ {
+ suffix += NO_MOD;
+ }
+ BOOL xfer = item->getPermissions().allowOperationBy(PERM_TRANSFER,
+ gAgent.getID());
+ if (!xfer)
+ {
+ suffix += NO_XFER;
+ }
+ }
+ }
+ return suffix;
+}
+
+time_t LLItemBridge::getCreationDate() const
+{
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ return item->getCreationDate();
+ }
+ return 0;
+}
+
+
+BOOL LLItemBridge::isItemRenameable() const
+{
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ // (For now) Don't allow calling card rename since that may confuse users as to
+ // what the calling card points to.
+ if (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD)
+ {
+ return FALSE;
+ }
+ return (item->getPermissions().allowModifyBy(gAgent.getID()));
+ }
+ return FALSE;
+}
+
+BOOL LLItemBridge::renameItem(const std::string& new_name)
+{
+ if(!isItemRenameable())
+ return FALSE;
+ LLPreview::dirty(mUUID);
+ LLInventoryModel* model = getInventoryModel();
+ if(!model)
+ return FALSE;
+ LLViewerInventoryItem* item = getItem();
+ if(item && (item->getName() != new_name))
+ {
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+ new_item->rename(new_name);
+ buildDisplayName(new_item, mDisplayName);
+ new_item->updateServer(FALSE);
+ model->updateItem(new_item);
+
+ model->notifyObservers();
+ }
+ // return FALSE because we either notified observers (& therefore
+ // rebuilt) or we didn't update.
+ return FALSE;
+}
+
+
+BOOL LLItemBridge::removeItem()
+{
+ if(!isItemRemovable())
+ {
+ return FALSE;
+ }
+ // move it to the trash
+ LLPreview::hide(mUUID, TRUE);
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ LLViewerInventoryItem* item = getItem();
+
+ // if item is not already in trash
+ if(item && !model->isObjectDescendentOf(mUUID, trash_id))
+ {
+ // move to trash, and restamp
+ LLInvFVBridge::changeItemParent(model, item, trash_id, TRUE);
+ // delete was successful
+ return TRUE;
+ }
+ else
+ {
+ // tried to delete already item in trash (should purge?)
+ return FALSE;
+ }
+}
+
+BOOL LLItemBridge::isItemCopyable() const
+{
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ // can't copy worn objects. DEV-15183
+ LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
+ if( !avatarp )
+ {
+ return FALSE;
+ }
+
+ if(avatarp->isWearingAttachment(mUUID))
+ {
+ return FALSE;
+ }
+
+ // All items can be copied, not all can be pasted.
+ // The only time an item can't be copied is if it's a link
+ // return (item->getPermissions().allowCopyBy(gAgent.getID()));
+ if (item->getIsLinkType())
+ {
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+BOOL LLItemBridge::copyToClipboard() const
+{
+ if(isItemCopyable())
+ {
+ LLInventoryClipboard::instance().add(mUUID);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+LLViewerInventoryItem* LLItemBridge::getItem() const
+{
+ LLViewerInventoryItem* item = NULL;
+ LLInventoryModel* model = getInventoryModel();
+ if(model)
+ {
+ item = (LLViewerInventoryItem*)model->getItem(mUUID);
+ }
+ return item;
+}
+
+BOOL LLItemBridge::isItemPermissive() const
+{
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ U32 mask = item->getPermissions().getMaskBase();
+ if((mask & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+// +=================================================+
+// | LLFolderBridge |
+// +=================================================+
+
+LLFolderBridge* LLFolderBridge::sSelf=NULL;
+
+// Can be moved to another folder
+BOOL LLFolderBridge::isItemMovable() const
+{
+ LLInventoryObject* obj = getInventoryObject();
+ if(obj)
+ {
+ return (!LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)obj)->getPreferredType()));
+ }
+ return FALSE;
+}
+
+void LLFolderBridge::selectItem()
+{
+}
+
+
+// Can be destroyed (or moved to trash)
+BOOL LLFolderBridge::isItemRemovable()
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model)
+ {
+ return FALSE;
+ }
+
+ if(!model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID()))
+ {
+ return FALSE;
+ }
+
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if( !avatar )
+ {
+ return FALSE;
+ }
+
+ LLInventoryCategory* category = model->getCategory(mUUID);
+ if( !category )
+ {
+ return FALSE;
+ }
+
+ if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+ {
+ return FALSE;
+ }
+
+ LLInventoryModel::cat_array_t descendent_categories;
+ LLInventoryModel::item_array_t descendent_items;
+ gInventory.collectDescendents( mUUID, descendent_categories, descendent_items, FALSE );
+
+ S32 i;
+ for( i = 0; i < descendent_categories.count(); i++ )
+ {
+ LLInventoryCategory* category = descendent_categories[i];
+ if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+ {
+ return FALSE;
+ }
+ }
+
+ for( i = 0; i < descendent_items.count(); i++ )
+ {
+ LLInventoryItem* item = descendent_items[i];
+ if( (item->getType() == LLAssetType::AT_CLOTHING) ||
+ (item->getType() == LLAssetType::AT_BODYPART) )
+ {
+ if(gAgentWearables.isWearingItem(item->getUUID()))
+ {
+ return FALSE;
+ }
+ }
+ else
+ if( item->getType() == LLAssetType::AT_OBJECT )
+ {
+ if(avatar->isWearingAttachment(item->getUUID()))
+ {
+ return FALSE;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+BOOL LLFolderBridge::isUpToDate() const
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
+ if( !category )
+ {
+ return FALSE;
+ }
+
+ return category->getVersion() != LLViewerInventoryCategory::VERSION_UNKNOWN;
+}
+
+BOOL LLFolderBridge::isItemCopyable() const
+{
+ return TRUE;
+}
+
+BOOL LLFolderBridge::copyToClipboard() const
+{
+ if(isItemCopyable())
+ {
+ LLInventoryClipboard::instance().add(mUUID);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL LLFolderBridge::isClipboardPasteable() const
+{
+ if ( ! LLInvFVBridge::isClipboardPasteable() )
+ return FALSE;
+
+ // Don't allow pasting duplicates to the Calling Card/Friends subfolders, see bug EXT-1599
+ if ( LLFriendCardsManager::instance().isCategoryInFriendFolder( getCategory() ) )
+ {
+ LLInventoryModel* model = getInventoryModel();
+ if ( !model )
+ {
+ return FALSE;
+ }
+
+ LLDynamicArray<LLUUID> objects;
+ LLInventoryClipboard::instance().retrieve(objects);
+ const LLViewerInventoryCategory *current_cat = getCategory();
+
+ // Search for the direct descendent of current Friends subfolder among all pasted items,
+ // and return false if is found.
+ for(S32 i = objects.count() - 1; i >= 0; --i)
+ {
+ const LLUUID &obj_id = objects.get(i);
+ if ( LLFriendCardsManager::instance().isObjDirectDescendentOfCategory(model->getObject(obj_id), current_cat) )
+ {
+ return FALSE;
+ }
+ }
+
+ }
+ return TRUE;
+}
+
+BOOL LLFolderBridge::isClipboardPasteableAsLink() const
+{
+ // Check normal paste-as-link permissions
+ if (!LLInvFVBridge::isClipboardPasteableAsLink())
+ {
+ return FALSE;
+ }
+
+ const LLInventoryModel* model = getInventoryModel();
+ if (!model)
+ {
+ return FALSE;
+ }
+
+ const LLViewerInventoryCategory *current_cat = getCategory();
+ if (current_cat)
+ {
+ const BOOL is_in_friend_folder = LLFriendCardsManager::instance().isCategoryInFriendFolder( current_cat );
+ const LLUUID &current_cat_id = current_cat->getUUID();
+ LLDynamicArray<LLUUID> objects;
+ LLInventoryClipboard::instance().retrieve(objects);
+ S32 count = objects.count();
+ for(S32 i = 0; i < count; i++)
+ {
+ const LLUUID &obj_id = objects.get(i);
+ const LLInventoryCategory *cat = model->getCategory(obj_id);
+ if (cat)
+ {
+ const LLUUID &cat_id = cat->getUUID();
+ // Don't allow recursive pasting
+ if ((cat_id == current_cat_id) ||
+ model->isObjectDescendentOf(current_cat_id, cat_id))
+ {
+ return FALSE;
+ }
+ }
+ // Don't allow pasting duplicates to the Calling Card/Friends subfolders, see bug EXT-1599
+ if ( is_in_friend_folder )
+ {
+ // If object is direct descendent of current Friends subfolder than return false.
+ // Note: We can't use 'const LLInventoryCategory *cat', because it may be null
+ // in case type of obj_id is LLInventoryItem.
+ if ( LLFriendCardsManager::instance().isObjDirectDescendentOfCategory(model->getObject(obj_id), current_cat) )
+ {
+ return FALSE;
+ }
+ }
+ }
+ }
+ return TRUE;
+
+}
+
+BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
+ BOOL drop)
+{
+ // This should never happen, but if an inventory item is incorrectly parented,
+ // the UI will get confused and pass in a NULL.
+ if(!inv_cat) return FALSE;
+
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if(!avatar) return FALSE;
+
+ // cannot drag categories into library
+ if(!isAgentInventory())
+ {
+ return FALSE;
+ }
+
+ // check to make sure source is agent inventory, and is represented there.
+ LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();
+ BOOL is_agent_inventory = (model->getCategory(inv_cat->getUUID()) != NULL)
+ && (LLToolDragAndDrop::SOURCE_AGENT == source);
+
+ BOOL accept = FALSE;
+ S32 i;
+ LLInventoryModel::cat_array_t descendent_categories;
+ LLInventoryModel::item_array_t descendent_items;
+ if(is_agent_inventory)
+ {
+ const LLUUID& cat_id = inv_cat->getUUID();
+
+ // Is the destination the trash?
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ BOOL move_is_into_trash = (mUUID == trash_id)
+ || model->isObjectDescendentOf(mUUID, trash_id);
+ BOOL is_movable = (!LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()));
+ const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
+ BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
+ if (move_is_into_current_outfit || move_is_into_outfit)
+ {
+ // BAP - restrictions?
+ is_movable = true;
+ }
+
+ if (mUUID == gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE))
+ {
+ is_movable = FALSE; // It's generally movable but not into Favorites folder. EXT-1604
+ }
+
+ if( is_movable )
+ {
+ gInventory.collectDescendents( cat_id, descendent_categories, descendent_items, FALSE );
+
+ for( i = 0; i < descendent_categories.count(); i++ )
+ {
+ LLInventoryCategory* category = descendent_categories[i];
+ if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+ {
+ // ...can't move "special folders" like Textures
+ is_movable = FALSE;
+ break;
+ }
+ }
+
+ if( is_movable )
+ {
+ if( move_is_into_trash )
+ {
+ for( i = 0; i < descendent_items.count(); i++ )
+ {
+ LLInventoryItem* item = descendent_items[i];
+ if( (item->getType() == LLAssetType::AT_CLOTHING) ||
+ (item->getType() == LLAssetType::AT_BODYPART) )
+ {
+ if( gAgentWearables.isWearingItem( item->getUUID() ) )
+ {
+ is_movable = FALSE; // It's generally movable, but not into the trash!
+ break;
+ }
+ }
+ else
+ if( item->getType() == LLAssetType::AT_OBJECT )
+ {
+ if( avatar->isWearingAttachment( item->getUUID() ) )
+ {
+ is_movable = FALSE; // It's generally movable, but not into the trash!
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ accept = is_movable
+ && (mUUID != cat_id) // Can't move a folder into itself
+ && (mUUID != inv_cat->getParentUUID()) // Avoid moves that would change nothing
+ && !(model->isObjectDescendentOf(mUUID, cat_id)); // Avoid circularity
+ if(accept && drop)
+ {
+ // Look for any gestures and deactivate them
+ if (move_is_into_trash)
+ {
+ for (i = 0; i < descendent_items.count(); i++)
+ {
+ LLInventoryItem* item = descendent_items[i];
+ if (item->getType() == LLAssetType::AT_GESTURE
+ && LLGestureManager::instance().isGestureActive(item->getUUID()))
+ {
+ LLGestureManager::instance().deactivateGesture(item->getUUID());
+ }
+ }
+ }
+ // if target is an outfit or current outfit folder we use link
+ if (move_is_into_current_outfit || move_is_into_outfit)
+ {
+ if (inv_cat->getPreferredType() == LLFolderType::FT_NONE)
+ {
+ if (move_is_into_current_outfit)
+ {
+ // traverse category and add all contents to currently worn.
+ BOOL append = true;
+ LLAppearanceManager::instance().wearInventoryCategory(inv_cat, false, append);
+ }
+ else
+ {
+ // Recursively create links in target outfit.
+ LLInventoryModel::cat_array_t cats;
+ LLInventoryModel::item_array_t items;
+ gInventory.collectDescendents(inv_cat->getUUID(), cats, items, LLInventoryModel::EXCLUDE_TRASH);
+ LLAppearanceManager::instance().linkAll(mUUID,items,NULL);
+ }
+ }
+ else
+ {
+#if SUPPORT_ENSEMBLES
+ // BAP - should skip if dup.
+ if (move_is_into_current_outfit)
+ {
+ LLAppearanceManager::instance().addEnsembleLink(inv_cat);
+ }
+ else
+ {
+ LLPointer<LLInventoryCallback> cb = NULL;
+ link_inventory_item(
+ gAgent.getID(),
+ inv_cat->getUUID(),
+ mUUID,
+ inv_cat->getName(),
+ LLAssetType::AT_LINK_FOLDER,
+ cb);
+ }
+#endif
+ }
+ }
+ else
+ {
+
+ // Reparent the folder and restamp children if it's moving
+ // into trash.
+ LLInvFVBridge::changeCategoryParent(
+ model,
+ (LLViewerInventoryCategory*)inv_cat,
+ mUUID,
+ move_is_into_trash);
+ }
+ }
+ }
+ else if(LLToolDragAndDrop::SOURCE_WORLD == source)
+ {
+ // content category has same ID as object itself
+ LLUUID object_id = inv_cat->getUUID();
+ LLUUID category_id = mUUID;
+ accept = move_inv_category_world_to_agent(object_id, category_id, drop);
+ }
+ return accept;
+}
+
+void warn_move_inventory(LLViewerObject* object, LLMoveInv* move_inv)
+{
+ const char* dialog = NULL;
+ if (object->flagScripted())
+ {
+ dialog = "MoveInventoryFromScriptedObject";
+ }
+ else
+ {
+ dialog = "MoveInventoryFromObject";
+ }
+ LLNotifications::instance().add(dialog, LLSD(), LLSD(), boost::bind(move_task_inventory_callback, _1, _2, move_inv));
+}
+
+// Move/copy all inventory items from the Contents folder of an in-world
+// object to the agent's inventory, inside a given category.
+BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
+ const LLUUID& category_id,
+ BOOL drop,
+ void (*callback)(S32, void*),
+ void* user_data)
+{
+ // Make sure the object exists. If we allowed dragging from
+ // anonymous objects, it would be possible to bypass
+ // permissions.
+ // content category has same ID as object itself
+ LLViewerObject* object = gObjectList.findObject(object_id);
+ if(!object)
+ {
+ llinfos << "Object not found for drop." << llendl;
+ return FALSE;
+ }
+
+ // this folder is coming from an object, as there is only one folder in an object, the root,
+ // we need to collect the entire contents and handle them as a group
+ InventoryObjectList inventory_objects;
+ object->getInventoryContents(inventory_objects);
+
+ if (inventory_objects.empty())
+ {
+ llinfos << "Object contents not found for drop." << llendl;
+ return FALSE;
+ }
+
+ BOOL accept = TRUE;
+ BOOL is_move = FALSE;
+
+ // coming from a task. Need to figure out if the person can
+ // move/copy this item.
+ InventoryObjectList::iterator it = inventory_objects.begin();
+ InventoryObjectList::iterator end = inventory_objects.end();
+ for ( ; it != end; ++it)
+ {
+ // coming from a task. Need to figure out if the person can
+ // move/copy this item.
+ LLPermissions perm(((LLInventoryItem*)((LLInventoryObject*)(*it)))->getPermissions());
+ if((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())
+ && perm.allowTransferTo(gAgent.getID())))
+// || gAgent.isGodlike())
+ {
+ accept = TRUE;
+ }
+ else if(object->permYouOwner())
+ {
+ // If the object cannot be copied, but the object the
+ // inventory is owned by the agent, then the item can be
+ // moved from the task to agent inventory.
+ is_move = TRUE;
+ accept = TRUE;
+ }
+ else
+ {
+ accept = FALSE;
+ break;
+ }
+ }
+
+ if(drop && accept)
+ {
+ it = inventory_objects.begin();
+ InventoryObjectList::iterator first_it = inventory_objects.begin();
+ LLMoveInv* move_inv = new LLMoveInv;
+ move_inv->mObjectID = object_id;
+ move_inv->mCategoryID = category_id;
+ move_inv->mCallback = callback;
+ move_inv->mUserData = user_data;
+
+ for ( ; it != end; ++it)
+ {
+ two_uuids_t two(category_id, (*it)->getUUID());
+ move_inv->mMoveList.push_back(two);
+ }
+
+ if(is_move)
+ {
+ // Callback called from within here.
+ warn_move_inventory(object, move_inv);
+ }
+ else
+ {
+ LLNotification::Params params("MoveInventoryFromObject");
+ params.functor.function(boost::bind(move_task_inventory_callback, _1, _2, move_inv));
+ LLNotifications::instance().forceResponse(params, 0);
+ }
+ }
+ return accept;
+}
+
+bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
+ LLInventoryItem* item)
+{
+ // Valid COF items are:
+ // - links to wearables (body parts or clothing)
+ // - links to attachments
+ // - links to gestures
+ // - links to ensemble folders
+ LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem(); // BAP - safe?
+ if (linked_item)
+ {
+ LLAssetType::EType type = linked_item->getType();
+ return (type == LLAssetType::AT_CLOTHING ||
+ type == LLAssetType::AT_BODYPART ||
+ type == LLAssetType::AT_GESTURE ||
+ type == LLAssetType::AT_OBJECT);
+ }
+ else
+ {
+ LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP - safe?
+ // BAP remove AT_NONE support after ensembles are fully working?
+ return (linked_category &&
+ ((linked_category->getPreferredType() == LLFolderType::FT_NONE) ||
+ (LLFolderType::lookupIsEnsembleType(linked_category->getPreferredType()))));
+ }
+}
+
+
+bool LLFindWearables::operator()(LLInventoryCategory* cat,
+ LLInventoryItem* item)
+{
+ if(item)
+ {
+ if((item->getType() == LLAssetType::AT_CLOTHING)
+ || (item->getType() == LLAssetType::AT_BODYPART))
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+
+
+//Used by LLFolderBridge as callback for directory recursion.
+class LLRightClickInventoryFetchObserver : public LLInventoryFetchObserver
+{
+public:
+ LLRightClickInventoryFetchObserver() :
+ mCopyItems(false)
+ { };
+ LLRightClickInventoryFetchObserver(const LLUUID& cat_id, bool copy_items) :
+ mCatID(cat_id),
+ mCopyItems(copy_items)
+ { };
+ virtual void done()
+ {
+ // we've downloaded all the items, so repaint the dialog
+ LLFolderBridge::staticFolderOptionsMenu();
+
+ gInventory.removeObserver(this);
+ delete this;
+ }
+
+
+protected:
+ LLUUID mCatID;
+ bool mCopyItems;
+
+};
+
+//Used by LLFolderBridge as callback for directory recursion.
+class LLRightClickInventoryFetchDescendentsObserver : public LLInventoryFetchDescendentsObserver
+{
+public:
+ LLRightClickInventoryFetchDescendentsObserver(bool copy_items) : mCopyItems(copy_items) {}
+ ~LLRightClickInventoryFetchDescendentsObserver() {}
+ virtual void done();
+protected:
+ bool mCopyItems;
+};
+
+void LLRightClickInventoryFetchDescendentsObserver::done()
+{
+ // Avoid passing a NULL-ref as mCompleteFolders.front() down to
+ // gInventory.collectDescendents()
+ if( mCompleteFolders.empty() )
+ {
+ llwarns << "LLRightClickInventoryFetchDescendentsObserver::done with empty mCompleteFolders" << llendl;
+ dec_busy_count();
+ gInventory.removeObserver(this);
+ delete this;
+ return;
+ }
+
+ // What we do here is get the complete information on the items in
+ // the library, and set up an observer that will wait for that to
+ // happen.
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ gInventory.collectDescendents(mCompleteFolders.front(),
+ cat_array,
+ item_array,
+ LLInventoryModel::EXCLUDE_TRASH);
+ S32 count = item_array.count();
+#if 0 // HACK/TODO: Why?
+ // This early causes a giant menu to get produced, and doesn't seem to be needed.
+ if(!count)
+ {
+ llwarns << "Nothing fetched in category " << mCompleteFolders.front()
+ << llendl;
+ dec_busy_count();
+ gInventory.removeObserver(this);
+ delete this;
+ return;
+ }
+#endif
+
+ LLRightClickInventoryFetchObserver* outfit;
+ outfit = new LLRightClickInventoryFetchObserver(mCompleteFolders.front(), mCopyItems);
+ LLInventoryFetchObserver::item_ref_t ids;
+ for(S32 i = 0; i < count; ++i)
+ {
+ ids.push_back(item_array.get(i)->getUUID());
+ }
+
+ // clean up, and remove this as an observer since the call to the
+ // outfit could notify observers and throw us into an infinite
+ // loop.
+ dec_busy_count();
+ gInventory.removeObserver(this);
+ delete this;
+
+ // increment busy count and either tell the inventory to check &
+ // call done, or add this object to the inventory for observation.
+ inc_busy_count();
+
+ // do the fetch
+ outfit->fetchItems(ids);
+ outfit->done(); //Not interested in waiting and this will be right 99% of the time.
+//Uncomment the following code for laggy Inventory UI.
+/* if(outfit->isEverythingComplete())
+ {
+ // everything is already here - call done.
+ outfit->done();
+ }
+ else
+ {
+ // it's all on it's way - add an observer, and the inventory
+ // will call done for us when everything is here.
+ gInventory.addObserver(outfit);
+ }*/
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLInventoryWearObserver
+//
+// Observer for "copy and wear" operation to support knowing
+// when the all of the contents have been added to inventory.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLInventoryCopyAndWearObserver : public LLInventoryObserver
+{
+public:
+ LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
+ virtual ~LLInventoryCopyAndWearObserver() {}
+ virtual void changed(U32 mask);
+
+protected:
+ LLUUID mCatID;
+ int mContentsCount;
+ BOOL mFolderAdded;
+};
+
+
+
+void LLInventoryCopyAndWearObserver::changed(U32 mask)
+{
+ if((mask & (LLInventoryObserver::ADD)) != 0)
+ {
+ if (!mFolderAdded)
+ {
+ 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)
+ {
+ if ((*id_it) == mCatID)
+ {
+ mFolderAdded = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (mFolderAdded)
+ {
+ LLViewerInventoryCategory* category = gInventory.getCategory(mCatID);
+
+ if (NULL == category)
+ {
+ llwarns << "gInventory.getCategory(" << mCatID
+ << ") was NULL" << llendl;
+ }
+ else
+ {
+ if (category->getDescendentCount() ==
+ mContentsCount)
+ {
+ gInventory.removeObserver(this);
+ LLAppearanceManager::instance().wearInventoryCategory(category, FALSE, TRUE);
+ delete this;
+ }
+ }
+ }
+
+ }
+}
+
+
+
+void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("open" == action)
+ {
+ openItem();
+ return;
+ }
+ else if ("paste" == action)
+ {
+ pasteFromClipboard();
+ return;
+ }
+ else if ("paste_link" == action)
+ {
+ pasteLinkFromClipboard();
+ return;
+ }
+ else if ("properties" == action)
+ {
+ showProperties();
+ return;
+ }
+ else if ("replaceoutfit" == action)
+ {
+ modifyOutfit(FALSE);
+ return;
+ }
+#if SUPPORT_ENSEMBLES
+ else if ("wearasensemble" == action)
+ {
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+ LLViewerInventoryCategory* cat = getCategory();
+ if(!cat) return;
+ LLAppearanceManager::instance().addEnsembleLink(cat,true);
+ return;
+ }
+#endif
+ else if ("addtooutfit" == action)
+ {
+ modifyOutfit(TRUE);
+ return;
+ }
+ else if ("copy" == action)
+ {
+ copyToClipboard();
+ return;
+ }
+ else if ("removefromoutfit" == action)
+ {
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+ LLViewerInventoryCategory* cat = getCategory();
+ if(!cat) return;
+
+ remove_inventory_category_from_avatar ( cat );
+ return;
+ }
+ else if ("purge" == action)
+ {
+ purgeItem(model, mUUID);
+ return;
+ }
+ else if ("restore" == action)
+ {
+ restoreItem();
+ return;
+ }
+}
+
+void LLFolderBridge::openItem()
+{
+ lldebugs << "LLFolderBridge::openItem()" << llendl;
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+ if(mUUID.isNull()) return;
+ bool fetching_inventory = model->fetchDescendentsOf(mUUID);
+ // Only change folder type if we have the folder contents.
+ if (!fetching_inventory)
+ {
+ // Disabling this for now, it's causing crash when new items are added to folders
+ // since folder type may change before new item item has finished processing.
+ // determineFolderType();
+ }
+}
+
+void LLFolderBridge::closeItem()
+{
+ determineFolderType();
+}
+
+void LLFolderBridge::determineFolderType()
+{
+ if (isUpToDate())
+ {
+ LLInventoryModel* model = getInventoryModel();
+ LLViewerInventoryCategory* category = model->getCategory(mUUID);
+ category->determineFolderType();
+ }
+}
+
+BOOL LLFolderBridge::isItemRenameable() const
+{
+ LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)getCategory();
+ if(cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType())
+ && (cat->getOwnerID() == gAgent.getID()))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void LLFolderBridge::restoreItem()
+{
+ LLViewerInventoryCategory* cat;
+ cat = (LLViewerInventoryCategory*)getCategory();
+ if(cat)
+ {
+ LLInventoryModel* model = getInventoryModel();
+ const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(cat->getType()));
+ // do not restamp children on restore
+ LLInvFVBridge::changeCategoryParent(model, cat, new_parent, FALSE);
+ }
+}
+
+LLFolderType::EType LLFolderBridge::getPreferredType() const
+{
+ LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ LLViewerInventoryCategory* cat = getCategory();
+ if(cat)
+ {
+ preferred_type = cat->getPreferredType();
+ }
+
+ return preferred_type;
+}
+
+// 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);
+}
+
+LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type)
+{
+ // we only have one folder image now
+ return LLUI::getUIImage("Inv_FolderClosed");
+}
+
+BOOL LLFolderBridge::renameItem(const std::string& new_name)
+{
+ if(!isItemRenameable())
+ return FALSE;
+ LLInventoryModel* model = getInventoryModel();
+ if(!model)
+ return FALSE;
+ LLViewerInventoryCategory* cat = getCategory();
+ if(cat && (cat->getName() != new_name))
+ {
+ LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat);
+ new_cat->rename(new_name);
+ new_cat->updateServer(FALSE);
+ model->updateCategory(new_cat);
+
+ model->notifyObservers();
+ }
+ // return FALSE because we either notified observers (& therefore
+ // rebuilt) or we didn't update.
+ return FALSE;
+}
+
+BOOL LLFolderBridge::removeItem()
+{
+ if(!isItemRemovable())
+ {
+ return FALSE;
+ }
+ // move it to the trash
+ LLPreview::hide(mUUID);
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+
+ // Look for any gestures and deactivate them
+ LLInventoryModel::cat_array_t descendent_categories;
+ LLInventoryModel::item_array_t descendent_items;
+ gInventory.collectDescendents( mUUID, descendent_categories, descendent_items, FALSE );
+
+ S32 i;
+ for (i = 0; i < descendent_items.count(); i++)
+ {
+ LLInventoryItem* item = descendent_items[i];
+ if (item->getType() == LLAssetType::AT_GESTURE
+ && LLGestureManager::instance().isGestureActive(item->getUUID()))
+ {
+ LLGestureManager::instance().deactivateGesture(item->getUUID());
+ }
+ }
+
+ // go ahead and do the normal remove if no 'last calling
+ // cards' are being removed.
+ LLViewerInventoryCategory* cat = getCategory();
+ if(cat)
+ {
+ LLInvFVBridge::changeCategoryParent(model, cat, trash_id, TRUE);
+ }
+
+ return TRUE;
+}
+
+void LLFolderBridge::pasteFromClipboard()
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(model && isClipboardPasteable())
+ {
+ LLInventoryItem* item = NULL;
+ LLDynamicArray<LLUUID> objects;
+ LLInventoryClipboard::instance().retrieve(objects);
+ S32 count = objects.count();
+ const LLUUID parent_id(mUUID);
+ for(S32 i = 0; i < count; i++)
+ {
+ item = model->getItem(objects.get(i));
+ if (item)
+ {
+ if(LLInventoryClipboard::instance().isCutMode())
+ {
+ // move_inventory_item() is not enough,
+ //we have to update inventory locally too
+ changeItemParent(model, dynamic_cast<LLViewerInventoryItem*>(item), parent_id, FALSE);
+ }
+ else
+ {
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ parent_id,
+ std::string(),
+ LLPointer<LLInventoryCallback>(NULL));
+ }
+ }
+ }
+ }
+}
+
+void LLFolderBridge::pasteLinkFromClipboard()
+{
+ const LLInventoryModel* model = getInventoryModel();
+ if(model)
+ {
+ LLDynamicArray<LLUUID> objects;
+ LLInventoryClipboard::instance().retrieve(objects);
+ S32 count = objects.count();
+ LLUUID parent_id(mUUID);
+ for(S32 i = 0; i < count; i++)
+ {
+ const LLUUID &object_id = objects.get(i);
+#if SUPPORT_ENSEMBLES
+ if (LLInventoryCategory *cat = model->getCategory(object_id))
+ {
+ link_inventory_item(
+ gAgent.getID(),
+ cat->getUUID(),
+ parent_id,
+ cat->getName(),
+ LLAssetType::AT_LINK_FOLDER,
+ LLPointer<LLInventoryCallback>(NULL));
+ }
+ else
+#endif
+ if (LLInventoryItem *item = model->getItem(object_id))
+ {
+ link_inventory_item(
+ gAgent.getID(),
+ item->getLinkedUUID(),
+ parent_id,
+ item->getName(),
+ LLAssetType::AT_LINK,
+ LLPointer<LLInventoryCallback>(NULL));
+ }
+ }
+ }
+}
+
+void LLFolderBridge::staticFolderOptionsMenu()
+{
+ if (!sSelf) return;
+ sSelf->folderOptionsMenu();
+}
+
+void LLFolderBridge::folderOptionsMenu()
+{
+ std::vector<std::string> disabled_items;
+
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+
+ const LLInventoryCategory* category = model->getCategory(mUUID);
+ LLFolderType::EType type = category->getPreferredType();
+ const bool is_default_folder = category && LLFolderType::lookupIsProtectedType(type);
+ // BAP change once we're no longer treating regular categories as ensembles.
+ const bool is_ensemble = category && (type == LLFolderType::FT_NONE ||
+ LLFolderType::lookupIsEnsembleType(type));
+
+ // calling card related functionality for folders.
+
+ // Only enable calling-card related options for non-default folders.
+ if (!is_default_folder)
+ {
+ LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD);
+ if (mCallingCards || checkFolderForContentsOfType(model, is_callingcard))
+ {
+ mItems.push_back(std::string("Calling Card Separator"));
+ mItems.push_back(std::string("Conference Chat Folder"));
+ mItems.push_back(std::string("IM All Contacts In Folder"));
+ }
+ }
+
+ // wearables related functionality for folders.
+ //is_wearable
+ LLFindWearables is_wearable;
+ LLIsType is_object( LLAssetType::AT_OBJECT );
+ LLIsType is_gesture( LLAssetType::AT_GESTURE );
+
+ if (mWearables ||
+ checkFolderForContentsOfType(model, is_wearable) ||
+ checkFolderForContentsOfType(model, is_object) ||
+ checkFolderForContentsOfType(model, is_gesture) )
+ {
+ mItems.push_back(std::string("Folder Wearables Separator"));
+
+ // Only enable add/replace outfit for non-default folders.
+ if (!is_default_folder)
+ {
+ mItems.push_back(std::string("Add To Outfit"));
+ mItems.push_back(std::string("Replace Outfit"));
+ }
+ if (is_ensemble)
+ {
+ mItems.push_back(std::string("Wear As Ensemble"));
+ }
+ mItems.push_back(std::string("Remove From Outfit"));
+ }
+ hide_context_entries(*mMenu, mItems, disabled_items);
+}
+
+BOOL LLFolderBridge::checkFolderForContentsOfType(LLInventoryModel* model, LLInventoryCollectFunctor& is_type)
+{
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ model->collectDescendentsIf(mUUID,
+ cat_array,
+ item_array,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_type);
+ return ((item_array.count() > 0) ? TRUE : FALSE );
+}
+
+// Flags unused
+void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ mItems.clear();
+ mDisabledItems.clear();
+
+ lldebugs << "LLFolderBridge::buildContextMenu()" << llendl;
+// std::vector<std::string> disabled_items;
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+
+ mItems.clear(); //adding code to clear out member Items (which means Items should not have other data here at this point)
+ mDisabledItems.clear(); //adding code to clear out disabled members from previous
+ if (lost_and_found_id == mUUID)
+ {
+ // This is the lost+found folder.
+ mItems.push_back(std::string("Empty Lost And Found"));
+ }
+
+ if(trash_id == mUUID)
+ {
+ // This is the trash.
+ mItems.push_back(std::string("Empty Trash"));
+ }
+ else if(model->isObjectDescendentOf(mUUID, trash_id))
+ {
+ // This is a folder in the trash.
+ mItems.clear(); // clear any items that used to exist
+ mItems.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ mDisabledItems.push_back(std::string("Purge Item"));
+ }
+
+ mItems.push_back(std::string("Restore Item"));
+ }
+ else if(isAgentInventory()) // do not allow creating in library
+ {
+ LLViewerInventoryCategory *cat = getCategory();
+ // BAP removed protected check to re-enable standard ops in untyped folders.
+ // Not sure what the right thing is to do here.
+ if (!isCOFFolder() && cat /*&&
+ LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType())*/)
+ {
+ // Do not allow to create 2-level subfolder in the Calling Card/Friends folder. EXT-694.
+ if (!LLFriendCardsManager::instance().isCategoryInFriendFolder(cat))
+ mItems.push_back(std::string("New Folder"));
+ mItems.push_back(std::string("New Script"));
+ mItems.push_back(std::string("New Note"));
+ mItems.push_back(std::string("New Gesture"));
+ mItems.push_back(std::string("New Clothes"));
+ mItems.push_back(std::string("New Body Parts"));
+ mItems.push_back(std::string("Change Type"));
+
+ LLViewerInventoryCategory *cat = getCategory();
+ if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
+ {
+ mDisabledItems.push_back(std::string("Change Type"));
+ }
+
+ getClipboardEntries(false, mItems, mDisabledItems, flags);
+ }
+ else
+ {
+ // Want some but not all of the items from getClipboardEntries for outfits.
+ if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT)
+ {
+ mItems.push_back(std::string("Rename"));
+ mItems.push_back(std::string("Delete"));
+ }
+ }
+
+ //Added by spatters to force inventory pull on right-click to display folder options correctly. 07-17-06
+ mCallingCards = mWearables = FALSE;
+
+ LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD);
+ if (checkFolderForContentsOfType(model, is_callingcard))
+ {
+ mCallingCards=TRUE;
+ }
+
+ LLFindWearables is_wearable;
+ 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) )
+ {
+ mWearables=TRUE;
+ }
+
+ mMenu = &menu;
+ sSelf = this;
+ LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(FALSE);
+
+ LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+ LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
+ if (category)
+ {
+ folders.push_back(category->getUUID());
+ }
+ fetch->fetchDescendents(folders);
+ inc_busy_count();
+ if(fetch->isEverythingComplete())
+ {
+ // everything is already here - call done.
+ fetch->done();
+ }
+ else
+ {
+ // it's all on it's way - add an observer, and the inventory
+ // will call done for us when everything is here.
+ gInventory.addObserver(fetch);
+ }
+ }
+ else
+ {
+ mItems.push_back(std::string("--no options--"));
+ mDisabledItems.push_back(std::string("--no options--"));
+ }
+ hide_context_entries(menu, mItems, mDisabledItems);
+}
+
+BOOL LLFolderBridge::hasChildren() const
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+ LLInventoryModel::EHasChildren has_children;
+ has_children = gInventory.categoryHasChildren(mUUID);
+ return has_children != LLInventoryModel::CHILDREN_NO;
+}
+
+BOOL LLFolderBridge::dragOrDrop(MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data)
+{
+ //llinfos << "LLFolderBridge::dragOrDrop()" << llendl;
+ BOOL accept = FALSE;
+ switch(cargo_type)
+ {
+ case DAD_TEXTURE:
+ case DAD_SOUND:
+ case DAD_CALLINGCARD:
+ case DAD_LANDMARK:
+ case DAD_SCRIPT:
+ case DAD_OBJECT:
+ case DAD_NOTECARD:
+ case DAD_CLOTHING:
+ case DAD_BODYPART:
+ case DAD_ANIMATION:
+ case DAD_GESTURE:
+ case DAD_LINK:
+ accept = dragItemIntoFolder((LLInventoryItem*)cargo_data,
+ drop);
+ break;
+ case DAD_CATEGORY:
+ if (LLFriendCardsManager::instance().isAnyFriendCategory(mUUID))
+ {
+ accept = FALSE;
+ }
+ else
+ {
+ accept = dragCategoryIntoFolder((LLInventoryCategory*)cargo_data, drop);
+ }
+ break;
+ default:
+ break;
+ }
+ return accept;
+}
+
+LLViewerInventoryCategory* LLFolderBridge::getCategory() const
+{
+ LLViewerInventoryCategory* cat = NULL;
+ LLInventoryModel* model = getInventoryModel();
+ if(model)
+ {
+ cat = (LLViewerInventoryCategory*)model->getCategory(mUUID);
+ }
+ return cat;
+}
+
+
+// static
+void LLFolderBridge::pasteClipboard(void* user_data)
+{
+ LLFolderBridge* self = (LLFolderBridge*)user_data;
+ if(self) self->pasteFromClipboard();
+}
+
+void LLFolderBridge::createNewCategory(void* user_data)
+{
+ LLFolderBridge* bridge = (LLFolderBridge*)user_data;
+ if(!bridge) return;
+ LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(bridge->mInventoryPanel.get());
+ if (!panel) return;
+ LLInventoryModel* model = panel->getModel();
+ if(!model) return;
+ LLUUID id;
+ id = model->createNewCategory(bridge->getUUID(),
+ LLFolderType::FT_NONE,
+ LLStringUtil::null);
+ model->notifyObservers();
+
+ // At this point, the bridge has probably been deleted, but the
+ // view is still there.
+ panel->setSelection(id, TAKE_FOCUS_YES);
+}
+
+void LLFolderBridge::createNewShirt(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SHIRT);
+}
+
+void LLFolderBridge::createNewPants(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_PANTS);
+}
+
+void LLFolderBridge::createNewShoes(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SHOES);
+}
+
+void LLFolderBridge::createNewSocks(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SOCKS);
+}
+
+void LLFolderBridge::createNewJacket(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_JACKET);
+}
+
+void LLFolderBridge::createNewSkirt(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SKIRT);
+}
+
+void LLFolderBridge::createNewGloves(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_GLOVES);
+}
+
+void LLFolderBridge::createNewUndershirt(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_UNDERSHIRT);
+}
+
+void LLFolderBridge::createNewUnderpants(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_UNDERPANTS);
+}
+
+void LLFolderBridge::createNewShape(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SHAPE);
+}
+
+void LLFolderBridge::createNewSkin(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_SKIN);
+}
+
+void LLFolderBridge::createNewHair(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_HAIR);
+}
+
+void LLFolderBridge::createNewEyes(void* user_data)
+{
+ LLFolderBridge::createWearable((LLFolderBridge*)user_data, WT_EYES);
+}
+
+// static
+void LLFolderBridge::createWearable(LLFolderBridge* bridge, EWearableType type)
+{
+ if(!bridge) return;
+ LLUUID parent_id = bridge->getUUID();
+ createWearable(parent_id, type);
+}
+
+// Separate function so can be called by global menu as well as right-click
+// menu.
+// static
+void LLFolderBridge::createWearable(const LLUUID &parent_id, EWearableType type)
+{
+ LLWearable* wearable = LLWearableList::instance().createNewWearable(type);
+ LLAssetType::EType asset_type = wearable->getAssetType();
+ LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
+ create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
+ parent_id, wearable->getTransactionID(), wearable->getName(),
+ wearable->getDescription(), asset_type, inv_type, wearable->getType(),
+ wearable->getPermissions().getMaskNextOwner(),
+ LLPointer<LLInventoryCallback>(NULL));
+}
+
+void LLFolderBridge::modifyOutfit(BOOL append)
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return;
+ LLViewerInventoryCategory* cat = getCategory();
+ if(!cat) return;
+
+ // BAP - was:
+ // wear_inventory_category_on_avatar( cat, append );
+ LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append );
+}
+
+// helper stuff
+bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv* move_inv)
+{
+ LLFloaterOpenObject::LLCatAndWear* cat_and_wear = (LLFloaterOpenObject::LLCatAndWear* )move_inv->mUserData;
+ LLViewerObject* object = gObjectList.findObject(move_inv->mObjectID);
+ S32 option = LLNotification::getSelectedOption(notification, response);
+
+ if(option == 0 && object)
+ {
+ if (cat_and_wear && cat_and_wear->mWear)
+ {
+ InventoryObjectList inventory_objects;
+ object->getInventoryContents(inventory_objects);
+ int contents_count = inventory_objects.size()-1; //subtract one for containing folder
+
+ LLInventoryCopyAndWearObserver* inventoryObserver = new LLInventoryCopyAndWearObserver(cat_and_wear->mCatID, contents_count);
+ gInventory.addObserver(inventoryObserver);
+ }
+
+ two_uuids_list_t::iterator move_it;
+ for (move_it = move_inv->mMoveList.begin();
+ move_it != move_inv->mMoveList.end();
+ ++move_it)
+ {
+ object->moveInventory(move_it->first, move_it->second);
+ }
+
+ // update the UI.
+ dialog_refresh_all();
+ }
+
+ if (move_inv->mCallback)
+ {
+ move_inv->mCallback(option, move_inv->mUserData);
+ }
+
+ delete move_inv;
+ return false;
+}
+
+/*
+Next functions intended to reorder items in the inventory folder and save order on server
+Is now used for Favorites folder.
+
+*TODO: refactoring is needed with Favorites Bar functionality. Probably should be moved in LLInventoryModel
+*/
+void saveItemsOrder(LLInventoryModel::item_array_t& items)
+{
+ int sortField = 0;
+
+ // current order is saved by setting incremental values (1, 2, 3, ...) for the sort field
+ for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ LLViewerInventoryItem* item = *i;
+
+ item->setSortField(++sortField);
+ item->setComplete(TRUE);
+ item->updateServer(FALSE);
+
+ gInventory.updateItem(item);
+ }
+
+ gInventory.notifyObservers();
+}
+
+LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
+{
+ LLInventoryModel::item_array_t::iterator result = items.end();
+
+ for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ if ((*i)->getUUID() == id)
+ {
+ result = i;
+ break;
+ }
+ }
+
+ return result;
+}
+
+void updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& srcItemId, const LLUUID& destItemId)
+{
+ LLViewerInventoryItem* srcItem = gInventory.getItem(srcItemId);
+ LLViewerInventoryItem* destItem = gInventory.getItem(destItemId);
+
+ items.erase(findItemByUUID(items, srcItem->getUUID()));
+ items.insert(findItemByUUID(items, destItem->getUUID()), srcItem);
+}
+
+BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
+ BOOL drop)
+{
+ LLInventoryModel* model = getInventoryModel();
+ if(!model) return FALSE;
+
+ // cannot drag into library
+ if(!isAgentInventory())
+ {
+ return FALSE;
+ }
+
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if(!avatar) return FALSE;
+
+ LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();
+ BOOL accept = FALSE;
+ LLViewerObject* object = NULL;
+ if(LLToolDragAndDrop::SOURCE_AGENT == source)
+ {
+
+ BOOL is_movable = TRUE;
+ switch( inv_item->getActualType() )
+ {
+ case LLAssetType::AT_CATEGORY:
+ is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
+ break;
+ default:
+ break;
+ }
+
+ const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
+ const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
+ BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
+ BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
+
+ if(is_movable && move_is_into_trash)
+ {
+ switch(inv_item->getType())
+ {
+ case LLAssetType::AT_CLOTHING:
+ case LLAssetType::AT_BODYPART:
+ is_movable = !gAgentWearables.isWearingItem(inv_item->getUUID());
+ break;
+
+ case LLAssetType::AT_OBJECT:
+ is_movable = !avatar->isWearingAttachment(inv_item->getUUID());
+ break;
+ default:
+ break;
+ }
+ }
+
+ if ( is_movable )
+ {
+ // Don't allow creating duplicates in the Calling Card/Friends
+ // subfolders, see bug EXT-1599. Check is item direct descendent
+ // of target folder and forbid item's movement if it so.
+ // Note: isItemDirectDescendentOfCategory checks if
+ // passed category is in the Calling Card/Friends folder
+ is_movable = ! LLFriendCardsManager::instance()
+ .isObjDirectDescendentOfCategory (inv_item, getCategory());
+ }
+
+ const LLUUID& favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
+ const LLUUID& landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
+ const BOOL folder_allows_reorder = ((mUUID == landmarks_id) || (mUUID == favorites_id));
+
+ // we can move item inside a folder only if this folder is Favorites. See EXT-719
+ accept = is_movable && ((mUUID != inv_item->getParentUUID()) || folder_allows_reorder);
+ if(accept && drop)
+ {
+ if (inv_item->getType() == LLAssetType::AT_GESTURE
+ && LLGestureManager::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)
+ {
+ LLGestureManager::instance().deactivateGesture(inv_item->getUUID());
+ }
+ // If an item is being dragged between windows, unselect
+ // everything in the active window so that we don't follow
+ // the selection to its new location (which is very
+ // annoying).
+ if (LLFloaterInventory::getActiveInventory())
+ {
+ LLInventoryPanel* active_panel = LLFloaterInventory::getActiveInventory()->getPanel();
+ LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
+ if (active_panel && (panel != active_panel))
+ {
+ active_panel->unSelectAll();
+ }
+ }
+
+ // if dragging from/into favorites folder only reorder items
+ if ((mUUID == inv_item->getParentUUID()) && folder_allows_reorder)
+ {
+ LLInventoryModel::cat_array_t cats;
+ LLInventoryModel::item_array_t items;
+ LLIsType is_type(LLAssetType::AT_LANDMARK);
+ model->collectDescendentsIf(mUUID, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type);
+
+ LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
+ LLFolderViewItem* itemp = panel ? panel->getRootFolder()->getDraggingOverItem() : NULL;
+ if (itemp)
+ {
+ LLUUID srcItemId = inv_item->getUUID();
+ LLUUID destItemId = itemp->getListener()->getUUID();
+
+ // update order
+ updateItemsOrder(items, srcItemId, destItemId);
+
+ saveItemsOrder(items);
+ }
+ }
+ else if (favorites_id == mUUID) // if target is the favorites folder we use copy
+ {
+ copy_inventory_item(
+ gAgent.getID(),
+ inv_item->getPermissions().getOwner(),
+ inv_item->getUUID(),
+ mUUID,
+ std::string(),
+ LLPointer<LLInventoryCallback>(NULL));
+ }
+ else if (move_is_into_current_outfit || move_is_into_outfit)
+ {
+ // BAP - should skip if dup.
+ if (move_is_into_current_outfit)
+ {
+ LLAppearanceManager::instance().addCOFItemLink(inv_item);
+ }
+ else
+ {
+ LLPointer<LLInventoryCallback> cb = NULL;
+ link_inventory_item(
+ gAgent.getID(),
+ inv_item->getLinkedUUID(),
+ mUUID,
+ inv_item->getName(),
+ LLAssetType::AT_LINK,
+ cb);
+ }
+ }
+ else
+ {
+ // restamp if the move is into the trash.
+ LLInvFVBridge::changeItemParent(
+ model,
+ (LLViewerInventoryItem*)inv_item,
+ mUUID,
+ move_is_into_trash);
+ }
+ }
+ }
+ else if(LLToolDragAndDrop::SOURCE_WORLD == source)
+ {
+ // Make sure the object exists. If we allowed dragging from
+ // anonymous objects, it would be possible to bypass
+ // permissions.
+ object = gObjectList.findObject(inv_item->getParentUUID());
+ if(!object)
+ {
+ llinfos << "Object not found for drop." << llendl;
+ return FALSE;
+ }
+
+ // coming from a task. Need to figure out if the person can
+ // move/copy this item.
+ LLPermissions perm(inv_item->getPermissions());
+ BOOL is_move = FALSE;
+ if((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())
+ && perm.allowTransferTo(gAgent.getID())))
+// || gAgent.isGodlike())
+
+ {
+ accept = TRUE;
+ }
+ else if(object->permYouOwner())
+ {
+ // If the object cannot be copied, but the object the
+ // inventory is owned by the agent, then the item can be
+ // moved from the task to agent inventory.
+ is_move = TRUE;
+ accept = TRUE;
+ }
+ if(drop && accept)
+ {
+ LLMoveInv* move_inv = new LLMoveInv;
+ move_inv->mObjectID = inv_item->getParentUUID();
+ two_uuids_t item_pair(mUUID, inv_item->getUUID());
+ move_inv->mMoveList.push_back(item_pair);
+ move_inv->mCallback = NULL;
+ move_inv->mUserData = NULL;
+ if(is_move)
+ {
+ warn_move_inventory(object, move_inv);
+ }
+ else
+ {
+ LLNotification::Params params("MoveInventoryFromObject");
+ params.functor.function(boost::bind(move_task_inventory_callback, _1, _2, move_inv));
+ LLNotifications::instance().forceResponse(params, 0);
+ }
+ }
+
+ }
+ else if(LLToolDragAndDrop::SOURCE_NOTECARD == source)
+ {
+ accept = TRUE;
+ if(drop)
+ {
+ copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(),
+ LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
+ }
+ }
+ else if(LLToolDragAndDrop::SOURCE_LIBRARY == source)
+ {
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)inv_item;
+ if(item && item->isComplete())
+ {
+ accept = TRUE;
+ if(drop)
+ {
+ copy_inventory_item(
+ gAgent.getID(),
+ inv_item->getPermissions().getOwner(),
+ inv_item->getUUID(),
+ mUUID,
+ std::string(),
+ LLPointer<LLInventoryCallback>(NULL));
+ }
+ }
+ }
+ else
+ {
+ llwarns << "unhandled drag source" << llendl;
+ }
+ return accept;
+}
+
+// +=================================================+
+// | LLScriptBridge (DEPRECTED) |
+// +=================================================+
+
+LLUIImagePtr LLScriptBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_SCRIPT, LLInventoryType::IT_LSL, 0, FALSE);
+}
+
+// +=================================================+
+// | LLTextureBridge |
+// +=================================================+
+
+LLUIImagePtr LLTextureBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_TEXTURE, mInvType, 0, FALSE);
+}
+
+void LLTextureBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+}
+
+void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ lldebugs << "LLTextureBridge::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+
+ items.push_back(std::string("Texture Separator"));
+ items.push_back(std::string("Save As"));
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// virtual
+void LLTextureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("save_as" == action)
+ {
+ LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
+ LLPreviewTexture* preview_texture = LLFloaterReg::findTypedInstance<LLPreviewTexture>("preview_texture", mUUID);
+ if (preview_texture)
+ {
+ preview_texture->openToSave();
+ }
+ }
+ else LLItemBridge::performAction(folder, model, action);
+}
+
+// +=================================================+
+// | LLSoundBridge |
+// +=================================================+
+
+LLUIImagePtr LLSoundBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_SOUND, LLInventoryType::IT_SOUND, 0, FALSE);
+}
+
+void LLSoundBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+/*
+// Changed this back to the way it USED to work:
+// only open the preview dialog through the contextual right-click menu
+// double-click just plays the sound
+
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ openSoundPreview((void*)this);
+ //send_uuid_sound_trigger(item->getAssetUUID(), 1.0);
+ }
+*/
+}
+
+void LLSoundBridge::previewItem()
+{
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ send_sound_trigger(item->getAssetUUID(), 1.0);
+ }
+}
+
+void LLSoundBridge::openSoundPreview(void* which)
+{
+ LLSoundBridge *me = (LLSoundBridge *)which;
+ LLFloaterReg::showInstance("preview_sound", LLSD(me->mUUID), TAKE_FOCUS_YES);
+}
+
+void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ lldebugs << "LLSoundBridge::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Sound Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+ }
+
+ items.push_back(std::string("Sound Separator"));
+ items.push_back(std::string("Sound Play"));
+
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// +=================================================+
+// | LLLandmarkBridge |
+// +=================================================+
+
+LLLandmarkBridge::LLLandmarkBridge(LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags/* = 0x00*/) :
+LLItemBridge(inventory, uuid)
+{
+ mVisited = FALSE;
+ if (flags & LLInventoryItem::II_FLAGS_LANDMARK_VISITED)
+ {
+ mVisited = TRUE;
+ }
+}
+
+LLUIImagePtr LLLandmarkBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_LANDMARK, LLInventoryType::IT_LANDMARK, mVisited, FALSE);
+}
+
+void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+
+ lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl;
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Landmark Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+ }
+
+ items.push_back(std::string("Landmark Separator"));
+ items.push_back(std::string("About Landmark"));
+
+ // Disable "About Landmark" menu item for
+ // multiple landmarks selected. Only one landmark
+ // info panel can be shown at a time.
+ if ((flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("About Landmark"));
+ }
+
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// Convenience function for the two functions below.
+void teleport_via_landmark(const LLUUID& asset_id)
+{
+ gAgent.teleportViaLandmark( asset_id );
+
+ // we now automatically track the landmark you're teleporting to
+ // because you'll probably arrive at a telehub instead
+ LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance();
+ if( floater_world_map )
+ {
+ floater_world_map->trackLandmark( asset_id );
+ }
+}
+
+// virtual
+void LLLandmarkBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("teleport" == action)
+ {
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ teleport_via_landmark(item->getAssetUUID());
+ }
+ }
+ else if ("about" == action)
+ {
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ LLSD key;
+ key["type"] = "landmark";
+ key["id"] = item->getUUID();
+
+ LLSideTray::getInstance()->showPanel("panel_places", key);
+ }
+ }
+ else
+ {
+ LLItemBridge::performAction(folder, model, action);
+ }
+}
+
+static bool open_landmark_callback(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotification::getSelectedOption(notification, response);
+
+ LLUUID asset_id = notification["payload"]["asset_id"].asUUID();
+ if (option == 0)
+ {
+ teleport_via_landmark(asset_id);
+ }
+
+ return false;
+}
+static LLNotificationFunctorRegistration open_landmark_callback_reg("TeleportFromLandmark", open_landmark_callback);
+
+
+void LLLandmarkBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+/*
+ LLViewerInventoryItem* item = getItem();
+ if( item )
+ {
+ // Opening (double-clicking) a landmark immediately teleports,
+ // but warns you the first time.
+ // open_landmark(item);
+ LLSD payload;
+ payload["asset_id"] = item->getAssetUUID();
+ LLNotifications::instance().add("TeleportFromLandmark", LLSD(), payload);
+ }
+*/
+}
+
+
+// +=================================================+
+// | LLCallingCardObserver |
+// +=================================================+
+void LLCallingCardObserver::changed(U32 mask)
+{
+ mBridgep->refreshFolderViewItem();
+}
+
+// +=================================================+
+// | LLCallingCardBridge |
+// +=================================================+
+
+LLCallingCardBridge::LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
+ LLItemBridge(inventory, uuid)
+{
+ mObserver = new LLCallingCardObserver(this);
+ LLAvatarTracker::instance().addObserver(mObserver);
+}
+
+LLCallingCardBridge::~LLCallingCardBridge()
+{
+ LLAvatarTracker::instance().removeObserver(mObserver);
+ delete mObserver;
+}
+
+void LLCallingCardBridge::refreshFolderViewItem()
+{
+ LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());
+ LLFolderViewItem* itemp = panel ? panel->getRootFolder()->getItemByID(mUUID) : NULL;
+ if (itemp)
+ {
+ itemp->refresh();
+ }
+}
+
+// virtual
+void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("begin_im" == action)
+ {
+ LLViewerInventoryItem *item = getItem();
+ if (item && (item->getCreatorUUID() != gAgent.getID()) &&
+ (!item->getCreatorUUID().isNull()))
+ {
+ std::string callingcard_name;
+ gCacheName->getFullName(item->getCreatorUUID(), callingcard_name);
+ LLUUID session_id = gIMMgr->addSession(callingcard_name, IM_NOTHING_SPECIAL, item->getCreatorUUID());
+ if (session_id != LLUUID::null)
+ {
+ LLIMFloater::show(session_id);
+ }
+ }
+ }
+ else if ("lure" == action)
+ {
+ LLViewerInventoryItem *item = getItem();
+ if (item && (item->getCreatorUUID() != gAgent.getID()) &&
+ (!item->getCreatorUUID().isNull()))
+ {
+ LLAvatarActions::offerTeleport(item->getCreatorUUID());
+ }
+ }
+ else LLItemBridge::performAction(folder, model, action);
+}
+
+LLUIImagePtr LLCallingCardBridge::getIcon() const
+{
+ BOOL online = FALSE;
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ online = LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID());
+ }
+ return get_item_icon(LLAssetType::AT_CALLINGCARD, LLInventoryType::IT_CALLINGCARD, online, FALSE);
+}
+
+std::string LLCallingCardBridge::getLabelSuffix() const
+{
+ LLViewerInventoryItem* item = getItem();
+ if( item && LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()) )
+ {
+ return LLItemBridge::getLabelSuffix() + " (online)";
+ }
+ else
+ {
+ return LLItemBridge::getLabelSuffix();
+ }
+}
+
+void LLCallingCardBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+/*
+ LLViewerInventoryItem* item = getItem();
+ if(item && !item->getCreatorUUID().isNull())
+ {
+ LLAvatarActions::showProfile(item->getCreatorUUID());
+ }
+*/
+}
+
+void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ lldebugs << "LLCallingCardBridge::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+
+ LLInventoryItem* item = getItem();
+ BOOL good_card = (item
+ && (LLUUID::null != item->getCreatorUUID())
+ && (item->getCreatorUUID() != gAgent.getID()));
+ BOOL user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()));
+ items.push_back(std::string("Send Instant Message Separator"));
+ items.push_back(std::string("Send Instant Message"));
+ items.push_back(std::string("Offer Teleport..."));
+ items.push_back(std::string("Conference Chat"));
+
+ if (!good_card)
+ {
+ disabled_items.push_back(std::string("Send Instant Message"));
+ }
+ if (!good_card || !user_online)
+ {
+ disabled_items.push_back(std::string("Offer Teleport..."));
+ disabled_items.push_back(std::string("Conference Chat"));
+ }
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data)
+{
+ LLViewerInventoryItem* item = getItem();
+ BOOL rv = FALSE;
+ if(item)
+ {
+ // check the type
+ switch(cargo_type)
+ {
+ case DAD_TEXTURE:
+ case DAD_SOUND:
+ case DAD_LANDMARK:
+ case DAD_SCRIPT:
+ case DAD_CLOTHING:
+ case DAD_OBJECT:
+ case DAD_NOTECARD:
+ case DAD_BODYPART:
+ case DAD_ANIMATION:
+ case DAD_GESTURE:
+ {
+ LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+ const LLPermissions& perm = inv_item->getPermissions();
+ if(gInventory.getItem(inv_item->getUUID())
+ && perm.allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+ {
+ rv = TRUE;
+ if(drop)
+ {
+ LLToolDragAndDrop::giveInventory(item->getCreatorUUID(),
+ (LLInventoryItem*)cargo_data);
+ }
+ }
+ else
+ {
+ // It's not in the user's inventory (it's probably in
+ // an object's contents), so disallow dragging it here.
+ // You can't give something you don't yet have.
+ rv = FALSE;
+ }
+ break;
+ }
+ case DAD_CATEGORY:
+ {
+ LLInventoryCategory* inv_cat = (LLInventoryCategory*)cargo_data;
+ if( gInventory.getCategory( inv_cat->getUUID() ) )
+ {
+ rv = TRUE;
+ if(drop)
+ {
+ LLToolDragAndDrop::giveInventoryCategory(
+ item->getCreatorUUID(),
+ inv_cat);
+ }
+ }
+ else
+ {
+ // It's not in the user's inventory (it's probably in
+ // an object's contents), so disallow dragging it here.
+ // You can't give something you don't yet have.
+ rv = FALSE;
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ return rv;
+}
+
+BOOL LLCallingCardBridge::removeItem()
+{
+ if (LLFriendCardsManager::instance().isItemInAnyFriendsList(getItem()))
+ {
+ LLAvatarActions::removeFriendDialog(getItem()->getCreatorUUID());
+ return FALSE;
+ }
+ else
+ {
+ return LLItemBridge::removeItem();
+ }
+}
+// +=================================================+
+// | LLNotecardBridge |
+// +=================================================+
+
+LLUIImagePtr LLNotecardBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_NOTECARD, LLInventoryType::IT_NOTECARD, 0, FALSE);
+}
+
+void LLNotecardBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+
+/*
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+ }
+*/
+}
+
+
+// +=================================================+
+// | LLGestureBridge |
+// +=================================================+
+
+LLUIImagePtr LLGestureBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_GESTURE, LLInventoryType::IT_GESTURE, 0, FALSE);
+}
+
+LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const
+{
+ if( LLGestureManager::instance().isGestureActive(mUUID) )
+ {
+ return LLFontGL::BOLD;
+ }
+ else
+ {
+ return LLFontGL::NORMAL;
+ }
+}
+
+std::string LLGestureBridge::getLabelSuffix() const
+{
+ if( LLGestureManager::instance().isGestureActive(mUUID) )
+ {
+ return LLItemBridge::getLabelSuffix() + " (active)";
+ }
+ else
+ {
+ return LLItemBridge::getLabelSuffix();
+ }
+}
+
+// virtual
+void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("activate" == action)
+ {
+ LLGestureManager::instance().activateGesture(mUUID);
+
+ LLViewerInventoryItem* item = gInventory.getItem(mUUID);
+ if (!item) return;
+
+ // Since we just changed the suffix to indicate (active)
+ // the server doesn't need to know, just the viewer.
+ gInventory.updateItem(item);
+ gInventory.notifyObservers();
+ }
+ else if ("deactivate" == action)
+ {
+ LLGestureManager::instance().deactivateGesture(mUUID);
+
+ LLViewerInventoryItem* item = gInventory.getItem(mUUID);
+ if (!item) return;
+
+ // Since we just changed the suffix to indicate (active)
+ // the server doesn't need to know, just the viewer.
+ gInventory.updateItem(item);
+ gInventory.notifyObservers();
+ }
+ else LLItemBridge::performAction(folder, model, action);
+}
+
+void LLGestureBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+/*
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
+ preview->setFocus(TRUE);
+ }
+*/
+}
+
+BOOL LLGestureBridge::removeItem()
+{
+ // Force close the preview window, if it exists
+ LLGestureManager::instance().deactivateGesture(mUUID);
+ return LLItemBridge::removeItem();
+}
+
+void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ lldebugs << "LLGestureBridge::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ LLInventoryItem* item = getItem();
+ if (item && item->getIsLinkType())
+ {
+ items.push_back(std::string("Find Original"));
+ }
+ items.push_back(std::string("Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+
+ items.push_back(std::string("Gesture Separator"));
+ items.push_back(std::string("Activate"));
+ items.push_back(std::string("Deactivate"));
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// +=================================================+
+// | LLAnimationBridge |
+// +=================================================+
+
+LLUIImagePtr LLAnimationBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_ANIMATION, LLInventoryType::IT_ANIMATION, 0, FALSE);
+}
+
+void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+
+ lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl;
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Animation Open"));
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+ }
+
+ items.push_back(std::string("Animation Separator"));
+ items.push_back(std::string("Animation Play"));
+ items.push_back(std::string("Animation Audition"));
+
+ hide_context_entries(menu, items, disabled_items);
+
+}
+
+// virtual
+void LLAnimationBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ((action == "playworld") || (action == "playlocal"))
+ {
+ if (getItem())
+ {
+ LLPreviewAnim::e_activation_type activate = LLPreviewAnim::NONE;
+ if ("playworld" == action) activate = LLPreviewAnim::PLAY;
+ if ("playlocal" == action) activate = LLPreviewAnim::AUDITION;
+
+ LLPreviewAnim* preview = LLFloaterReg::showTypedInstance<LLPreviewAnim>("preview_anim", LLSD(mUUID));
+ if (preview)
+ {
+ preview->activate(activate);
+ }
+ }
+ }
+ else
+ {
+ LLItemBridge::performAction(folder, model, action);
+ }
+}
+
+void LLAnimationBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+/*
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+*/
+}
+
+// +=================================================+
+// | LLObjectBridge |
+// +=================================================+
+
+// static
+LLUUID LLObjectBridge::sContextMenuItemID;
+
+LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type, U32 flags) :
+LLItemBridge(inventory, uuid), mInvType(type)
+{
+ mAttachPt = (flags & 0xff); // low bye of inventory flags
+
+ mIsMultiObject = ( flags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ? TRUE: FALSE;
+}
+
+BOOL LLObjectBridge::isItemRemovable()
+{
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if(!avatar) return FALSE;
+ if(avatar->isWearingAttachment(mUUID)) return FALSE;
+ return LLInvFVBridge::isItemRemovable();
+}
+
+LLUIImagePtr LLObjectBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_OBJECT, mInvType, mAttachPt, mIsMultiObject );
+}
+
+LLInventoryObject* LLObjectBridge::getObject() const
+{
+ LLInventoryObject* object = NULL;
+ LLInventoryModel* model = getInventoryModel();
+ if(model)
+ {
+ object = (LLInventoryObject*)model->getObject(mUUID);
+ }
+ return object;
+}
+
+// virtual
+void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("attach" == action)
+ {
+ LLUUID object_id = mUUID;
+ LLViewerInventoryItem* item;
+ item = (LLViewerInventoryItem*)gInventory.getItem(object_id);
+ if(item && gInventory.isObjectDescendentOf(object_id, gInventory.getRootFolderID()))
+ {
+ rez_attachment(item, NULL);
+ }
+ else if(item && item->isComplete())
+ {
+ // must be in library. copy it to our inventory and put it on.
+ LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ gFocusMgr.setKeyboardFocus(NULL);
+ }
+ else if ("detach" == action)
+ {
+ LLInventoryItem* item = gInventory.getItem(mUUID);
+ if(item)
+ {
+ gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ gMessageSystem->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
+ gMessageSystem->sendReliable( gAgent.getRegion()->getHost());
+ }
+ // this object might have been selected, so let the selection manager know it's gone now
+ LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
+ if (found_obj)
+ {
+ LLSelectMgr::getInstance()->remove(found_obj);
+ }
+ }
+ else LLItemBridge::performAction(folder, model, action);
+}
+
+void LLObjectBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+
+ LLSD key;
+ key["id"] = mUUID;
+ LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+
+ // Disable old properties floater; this is replaced by the sidepanel.
+ /*
+ LLFloaterReg::showInstance("properties", mUUID);
+ */
+}
+
+LLFontGL::StyleFlags LLObjectBridge::getLabelStyle() const
+{
+ U8 font = LLFontGL::NORMAL;
+
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if( avatar && avatar->isWearingAttachment( mUUID ) )
+ {
+ font |= LLFontGL::BOLD;
+ }
+
+ LLInventoryItem* item = getItem();
+ if (item && item->getIsLinkType())
+ {
+ font |= LLFontGL::ITALIC;
+ }
+
+ return (LLFontGL::StyleFlags)font;
+}
+
+std::string LLObjectBridge::getLabelSuffix() const
+{
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if( avatar && avatar->isWearingAttachment( mUUID ) )
+ {
+ std::string attachment_point_name = avatar->getAttachedPointName(mUUID);
+
+ // e.g. "(worn on ...)" / "(attached to ...)"
+ LLStringUtil::format_map_t args;
+ args["[ATTACHMENT_POINT]"] = attachment_point_name.c_str();
+ return LLItemBridge::getLabelSuffix() + LLTrans::getString("WornOnAttachmentPoint", args);
+ }
+ else
+ {
+ return LLItemBridge::getLabelSuffix();
+ }
+}
+
+void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment)
+{
+ LLSD payload;
+ payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.
+
+ S32 attach_pt = 0;
+ if (gAgent.getAvatarObject() && attachment)
+ {
+ for (LLVOAvatar::attachment_map_t::iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin();
+ iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter)
+ {
+ if (iter->second == attachment)
+ {
+ attach_pt = iter->first;
+ break;
+ }
+ }
+ }
+
+ payload["attachment_point"] = attach_pt;
+
+#if !ENABLE_MULTIATTACHMENTS
+ if (attachment && attachment->getNumObjects() > 0)
+ {
+ LLNotifications::instance().add("ReplaceAttachment", LLSD(), payload, confirm_replace_attachment_rez);
+ }
+ else
+#endif
+ {
+ LLNotifications::instance().forceResponse(LLNotification::Params("ReplaceAttachment").payload(payload), 0/*YES*/);
+ }
+}
+
+bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response)
+{
+ LLVOAvatar *avatarp = gAgent.getAvatarObject();
+
+ if (!avatarp->canAttachMoreObjects())
+ {
+ LLSD args;
+ args["MAX_ATTACHMENTS"] = llformat("%d", MAX_AGENT_ATTACHMENTS);
+ LLNotifications::instance().add("MaxAttachmentsOnOutfit", args);
+ return false;
+ }
+
+ S32 option = LLNotification::getSelectedOption(notification, response);
+ if (option == 0/*YES*/)
+ {
+ LLViewerInventoryItem* itemp = gInventory.getItem(notification["payload"]["item_id"].asUUID());
+
+ if (itemp)
+ {
+ LLMessageSystem* msg = gMessageSystem;
+ msg->newMessageFast(_PREHASH_RezSingleAttachmentFromInv);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->nextBlockFast(_PREHASH_ObjectData);
+ msg->addUUIDFast(_PREHASH_ItemID, itemp->getUUID());
+ msg->addUUIDFast(_PREHASH_OwnerID, itemp->getPermissions().getOwner());
+ U8 attachment_pt = notification["payload"]["attachment_point"].asInteger();
+#if ENABLE_MULTIATTACHMENTS
+ attachment_pt |= ATTACHMENT_ADD;
+#endif
+ msg->addU8Fast(_PREHASH_AttachmentPt, attachment_pt);
+ pack_permissions_slam(msg, itemp->getFlags(), itemp->getPermissions());
+ msg->addStringFast(_PREHASH_Name, itemp->getName());
+ msg->addStringFast(_PREHASH_Description, itemp->getDescription());
+ msg->sendReliable(gAgent.getRegion()->getHost());
+ }
+ }
+ return false;
+}
+static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("ReplaceAttachment", confirm_replace_attachment_rez);
+
+void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ LLInventoryItem* item = getItem();
+ if (item && item->getIsLinkType())
+ {
+ items.push_back(std::string("Find Original"));
+ }
+
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+
+ LLObjectBridge::sContextMenuItemID = mUUID;
+
+ if(item)
+ {
+ LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
+ if( !avatarp )
+ {
+ return;
+ }
+
+ if( avatarp->isWearingAttachment( mUUID ) )
+ {
+ items.push_back(std::string("Detach From Yourself"));
+ }
+ else
+ if( !isInTrash() && !isLinkedObjectInTrash() )
+ {
+ items.push_back(std::string("Attach Separator"));
+ items.push_back(std::string("Object Wear"));
+ items.push_back(std::string("Attach To"));
+ items.push_back(std::string("Attach To HUD"));
+ // commented out for DEV-32347
+ //items.push_back(std::string("Restore to Last Position"));
+
+ if (!avatarp->canAttachMoreObjects())
+ {
+ disabled_items.push_back(std::string("Object Wear"));
+ disabled_items.push_back(std::string("Attach To"));
+ disabled_items.push_back(std::string("Attach To HUD"));
+ }
+ LLMenuGL* attach_menu = menu.findChildMenuByName("Attach To", TRUE);
+ LLMenuGL* attach_hud_menu = menu.findChildMenuByName("Attach To HUD", TRUE);
+ LLVOAvatar *avatarp = gAgent.getAvatarObject();
+ if (attach_menu
+ && (attach_menu->getChildCount() == 0)
+ && attach_hud_menu
+ && (attach_hud_menu->getChildCount() == 0)
+ && avatarp)
+ {
+ for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();
+ iter != avatarp->mAttachmentPoints.end(); )
+ {
+ LLVOAvatar::attachment_map_t::iterator curiter = iter++;
+ LLViewerJointAttachment* attachment = curiter->second;
+ LLMenuItemCallGL::Params p;
+ std::string submenu_name = attachment->getName();
+ if (LLTrans::getString(submenu_name) != "")
+ {
+ p.name = (" ")+LLTrans::getString(submenu_name)+" ";
+ }
+ else
+ {
+ p.name = submenu_name;
+ }
+ LLSD cbparams;
+ cbparams["index"] = curiter->first;
+ cbparams["label"] = attachment->getName();
+ p.on_click.function_name = "Inventory.AttachObject";
+ p.on_click.parameter = LLSD(attachment->getName());
+ p.on_enable.function_name = "Attachment.Label";
+ p.on_enable.parameter = cbparams;
+ LLView* parent = attachment->getIsHUDAttachment() ? attach_hud_menu : attach_menu;
+ LLUICtrlFactory::create<LLMenuItemCallGL>(p, parent);
+ }
+ }
+ }
+ }
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+BOOL LLObjectBridge::renameItem(const std::string& new_name)
+{
+ if(!isItemRenameable())
+ return FALSE;
+ LLPreview::dirty(mUUID);
+ LLInventoryModel* model = getInventoryModel();
+ if(!model)
+ return FALSE;
+ LLViewerInventoryItem* item = getItem();
+ if(item && (item->getName() != new_name))
+ {
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+ new_item->rename(new_name);
+ buildDisplayName(new_item, mDisplayName);
+ new_item->updateServer(FALSE);
+ model->updateItem(new_item);
+
+ model->notifyObservers();
+
+ LLVOAvatarSelf* avatar = gAgent.getAvatarObject();
+ if( avatar )
+ {
+ LLViewerObject* obj = avatar->getWornAttachment( item->getUUID() );
+ if( obj )
+ {
+ LLSelectMgr::getInstance()->deselectAll();
+ LLSelectMgr::getInstance()->addAsIndividual( obj, SELECT_ALL_TES, FALSE );
+ LLSelectMgr::getInstance()->selectionSetObjectName( new_name );
+ LLSelectMgr::getInstance()->deselectAll();
+ }
+ }
+ }
+ // return FALSE because we either notified observers (& therefore
+ // rebuilt) or we didn't update.
+ return FALSE;
+}
+
+// +=================================================+
+// | LLLSLTextBridge |
+// +=================================================+
+
+LLUIImagePtr LLLSLTextBridge::getIcon() const
+{
+ return get_item_icon(LLAssetType::AT_SCRIPT, LLInventoryType::IT_LSL, 0, FALSE);
+}
+
+void LLLSLTextBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+ /*
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+ */
+}
+
+// +=================================================+
+// | LLWearableBridge |
+// +=================================================+
+
+// *NOTE: hack to get from avatar inventory to avatar
+void wear_inventory_item_on_avatar( LLInventoryItem* item )
+{
+ if(item)
+ {
+ lldebugs << "wear_inventory_item_on_avatar( " << item->getName()
+ << " )" << llendl;
+
+ LLAppearanceManager::instance().addCOFItemLink(item);
+ }
+}
+
+void wear_add_inventory_item_on_avatar( LLInventoryItem* item )
+{
+ if(item)
+ {
+ lldebugs << "wear_add_inventory_item_on_avatar( " << item->getName()
+ << " )" << llendl;
+
+ LLWearableList::instance().getAsset(item->getAssetUUID(),
+ item->getName(),
+ item->getType(),
+ LLWearableBridge::onWearAddOnAvatarArrived,
+ new LLUUID(item->getUUID()));
+ }
+}
+
+void remove_inventory_category_from_avatar( LLInventoryCategory* category )
+{
+ if(!category) return;
+ lldebugs << "remove_inventory_category_from_avatar( " << category->getName()
+ << " )" << llendl;
+
+
+ if( gFloaterCustomize )
+ {
+ gFloaterCustomize->askToSaveIfDirty(
+ boost::bind(remove_inventory_category_from_avatar_step2, _1, category->getUUID()));
+ }
+ else
+ {
+ remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
+ }
+}
+
+struct OnRemoveStruct
+{
+ LLUUID mUUID;
+ OnRemoveStruct(const LLUUID& uuid):
+ mUUID(uuid)
+ {
+ }
+};
+
+void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id)
+{
+
+ // Find all the wearables that are in the category's subtree.
+ lldebugs << "remove_inventory_category_from_avatar_step2()" << llendl;
+ if(proceed)
+ {
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ LLFindWearables is_wearable;
+ gInventory.collectDescendentsIf(category_id,
+ cat_array,
+ item_array,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_wearable);
+ S32 i;
+ S32 wearable_count = item_array.count();
+
+ LLInventoryModel::cat_array_t obj_cat_array;
+ LLInventoryModel::item_array_t obj_item_array;
+ LLIsType is_object( LLAssetType::AT_OBJECT );
+ gInventory.collectDescendentsIf(category_id,
+ obj_cat_array,
+ obj_item_array,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_object);
+ S32 obj_count = obj_item_array.count();
+
+ // Find all gestures in this folder
+ LLInventoryModel::cat_array_t gest_cat_array;
+ LLInventoryModel::item_array_t gest_item_array;
+ LLIsType is_gesture( LLAssetType::AT_GESTURE );
+ gInventory.collectDescendentsIf(category_id,
+ gest_cat_array,
+ gest_item_array,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_gesture);
+ S32 gest_count = gest_item_array.count();
+
+ if (wearable_count > 0) //Loop through wearables. If worn, remove.
+ {
+ for(i = 0; i < wearable_count; ++i)
+ {
+ if( gAgentWearables.isWearingItem (item_array.get(i)->getUUID()) )
+ {
+ LLWearableList::instance().getAsset(item_array.get(i)->getAssetUUID(),
+ item_array.get(i)->getName(),
+ item_array.get(i)->getType(),
+ LLWearableBridge::onRemoveFromAvatarArrived,
+ new OnRemoveStruct(item_array.get(i)->getUUID()));
+
+ }
+ }
+ }
+
+
+ if (obj_count > 0)
+ {
+ for(i = 0; i < obj_count; ++i)
+ {
+ gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv);
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData );
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
+ gMessageSystem->addUUIDFast(_PREHASH_ItemID, obj_item_array.get(i)->getUUID() );
+
+ gMessageSystem->sendReliable( gAgent.getRegion()->getHost() );
+
+ // this object might have been selected, so let the selection manager know it's gone now
+ LLViewerObject *found_obj = gObjectList.findObject( obj_item_array.get(i)->getUUID());
+ if (found_obj)
+ {
+ LLSelectMgr::getInstance()->remove(found_obj);
+ }
+ }
+ }
+
+ if (gest_count > 0)
+ {
+ for(i = 0; i < gest_count; ++i)
+ {
+ if ( LLGestureManager::instance().isGestureActive( gest_item_array.get(i)->getUUID()) )
+ {
+ LLGestureManager::instance().deactivateGesture( gest_item_array.get(i)->getUUID() );
+ gInventory.updateItem( gest_item_array.get(i) );
+ gInventory.notifyObservers();
+ }
+
+ }
+ }
+ }
+}
+
+BOOL LLWearableBridge::renameItem(const std::string& new_name)
+{
+ if( gAgentWearables.isWearingItem( mUUID ) )
+ {
+ gAgentWearables.setWearableName( mUUID, new_name );
+ }
+ return LLItemBridge::renameItem(new_name);
+}
+
+BOOL LLWearableBridge::isItemRemovable()
+{
+ if (gAgentWearables.isWearingItem(mUUID)) return FALSE;
+ return LLInvFVBridge::isItemRemovable();
+}
+
+std::string LLWearableBridge::getLabelSuffix() const
+{
+ if( gAgentWearables.isWearingItem( mUUID ) )
+ {
+ // e.g. "(worn)"
+ return LLItemBridge::getLabelSuffix() + LLTrans::getString("worn");
+ }
+ else
+ {
+ return LLItemBridge::getLabelSuffix();
+ }
+}
+
+LLUIImagePtr LLWearableBridge::getIcon() const
+{
+ return get_item_icon(mAssetType, mInvType, mWearableType, FALSE);
+}
+
+// virtual
+void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("wear" == action)
+ {
+ wearOnAvatar();
+ }
+ else if ("wear_add" == action)
+ {
+ wearAddOnAvatar();
+ }
+ else if ("edit" == action)
+ {
+ editOnAvatar();
+ return;
+ }
+ else if ("take_off" == action)
+ {
+ if(gAgentWearables.isWearingItem(mUUID))
+ {
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLWearableList::instance().getAsset(item->getAssetUUID(),
+ item->getName(),
+ item->getType(),
+ LLWearableBridge::onRemoveFromAvatarArrived,
+ new OnRemoveStruct(mUUID));
+ }
+ }
+ }
+ else LLItemBridge::performAction(folder, model, action);
+}
+
+void LLWearableBridge::openItem()
+{
+ LLViewerInventoryItem* item = getItem();
+
+ if (item)
+ {
+ LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
+ }
+ /*
+ if( isInTrash() )
+ {
+ LLNotifications::instance().add("CannotWearTrash");
+ }
+ else if(isAgentInventory())
+ {
+ if( !gAgentWearables.isWearingItem( mUUID ) )
+ {
+ wearOnAvatar();
+ }
+ }
+ else
+ {
+ // must be in the inventory library. copy it to our inventory
+ // and put it on right away.
+ LLViewerInventoryItem* item = getItem();
+ if(item && item->isComplete())
+ {
+ LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ else if(item)
+ {
+ // *TODO: We should fetch the item details, and then do
+ // the operation above.
+ LLNotifications::instance().add("CannotWearInfoNotComplete");
+ }
+ }
+ */
+}
+
+void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ lldebugs << "LLWearableBridge::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ { // FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere
+ BOOL no_open = ((flags & SUPPRESS_OPEN_ITEM) == SUPPRESS_OPEN_ITEM);
+
+ // If we have clothing, don't add "Open" as it's the same action as "Wear" SL-18976
+ LLViewerInventoryItem* item = getItem();
+ if( !no_open && item )
+ {
+ no_open = (item->getType() == LLAssetType::AT_CLOTHING) ||
+ (item->getType() == LLAssetType::AT_BODYPART);
+ }
+ if (!no_open)
+ {
+ items.push_back(std::string("Open"));
+ }
+
+ if (item && item->getIsLinkType())
+ {
+ items.push_back(std::string("Find Original"));
+ }
+
+ items.push_back(std::string("Properties"));
+
+ getClipboardEntries(true, items, disabled_items, flags);
+
+ items.push_back(std::string("Wearable Separator"));
+
+ items.push_back(std::string("Wearable Wear"));
+ items.push_back(std::string("Wearable Add"));
+ items.push_back(std::string("Wearable Edit"));
+
+ if ((flags & FIRST_SELECTED_ITEM) == 0)
+ {
+ disabled_items.push_back(std::string("Wearable Edit"));
+ }
+ // Don't allow items to be worn if their baseobj is in the trash.
+ if (isLinkedObjectInTrash())
+ {
+ disabled_items.push_back(std::string("Wearable Wear"));
+ disabled_items.push_back(std::string("Wearable Add"));
+ disabled_items.push_back(std::string("Wearable Edit"));
+ }
+
+ // Disable wear and take off based on whether the item is worn.
+ if(item)
+ {
+ switch (item->getType())
+ {
+ case LLAssetType::AT_CLOTHING:
+ items.push_back(std::string("Take Off"));
+ case LLAssetType::AT_BODYPART:
+ if (gAgentWearables.isWearingItem(item->getUUID()))
+ {
+ disabled_items.push_back(std::string("Wearable Wear"));
+ disabled_items.push_back(std::string("Wearable Add"));
+ }
+ else
+ {
+ disabled_items.push_back(std::string("Take Off"));
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+// Called from menus
+// static
+BOOL LLWearableBridge::canWearOnAvatar(void* user_data)
+{
+ LLWearableBridge* self = (LLWearableBridge*)user_data;
+ if(!self) return FALSE;
+ if(!self->isAgentInventory())
+ {
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)self->getItem();
+ if(!item || !item->isComplete()) return FALSE;
+ }
+ return (!gAgentWearables.isWearingItem(self->mUUID));
+}
+
+// Called from menus
+// static
+void LLWearableBridge::onWearOnAvatar(void* user_data)
+{
+ LLWearableBridge* self = (LLWearableBridge*)user_data;
+ if(!self) return;
+ self->wearOnAvatar();
+}
+
+void LLWearableBridge::wearOnAvatar()
+{
+ // Don't wear anything until initial wearables are loaded, can
+ // destroy clothing items.
+ if (!gAgentWearables.areWearablesLoaded())
+ {
+ LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded");
+ return;
+ }
+
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ if(!isAgentInventory())
+ {
+ LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ else
+ {
+ wear_inventory_item_on_avatar(item);
+ }
+ }
+}
+
+void LLWearableBridge::wearAddOnAvatar()
+{
+ // Don't wear anything until initial wearables are loaded, can
+ // destroy clothing items.
+ if (!gAgentWearables.areWearablesLoaded())
+ {
+ LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded");
+ return;
+ }
+
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ if(!isAgentInventory())
+ {
+ LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ else
+ {
+ wear_add_inventory_item_on_avatar(item);
+ }
+ }
+}
+
+// static
+void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userdata )
+{
+ LLUUID* item_id = (LLUUID*) userdata;
+ if(wearable)
+ {
+ LLViewerInventoryItem* item = NULL;
+ item = (LLViewerInventoryItem*)gInventory.getItem(*item_id);
+ if(item)
+ {
+ if(item->getAssetUUID() == wearable->getAssetID())
+ {
+ gAgentWearables.setWearableItem(item, wearable);
+ gInventory.notifyObservers();
+ //self->getFolderItem()->refreshFromRoot();
+ }
+ else
+ {
+ llinfos << "By the time wearable asset arrived, its inv item already pointed to a different asset." << llendl;
+ }
+ }
+ }
+ delete item_id;
+}
+
+// static
+// BAP remove the "add" code path once everything is fully COF-ified.
+void LLWearableBridge::onWearAddOnAvatarArrived( LLWearable* wearable, void* userdata )
+{
+ LLUUID* item_id = (LLUUID*) userdata;
+ if(wearable)
+ {
+ LLViewerInventoryItem* item = NULL;
+ item = (LLViewerInventoryItem*)gInventory.getItem(*item_id);
+ if(item)
+ {
+ if(item->getAssetUUID() == wearable->getAssetID())
+ {
+ bool do_append = true;
+ gAgentWearables.setWearableItem(item, wearable, do_append);
+ gInventory.notifyObservers();
+ //self->getFolderItem()->refreshFromRoot();
+ }
+ else
+ {
+ llinfos << "By the time wearable asset arrived, its inv item already pointed to a different asset." << llendl;
+ }
+ }
+ }
+ delete item_id;
+}
+
+// static
+BOOL LLWearableBridge::canEditOnAvatar(void* user_data)
+{
+ LLWearableBridge* self = (LLWearableBridge*)user_data;
+ if(!self) return FALSE;
+
+ return (gAgentWearables.isWearingItem(self->mUUID));
+}
+
+// static
+void LLWearableBridge::onEditOnAvatar(void* user_data)
+{
+ LLWearableBridge* self = (LLWearableBridge*)user_data;
+ if(self)
+ {
+ self->editOnAvatar();
+ }
+}
+
+void LLWearableBridge::editOnAvatar()
+{
+ const LLWearable* wearable = gAgentWearables.getWearableFromItemID(mUUID);
+ if( wearable )
+ {
+ // Set the tab to the right wearable.
+ if (gFloaterCustomize)
+ gFloaterCustomize->setCurrentWearableType( wearable->getType() );
+
+ if( CAMERA_MODE_CUSTOMIZE_AVATAR != gAgent.getCameraMode() )
+ {
+ // Start Avatar Customization
+ gAgent.changeCameraToCustomizeAvatar();
+ }
+ }
+}
+
+// static
+BOOL LLWearableBridge::canRemoveFromAvatar(void* user_data)
+{
+ LLWearableBridge* self = (LLWearableBridge*)user_data;
+ if( self && (LLAssetType::AT_BODYPART != self->mAssetType) )
+ {
+ return gAgentWearables.isWearingItem( self->mUUID );
+ }
+ return FALSE;
+}
+
+// static
+void LLWearableBridge::onRemoveFromAvatar(void* user_data)
+{
+ LLWearableBridge* self = (LLWearableBridge*)user_data;
+ if(!self) return;
+ if(gAgentWearables.isWearingItem(self->mUUID))
+ {
+ LLViewerInventoryItem* item = self->getItem();
+ if (item)
+ {
+ LLUUID parent_id = item->getParentUUID();
+ LLWearableList::instance().getAsset(item->getAssetUUID(),
+ item->getName(),
+ item->getType(),
+ onRemoveFromAvatarArrived,
+ new OnRemoveStruct(LLUUID(self->mUUID)));
+ }
+ }
+}
+
+// static
+void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
+ void* userdata)
+{
+ OnRemoveStruct *on_remove_struct = (OnRemoveStruct*) userdata;
+ const LLUUID &item_id = gInventory.getLinkedItemID(on_remove_struct->mUUID);
+ if(wearable)
+ {
+ if( gAgentWearables.isWearingItem( item_id ) )
+ {
+ EWearableType type = wearable->getType();
+
+ if( !(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR || type==WT_EYES ) ) //&&
+ //!((!gAgent.isTeen()) && ( type==WT_UNDERPANTS || type==WT_UNDERSHIRT )) )
+ {
+ // MULTI_WEARABLE: FIXME HACK - always remove all
+ bool do_remove_all = false;
+ gAgentWearables.removeWearable( type, do_remove_all, 0 );
+ }
+ }
+ }
+
+ // Find and remove this item from the COF.
+ LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF());
+ llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF.
+ for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
+ iter != items.end();
+ ++iter)
+ {
+ const LLViewerInventoryItem *linked_item = (*iter);
+ const LLUUID &item_id = linked_item->getUUID();
+ gInventory.purgeObject(item_id);
+ }
+ gInventory.notifyObservers();
+
+ delete on_remove_struct;
+}
+
+LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
+ const LLUUID& uuid,LLInventoryModel* model)
+{
+ LLInvFVBridgeAction* action = NULL;
+ switch(asset_type)
+ {
+ case LLAssetType::AT_TEXTURE:
+ action = new LLTextureBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_SOUND:
+ action = new LLSoundBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_LANDMARK:
+ action = new LLLandmarkBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_CALLINGCARD:
+ action = new LLCallingCardBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_OBJECT:
+ action = new LLObjectBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_NOTECARD:
+ action = new LLNotecardBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_ANIMATION:
+ action = new LLAnimationBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_GESTURE:
+ action = new LLGestureBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_LSL_TEXT:
+ action = new LLLSLTextBridgeAction(uuid,model);
+ break;
+
+ case LLAssetType::AT_CLOTHING:
+ case LLAssetType::AT_BODYPART:
+ action = new LLWearableBridgeAction(uuid,model);
+
+ break;
+
+ default:
+ break;
+ }
+ return action;
+}
+
+//static
+void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
+ const LLUUID& uuid,LLInventoryModel* model)
+{
+ LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
+ if(action)
+ {
+ action->doIt();
+ delete action;
+ }
+}
+
+//static
+void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
+{
+ LLAssetType::EType asset_type = model->getItem(uuid)->getType();
+ LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
+ if(action)
+ {
+ action->doIt();
+ delete action;
+ }
+}
+
+LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
+{
+ if(mModel)
+ return (LLViewerInventoryItem*)mModel->getItem(mUUID);
+ return NULL;
+}
+
+//virtual
+void LLTextureBridgeAction::doIt()
+{
+ if (getItem())
+ {
+ LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+//virtual
+void LLSoundBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+
+//virtual
+void LLLandmarkBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if( item )
+ {
+ // Opening (double-clicking) a landmark immediately teleports,
+ // but warns you the first time.
+ LLSD payload;
+ payload["asset_id"] = item->getAssetUUID();
+ LLNotifications::instance().add("TeleportFromLandmark", LLSD(), payload);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+
+//virtual
+void LLCallingCardBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if(item && item->getCreatorUUID().notNull())
+ {
+ LLAvatarActions::showProfile(item->getCreatorUUID());
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+//virtual
+void
+LLNotecardBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+//virtual
+void LLGestureBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
+ preview->setFocus(TRUE);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+//virtual
+void LLAnimationBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+
+//virtual
+void LLObjectBridgeAction::doIt()
+{
+ LLFloaterReg::showInstance("properties", mUUID);
+
+ LLInvFVBridgeAction::doIt();
+}
+
+
+//virtual
+void LLLSLTextBridgeAction::doIt()
+{
+ LLViewerInventoryItem* item = getItem();
+ if (item)
+ {
+ LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+
+BOOL LLWearableBridgeAction::isInTrash() const
+{
+ if(!mModel) return FALSE;
+ const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ return mModel->isObjectDescendentOf(mUUID, trash_id);
+}
+
+BOOL LLWearableBridgeAction::isAgentInventory() const
+{
+ if(!mModel) return FALSE;
+ if(gInventory.getRootFolderID() == mUUID) return TRUE;
+ return mModel->isObjectDescendentOf(mUUID, gInventory.getRootFolderID());
+}
+
+void LLWearableBridgeAction::wearOnAvatar()
+{
+ // Don't wear anything until initial wearables are loaded, can
+ // destroy clothing items.
+ if (!gAgentWearables.areWearablesLoaded())
+ {
+ LLNotifications::instance().add("CanNotChangeAppearanceUntilLoaded");
+ return;
+ }
+
+ LLViewerInventoryItem* item = getItem();
+ if(item)
+ {
+ if(!isAgentInventory())
+ {
+ LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ else
+ {
+ wear_inventory_item_on_avatar(item);
+ }
+ }
+}
+
+//virtual
+void LLWearableBridgeAction::doIt()
+{
+ if(isInTrash())
+ {
+ LLNotifications::instance().add("CannotWearTrash");
+ }
+ else if(isAgentInventory())
+ {
+ if(!gAgentWearables.isWearingItem(mUUID))
+ {
+ wearOnAvatar();
+ }
+ }
+ else
+ {
+ // must be in the inventory library. copy it to our inventory
+ // and put it on right away.
+ LLViewerInventoryItem* item = getItem();
+ if(item && item->isComplete())
+ {
+ LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+ copy_inventory_item(
+ gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ else if(item)
+ {
+ // *TODO: We should fetch the item details, and then do
+ // the operation above.
+ LLNotifications::instance().add("CannotWearInfoNotComplete");
+ }
+ }
+
+ LLInvFVBridgeAction::doIt();
+}
+
+// +=================================================+
+// | LLLinkItemBridge |
+// +=================================================+
+// For broken links
+
+std::string LLLinkItemBridge::sPrefix("Link: ");
+
+
+LLUIImagePtr LLLinkItemBridge::getIcon() const
+{
+ if (LLViewerInventoryItem *item = getItem())
+ {
+ return get_item_icon(item->getActualType(), LLInventoryType::IT_NONE, 0, FALSE);
+ }
+ return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE);
+}
+
+void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ // *TODO: Translate
+ lldebugs << "LLLink::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Delete"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Delete"));
+ }
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+
+// +=================================================+
+// | LLLinkBridge |
+// +=================================================+
+// For broken links.
+
+std::string LLLinkFolderBridge::sPrefix("Link: ");
+
+
+LLUIImagePtr LLLinkFolderBridge::getIcon() const
+{
+ LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+ if (LLViewerInventoryItem *item = getItem())
+ {
+ if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
+ {
+ preferred_type = cat->getPreferredType();
+ }
+ }
+ return LLFolderBridge::getIcon(preferred_type);
+}
+
+void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+ // *TODO: Translate
+ lldebugs << "LLLink::buildContextMenu()" << llendl;
+ std::vector<std::string> items;
+ std::vector<std::string> disabled_items;
+
+ if(isInTrash())
+ {
+ items.push_back(std::string("Purge Item"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Purge Item"));
+ }
+
+ items.push_back(std::string("Restore Item"));
+ }
+ else
+ {
+ items.push_back(std::string("Find Original"));
+ items.push_back(std::string("Delete"));
+ if (!isItemRemovable())
+ {
+ disabled_items.push_back(std::string("Delete"));
+ }
+ }
+ hide_context_entries(menu, items, disabled_items);
+}
+
+void LLLinkFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+{
+ if ("goto" == action)
+ {
+ gotoItem(folder);
+ return;
+ }
+ LLItemBridge::performAction(folder,model,action);
+}
+
+void LLLinkFolderBridge::gotoItem(LLFolderView *folder)
+{
+ const LLUUID &cat_uuid = getFolderID();
+ if (!cat_uuid.isNull())
+ {
+ if (LLFolderViewItem *base_folder = folder->getItemByID(cat_uuid))
+ {
+ if (LLInventoryModel* model = getInventoryModel())
+ {
+ model->fetchDescendentsOf(cat_uuid);
+ }
+ base_folder->setOpen(TRUE);
+ folder->setSelectionFromRoot(base_folder,TRUE);
+ folder->scrollToShowSelection();
+ }
+ }
+}
+
+const LLUUID &LLLinkFolderBridge::getFolderID() const
+{
+ if (LLViewerInventoryItem *link_item = getItem())
+ {
+ if (const LLViewerInventoryCategory *cat = link_item->getLinkedCategory())
+ {
+ const LLUUID& cat_uuid = cat->getUUID();
+ return cat_uuid;
+ }
+ }
+ return LLUUID::null;
+}
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index efd40576a7..95cc68ddbe 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -1,136 +1,136 @@
-/**
- * @file llinventoryfunctions.h
- * @brief Miscellaneous inventory-related functions and classes
- * class definition
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLINVENTORYFUNCTIONS_H
-#define LL_LLINVENTORYFUNCTIONS_H
-
-#include "llassetstorage.h"
-#include "lldarray.h"
-#include "llfloater.h"
-#include "llinventory.h"
-#include "llinventoryfilter.h"
-#include "llfolderview.h"
-#include "llinventorymodel.h"
-#include "lluictrlfactory.h"
-#include <set>
-
-
-class LLFolderViewItem;
-class LLInventoryFilter;
-class LLInventoryModel;
-class LLInventoryPanel;
-class LLInvFVBridge;
-class LLInventoryFVBridgeBuilder;
-class LLMenuBarGL;
-class LLCheckBoxCtrl;
-class LLSpinCtrl;
-class LLScrollContainer;
-class LLTextBox;
-class LLIconCtrl;
-class LLSaveFolderState;
-class LLFilterEditor;
-class LLTabContainer;
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// This is a collection of miscellaneous functions and classes
-// that don't fit cleanly into any other class header.
-//
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLInventoryState
-{
-public:
- // HACK: Until we can route this info through the instant message hierarchy
- static BOOL sWearNewClothing;
- static LLUUID sWearNewClothingTransactionID; // wear all clothing in this transaction
-};
-
-class LLSelectFirstFilteredItem : public LLFolderViewFunctor
-{
-public:
- LLSelectFirstFilteredItem() : mItemSelected(FALSE) {}
- virtual ~LLSelectFirstFilteredItem() {}
- virtual void doFolder(LLFolderViewFolder* folder);
- virtual void doItem(LLFolderViewItem* item);
- BOOL wasItemSelected() { return mItemSelected; }
-protected:
- BOOL mItemSelected;
-};
-
-class LLOpenFilteredFolders : public LLFolderViewFunctor
-{
-public:
- LLOpenFilteredFolders() {}
- virtual ~LLOpenFilteredFolders() {}
- virtual void doFolder(LLFolderViewFolder* folder);
- virtual void doItem(LLFolderViewItem* item);
-};
-
-class LLSaveFolderState : public LLFolderViewFunctor
-{
-public:
- LLSaveFolderState() : mApply(FALSE) {}
- virtual ~LLSaveFolderState() {}
- virtual void doFolder(LLFolderViewFolder* folder);
- virtual void doItem(LLFolderViewItem* item) {}
- void setApply(BOOL apply);
- void clearOpenFolders() { mOpenFolders.clear(); }
-protected:
- std::set<LLUUID> mOpenFolders;
- BOOL mApply;
-};
-
-class LLOpenFoldersWithSelection : public LLFolderViewFunctor
-{
-public:
- LLOpenFoldersWithSelection() {}
- virtual ~LLOpenFoldersWithSelection() {}
- virtual void doFolder(LLFolderViewFolder* folder);
- virtual void doItem(LLFolderViewItem* item);
-};
-
-const std::string& get_item_icon_name(LLAssetType::EType asset_type,
- LLInventoryType::EType inventory_type,
- U32 attachment_point,
- BOOL item_is_multi );
-
-LLUIImagePtr get_item_icon(LLAssetType::EType asset_type,
- LLInventoryType::EType inventory_type,
- U32 attachment_point,
- BOOL item_is_multi );
-
-#endif // LL_LLINVENTORYFUNCTIONS_H
-
-
-
+/**
+ * @file llinventoryfunctions.h
+ * @brief Miscellaneous inventory-related functions and classes
+ * class definition
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLINVENTORYFUNCTIONS_H
+#define LL_LLINVENTORYFUNCTIONS_H
+
+#include "llassetstorage.h"
+#include "lldarray.h"
+#include "llfloater.h"
+#include "llinventory.h"
+#include "llinventoryfilter.h"
+#include "llfolderview.h"
+#include "llinventorymodel.h"
+#include "lluictrlfactory.h"
+#include <set>
+
+
+class LLFolderViewItem;
+class LLInventoryFilter;
+class LLInventoryModel;
+class LLInventoryPanel;
+class LLInvFVBridge;
+class LLInventoryFVBridgeBuilder;
+class LLMenuBarGL;
+class LLCheckBoxCtrl;
+class LLSpinCtrl;
+class LLScrollContainer;
+class LLTextBox;
+class LLIconCtrl;
+class LLSaveFolderState;
+class LLFilterEditor;
+class LLTabContainer;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// This is a collection of miscellaneous functions and classes
+// that don't fit cleanly into any other class header.
+//
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLInventoryState
+{
+public:
+ // HACK: Until we can route this info through the instant message hierarchy
+ static BOOL sWearNewClothing;
+ static LLUUID sWearNewClothingTransactionID; // wear all clothing in this transaction
+};
+
+class LLSelectFirstFilteredItem : public LLFolderViewFunctor
+{
+public:
+ LLSelectFirstFilteredItem() : mItemSelected(FALSE) {}
+ virtual ~LLSelectFirstFilteredItem() {}
+ virtual void doFolder(LLFolderViewFolder* folder);
+ virtual void doItem(LLFolderViewItem* item);
+ BOOL wasItemSelected() { return mItemSelected; }
+protected:
+ BOOL mItemSelected;
+};
+
+class LLOpenFilteredFolders : public LLFolderViewFunctor
+{
+public:
+ LLOpenFilteredFolders() {}
+ virtual ~LLOpenFilteredFolders() {}
+ virtual void doFolder(LLFolderViewFolder* folder);
+ virtual void doItem(LLFolderViewItem* item);
+};
+
+class LLSaveFolderState : public LLFolderViewFunctor
+{
+public:
+ LLSaveFolderState() : mApply(FALSE) {}
+ virtual ~LLSaveFolderState() {}
+ virtual void doFolder(LLFolderViewFolder* folder);
+ virtual void doItem(LLFolderViewItem* item) {}
+ void setApply(BOOL apply);
+ void clearOpenFolders() { mOpenFolders.clear(); }
+protected:
+ std::set<LLUUID> mOpenFolders;
+ BOOL mApply;
+};
+
+class LLOpenFoldersWithSelection : public LLFolderViewFunctor
+{
+public:
+ LLOpenFoldersWithSelection() {}
+ virtual ~LLOpenFoldersWithSelection() {}
+ virtual void doFolder(LLFolderViewFolder* folder);
+ virtual void doItem(LLFolderViewItem* item);
+};
+
+const std::string& get_item_icon_name(LLAssetType::EType asset_type,
+ LLInventoryType::EType inventory_type,
+ U32 attachment_point,
+ BOOL item_is_multi );
+
+LLUIImagePtr get_item_icon(LLAssetType::EType asset_type,
+ LLInventoryType::EType inventory_type,
+ U32 attachment_point,
+ BOOL item_is_multi );
+
+#endif // LL_LLINVENTORYFUNCTIONS_H
+
+
+
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 99591dea57..327a735f78 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -1,890 +1,890 @@
-/*
- * @file llinventorypanel.cpp
- * @brief Implementation of the inventory panel and associated stuff.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include <utility> // for std::pair<>
-
-#include "llinventorypanel.h"
-
-#include "llagent.h"
-#include "llagentwearables.h"
-#include "llappearancemgr.h"
-#include "llfloaterreg.h"
-#include "llimview.h"
-#include "llinventorybridge.h"
-#include "llscrollcontainer.h"
-#include "llviewerfoldertype.h"
-#include "llimfloater.h"
-#include "llvoavatarself.h"
-
-static LLDefaultChildRegistry::Register<LLInventoryPanel> r("inventory_panel");
-
-const std::string LLInventoryPanel::DEFAULT_SORT_ORDER = std::string("InventorySortOrder");
-const std::string LLInventoryPanel::RECENTITEMS_SORT_ORDER = std::string("RecentItemsSortOrder");
-const std::string LLInventoryPanel::INHERIT_SORT_ORDER = std::string("");
-static const LLInventoryFVBridgeBuilder INVENTORY_BRIDGE_BUILDER;
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInventoryPanelObserver
-//
-// Bridge to support knowing when the inventory has changed.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLInventoryPanelObserver : public LLInventoryObserver
-{
-public:
- LLInventoryPanelObserver(LLInventoryPanel* ip) : mIP(ip) {}
- virtual ~LLInventoryPanelObserver() {}
- virtual void changed(U32 mask);
-protected:
- LLInventoryPanel* mIP;
-};
-
-LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
- LLPanel(p),
- mInventoryObserver(NULL),
- mFolders(NULL),
- mScroller(NULL),
- mSortOrderSetting(p.sort_order_setting),
- mInventory(p.inventory),
- mAllowMultiSelect(p.allow_multi_select),
- mHasInventoryConnection(false),
- mStartFolderString(p.start_folder),
- mBuildDefaultHierarchy(true),
- mInvFVBridgeBuilder(NULL)
-{
- mInvFVBridgeBuilder = &INVENTORY_BRIDGE_BUILDER;
-
- // contex menu callbacks
- mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLInventoryPanel::doToSelected, this, _2));
- mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
- mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
- mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLInventoryPanel::doCreate, this, _2));
- mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2));
- mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this));
-
- setBackgroundColor(LLUIColorTable::instance().getColor("InventoryBackgroundColor"));
- setBackgroundVisible(TRUE);
- setBackgroundOpaque(TRUE);
-}
-
-BOOL LLInventoryPanel::postBuild()
-{
- LLMemType mt(LLMemType::MTYPE_INVENTORY_POST_BUILD);
-
- mCommitCallbackRegistrar.pushScope(); // registered as a widget; need to push callback scope ourselves
-
- // create root folder
- {
- LLRect folder_rect(0,
- 0,
- getRect().getWidth(),
- 0);
- LLFolderView::Params p;
- p.name = getName();
- p.rect = folder_rect;
- p.parent_panel = this;
- p.tool_tip = p.name;
- mFolders = LLUICtrlFactory::create<LLFolderView>(p);
- mFolders->setAllowMultiSelect(mAllowMultiSelect);
- }
-
- mCommitCallbackRegistrar.popScope();
-
- mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
-
- // scroller
- {
- LLRect scroller_view_rect = getRect();
- scroller_view_rect.translate(-scroller_view_rect.mLeft, -scroller_view_rect.mBottom);
- LLScrollContainer::Params p;
- p.name("Inventory Scroller");
- p.rect(scroller_view_rect);
- p.follows.flags(FOLLOWS_ALL);
- p.reserve_scroll_corner(true);
- p.tab_stop(true);
- mScroller = LLUICtrlFactory::create<LLScrollContainer>(p);
- }
- addChild(mScroller);
- mScroller->addChild(mFolders);
-
- mFolders->setScrollContainer(mScroller);
-
- // set up the callbacks from the inventory we're viewing, and then
- // build everything.
- mInventoryObserver = new LLInventoryPanelObserver(this);
- mInventory->addObserver(mInventoryObserver);
-
- // build view of inventory if we need default full hierarchy and inventory ready, otherwise wait for modelChanged() callback
- if (mBuildDefaultHierarchy && mInventory->isInventoryUsable() && !mHasInventoryConnection)
- {
- rebuildViews();
- mHasInventoryConnection = true;
- defaultOpenInventory();
- }
-
- if (mSortOrderSetting != INHERIT_SORT_ORDER)
- {
- setSortOrder(gSavedSettings.getU32(mSortOrderSetting));
- }
- else
- {
- setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER));
- }
- mFolders->setSortOrder(mFolders->getFilter()->getSortOrder());
-
- return TRUE;
-}
-
-LLInventoryPanel::~LLInventoryPanel()
-{
- // should this be a global setting?
- if (mFolders)
- {
- U32 sort_order = mFolders->getSortOrder();
- if (mSortOrderSetting != INHERIT_SORT_ORDER)
- {
- gSavedSettings.setU32(mSortOrderSetting, sort_order);
- }
- }
-
- // LLView destructor will take care of the sub-views.
- mInventory->removeObserver(mInventoryObserver);
- delete mInventoryObserver;
- mScroller = NULL;
-}
-
-LLMemType mt(LLMemType::MTYPE_INVENTORY_FROM_XML); // ! BUG ! Should this be removed?
-void LLInventoryPanel::draw()
-{
- // select the desired item (in case it wasn't loaded when the selection was requested)
- mFolders->updateSelection();
- LLPanel::draw();
-}
-
-LLInventoryFilter* LLInventoryPanel::getFilter()
-{
- if (mFolders) return mFolders->getFilter();
- return NULL;
-}
-
-void LLInventoryPanel::setFilterTypes(U64 filter_types, BOOL filter_for_categories)
-{
- mFolders->getFilter()->setFilterTypes(filter_types, filter_for_categories);
-}
-
-void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask)
-{
- mFolders->getFilter()->setFilterPermissions(filter_perm_mask);
-}
-
-void LLInventoryPanel::setFilterSubString(const std::string& string)
-{
- mFolders->getFilter()->setFilterSubString(string);
-}
-
-void LLInventoryPanel::setSortOrder(U32 order)
-{
- mFolders->getFilter()->setSortOrder(order);
- if (mFolders->getFilter()->isModified())
- {
- mFolders->setSortOrder(order);
- // try to keep selection onscreen, even if it wasn't to start with
- mFolders->scrollToShowSelection();
- }
-}
-
-void LLInventoryPanel::setSinceLogoff(BOOL sl)
-{
- mFolders->getFilter()->setDateRangeLastLogoff(sl);
-}
-
-void LLInventoryPanel::setHoursAgo(U32 hours)
-{
- mFolders->getFilter()->setHoursAgo(hours);
-}
-
-void LLInventoryPanel::setShowFolderState(LLInventoryFilter::EFolderShow show)
-{
- mFolders->getFilter()->setShowFolderState(show);
-}
-
-LLInventoryFilter::EFolderShow LLInventoryPanel::getShowFolderState()
-{
- return mFolders->getFilter()->getShowFolderState();
-}
-
-static LLFastTimer::DeclareTimer FTM_REFRESH("Inventory Refresh");
-
-void LLInventoryPanel::modelChanged(U32 mask)
-{
- LLFastTimer t2(FTM_REFRESH);
-
- bool handled = false;
-
- // inventory just initialized, do complete build
- if ((mask & LLInventoryObserver::ADD) && gInventory.getChangedIDs().empty() && !mHasInventoryConnection)
- {
- rebuildViews();
- mHasInventoryConnection = true;
- defaultOpenInventory();
- return;
- }
-
- if (mask & LLInventoryObserver::LABEL)
- {
- handled = true;
- // label change - empty out the display name for each object
- // in this change set.
- 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();
- LLFolderViewItem* view = NULL;
- LLInvFVBridge* bridge = NULL;
- for (;id_it != id_end; ++id_it)
- {
- view = mFolders->getItemByID(*id_it);
- if(view)
- {
- // request refresh on this item (also flags for filtering)
- bridge = (LLInvFVBridge*)view->getListener();
- if(bridge)
- { // Clear the display name first, so it gets properly re-built during refresh()
- bridge->clearDisplayName();
- }
- view->refresh();
- }
- }
- }
-
- // We don't really care which of these masks the item is actually flagged with, since the masks
- // may not be accurate (e.g. in the main inventory panel, I move an item from My Inventory into
- // Landmarks; this is a STRUCTURE change for that panel but is an ADD change for the Landmarks
- // panel). What's relevant is that the item and UI are probably out of sync and thus need to be
- // resynchronized.
- if (mask & (LLInventoryObserver::STRUCTURE |
- LLInventoryObserver::ADD |
- LLInventoryObserver::REMOVE))
- {
- handled = true;
- // Record which folders are open by uuid.
- LLInventoryModel* model = getModel();
- if (model)
- {
- 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)
- {
- // sync view with model
- LLInventoryObject* model_item = model->getObject(*id_it);
- LLFolderViewItem* view_item = mFolders->getItemByID(*id_it);
-
- // Item exists in memory but a UI element hasn't been created for it.
- if (model_item && !view_item)
- {
- // Add the UI element for this item.
- buildNewViews(*id_it);
- // Select any newly created object that has the auto rename at top of folder root set.
- if(mFolders->getRoot()->needsAutoRename())
- {
- setSelection(*id_it, FALSE);
- }
- }
-
- // This item already exists in both memory and UI. It was probably moved
- // around in the panel's directory structure (i.e. reparented).
- if (model_item && view_item)
- {
- LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolders->getItemByID(model_item->getParentUUID());
-
- // Item has been moved.
- if (view_item->getParentFolder() != new_parent)
- {
- if (new_parent != NULL)
- {
- // Item is to be moved and we found its new parent in the panel's directory, so move the item's UI.
- view_item->getParentFolder()->extractItem(view_item);
- view_item->addToFolder(new_parent, mFolders);
- }
- else
- {
- // Item is to be moved outside the panel's directory (e.g. moved to trash for a panel that
- // doesn't include trash). Just remove the item's UI.
- view_item->destroyView();
- }
- }
- }
-
- // This item has been removed from memory, but its associated UI element still exists.
- if (!model_item && view_item)
- {
- // Remove the item's UI.
- view_item->destroyView();
- }
- }
- }
- }
-
- if (!handled)
- {
- // it's a small change that only requires a refresh.
- // *TODO: figure out a more efficient way to do the refresh
- // since it is expensive on large inventories
- mFolders->refresh();
- }
-}
-
-
-void LLInventoryPanel::rebuildViews()
-{
- // Determine the root folder and rebuild the views starting
- // at that folder.
- const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(mStartFolderString);
-
- if ("LIBRARY" == mStartFolderString)
- {
- mStartFolderID = gInventory.getLibraryRootFolderID();
- }
- else
- {
- mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);
- }
-
- rebuildViewsFor(mStartFolderID);
-}
-
-void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
-{
- LLFolderViewItem* old_view = NULL;
-
- // get old LLFolderViewItem
- old_view = mFolders->getItemByID(id);
- if (old_view && id.notNull())
- {
- old_view->destroyView();
- }
-
- buildNewViews(id);
-}
-
-void LLInventoryPanel::buildNewViews(const LLUUID& id)
-{
- LLMemType mt(LLMemType::MTYPE_INVENTORY_BUILD_NEW_VIEWS);
- LLFolderViewItem* itemp = NULL;
- LLInventoryObject* objectp = gInventory.getObject(id);
- if (objectp)
- {
- const LLUUID &parent_id = objectp->getParentUUID();
- LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolders->getItemByID(parent_id);
- if (id == mStartFolderID)
- parent_folder = mFolders;
-
- if (!parent_folder)
- {
- // This item exists outside the inventory's hierarchy, so don't add it.
- return;
- }
-
- if (objectp->getType() <= LLAssetType::AT_NONE ||
- objectp->getType() >= LLAssetType::AT_COUNT)
- {
- llwarns << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " <<
- ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() << llendl;
- return;
- }
-
- if (objectp->getType() == LLAssetType::AT_CATEGORY &&
- objectp->getActualType() != LLAssetType::AT_LINK_FOLDER)
- {
- LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(objectp->getType(),
- objectp->getType(),
- LLInventoryType::IT_CATEGORY,
- this,
- objectp->getUUID());
-
- if (new_listener)
- {
- LLFolderViewFolder::Params p;
- p.name = new_listener->getDisplayName();
- p.icon = new_listener->getIcon();
- p.root = mFolders;
- p.listener = new_listener;
- p.tool_tip = p.name;
- LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(p);
- folderp->setItemSortOrder(mFolders->getSortOrder());
- itemp = folderp;
-
- // Hide the root folder, so we can show the contents of a folder
- // flat but still have the parent folder present for listener-related
- // operations.
- if (id == mStartFolderID)
- {
- folderp->setDontShowInHierarchy(TRUE);
- }
- }
- }
- else
- {
- // Build new view for item
- LLInventoryItem* item = (LLInventoryItem*)objectp;
- LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(item->getType(),
- item->getActualType(),
- item->getInventoryType(),
- this,
- item->getUUID(),
- item->getFlags());
-
- if (new_listener)
- {
- LLFolderViewItem::Params params;
- params.name(new_listener->getDisplayName());
- params.icon(new_listener->getIcon());
- params.creation_date(new_listener->getCreationDate());
- params.root(mFolders);
- params.listener(new_listener);
- params.rect(LLRect (0, 0, 0, 0));
- params.tool_tip = params.name;
- itemp = LLUICtrlFactory::create<LLFolderViewItem> (params);
- }
- }
-
- if (itemp)
- {
- itemp->addToFolder(parent_folder, mFolders);
- }
- }
-
- // If this is a folder, add the children of the folder and recursively add any
- // child folders.
- if ((id == mStartFolderID) ||
- (objectp && objectp->getType() == LLAssetType::AT_CATEGORY))
- {
- LLViewerInventoryCategory::cat_array_t* categories;
- LLViewerInventoryItem::item_array_t* items;
-
- mInventory->lockDirectDescendentArrays(id, categories, items);
- if(categories)
- {
- S32 count = categories->count();
- for(S32 i = 0; i < count; ++i)
- {
- LLInventoryCategory* cat = categories->get(i);
- buildNewViews(cat->getUUID());
- }
- }
- if(items)
- {
- S32 count = items->count();
- for(S32 i = 0; i < count; ++i)
- {
- LLInventoryItem* item = items->get(i);
- buildNewViews(item->getUUID());
- }
- }
- mInventory->unlockDirectDescendentArrays(id);
- }
-}
-
-// bit of a hack to make sure the inventory is open.
-void LLInventoryPanel::defaultOpenInventory()
-{
- const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(mStartFolderString);
- if (preferred_type != LLFolderType::FT_NONE)
- {
- const std::string& top_level_folder_name = LLViewerFolderType::lookupNewCategoryName(preferred_type);
- mFolders->openFolder(top_level_folder_name);
- }
- else
- {
- // Get the first child (it should be "My Inventory") and
- // open it up by name (just to make sure the first child is actually a folder).
- LLView* first_child = mFolders->getFirstChild();
- const std::string& first_child_name = first_child->getName();
- mFolders->openFolder(first_child_name);
- }
-}
-
-struct LLConfirmPurgeData
-{
- LLUUID mID;
- LLInventoryModel* mModel;
-};
-
-class LLIsNotWorn : public LLInventoryCollectFunctor
-{
-public:
- LLIsNotWorn() {}
- virtual ~LLIsNotWorn() {}
- virtual bool operator()(LLInventoryCategory* cat,
- LLInventoryItem* item)
- {
- return !gAgentWearables.isWearingItem(item->getUUID());
- }
-};
-
-class LLOpenFolderByID : public LLFolderViewFunctor
-{
-public:
- LLOpenFolderByID(const LLUUID& id) : mID(id) {}
- virtual ~LLOpenFolderByID() {}
- virtual void doFolder(LLFolderViewFolder* folder)
- {
- if (folder->getListener() && folder->getListener()->getUUID() == mID) folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_UP);
- }
- virtual void doItem(LLFolderViewItem* item) {}
-protected:
- const LLUUID& mID;
-};
-
-
-void LLInventoryPanel::openSelected()
-{
- LLFolderViewItem* folder_item = mFolders->getCurSelectedItem();
- if(!folder_item) return;
- LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener();
- if(!bridge) return;
- bridge->openItem();
-}
-
-BOOL LLInventoryPanel::handleHover(S32 x, S32 y, MASK mask)
-{
- BOOL handled = LLView::handleHover(x, y, mask);
- if(handled)
- {
- ECursorType cursor = getWindow()->getCursor();
- if (LLInventoryModel::backgroundFetchActive() && cursor == UI_CURSOR_ARROW)
- {
- // replace arrow cursor with arrow and hourglass cursor
- getWindow()->setCursor(UI_CURSOR_WORKING);
- }
- }
- else
- {
- getWindow()->setCursor(UI_CURSOR_ARROW);
- }
- return TRUE;
-}
-
-BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg)
-{
-
- BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-
- if (handled)
- {
- mFolders->setDragAndDropThisFrame();
- }
-
- return handled;
-}
-
-void LLInventoryPanel::onFocusLost()
-{
- // inventory no longer handles cut/copy/paste/delete
- if (LLEditMenuHandler::gEditMenuHandler == mFolders)
- {
- LLEditMenuHandler::gEditMenuHandler = NULL;
- }
-
- LLPanel::onFocusLost();
-}
-
-void LLInventoryPanel::onFocusReceived()
-{
- // inventory now handles cut/copy/paste/delete
- LLEditMenuHandler::gEditMenuHandler = mFolders;
-
- LLPanel::onFocusReceived();
-}
-
-
-void LLInventoryPanel::openAllFolders()
-{
- mFolders->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
- mFolders->arrangeAll();
-}
-
-void LLInventoryPanel::openDefaultFolderForType(LLFolderType::EType type)
-{
- LLUUID category_id = mInventory->findCategoryUUIDForType(type);
- LLOpenFolderByID opener(category_id);
- mFolders->applyFunctorRecursively(opener);
-}
-
-void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus)
-{
- // Don't select objects in COF (e.g. to prevent refocus when items are worn).
- const LLInventoryObject *obj = gInventory.getObject(obj_id);
- if (obj && obj->getParentUUID() == LLAppearanceManager::instance().getCOF())
- {
- return;
- }
- mFolders->setSelectionByID(obj_id, take_keyboard_focus);
-}
-
-void LLInventoryPanel::clearSelection()
-{
- mFolders->clearSelection();
-}
-
-void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& items, BOOL user_action)
-{
- LLFolderView* fv = getRootFolder();
- if (fv->needsAutoRename()) // auto-selecting a new user-created asset and preparing to rename
- {
- fv->setNeedsAutoRename(FALSE);
- if (items.size()) // new asset is visible and selected
- {
- fv->startRenamingSelectedItem();
- }
- }
- // Seraph - Put determineFolderType in here for ensemble typing?
-}
-
-//----------------------------------------------------------------------------
-
-void LLInventoryPanel::doToSelected(const LLSD& userdata)
-{
- mFolders->doToSelected(&gInventory, userdata);
-}
-
-void LLInventoryPanel::doCreate(const LLSD& userdata)
-{
- menu_create_inventory_item(mFolders, LLFolderBridge::sSelf, userdata);
-}
-
-bool LLInventoryPanel::beginIMSession()
-{
- std::set<LLUUID> selected_items;
- mFolders->getSelectionList(selected_items);
-
- std::string name;
- static int session_num = 1;
-
- LLDynamicArray<LLUUID> members;
- EInstantMessage type = IM_SESSION_CONFERENCE_START;
-
- std::set<LLUUID>::const_iterator iter;
- for (iter = selected_items.begin(); iter != selected_items.end(); iter++)
- {
-
- LLUUID item = *iter;
- LLFolderViewItem* folder_item = mFolders->getItemByID(item);
-
- if(folder_item)
- {
- LLFolderViewEventListener* fve_listener = folder_item->getListener();
- if (fve_listener && (fve_listener->getInventoryType() == LLInventoryType::IT_CATEGORY))
- {
-
- LLFolderBridge* bridge = (LLFolderBridge*)folder_item->getListener();
- if(!bridge) return true;
- LLViewerInventoryCategory* cat = bridge->getCategory();
- if(!cat) return true;
- name = cat->getName();
- LLUniqueBuddyCollector is_buddy;
- LLInventoryModel::cat_array_t cat_array;
- LLInventoryModel::item_array_t item_array;
- gInventory.collectDescendentsIf(bridge->getUUID(),
- cat_array,
- item_array,
- LLInventoryModel::EXCLUDE_TRASH,
- is_buddy);
- S32 count = item_array.count();
- if(count > 0)
- {
- LLFloaterReg::showInstance("communicate");
- // create the session
- LLAvatarTracker& at = LLAvatarTracker::instance();
- LLUUID id;
- for(S32 i = 0; i < count; ++i)
- {
- id = item_array.get(i)->getCreatorUUID();
- if(at.isBuddyOnline(id))
- {
- members.put(id);
- }
- }
- }
- }
- else
- {
- LLFolderViewItem* folder_item = mFolders->getItemByID(item);
- if(!folder_item) return true;
- LLInvFVBridge* listenerp = (LLInvFVBridge*)folder_item->getListener();
-
- if (listenerp->getInventoryType() == LLInventoryType::IT_CALLINGCARD)
- {
- LLInventoryItem* inv_item = gInventory.getItem(listenerp->getUUID());
-
- if (inv_item)
- {
- LLAvatarTracker& at = LLAvatarTracker::instance();
- LLUUID id = inv_item->getCreatorUUID();
-
- if(at.isBuddyOnline(id))
- {
- members.put(id);
- }
- }
- } //if IT_CALLINGCARD
- } //if !IT_CATEGORY
- }
- } //for selected_items
-
- // the session_id is randomly generated UUID which will be replaced later
- // with a server side generated number
-
- if (name.empty())
- {
- name = llformat("Session %d", session_num++);
- }
-
- LLUUID session_id = gIMMgr->addSession(name, type, members[0], members);
- if (session_id != LLUUID::null)
- {
- LLIMFloater::show(session_id);
- }
-
- return true;
-}
-
-bool LLInventoryPanel::attachObject(const LLSD& userdata)
-{
- std::set<LLUUID> selected_items;
- mFolders->getSelectionList(selected_items);
-
- std::string joint_name = userdata.asString();
- LLVOAvatar *avatarp = static_cast<LLVOAvatar*>(gAgent.getAvatarObject());
- LLViewerJointAttachment* attachmentp = NULL;
- for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();
- iter != avatarp->mAttachmentPoints.end(); )
- {
- LLVOAvatar::attachment_map_t::iterator curiter = iter++;
- LLViewerJointAttachment* attachment = curiter->second;
- if (attachment->getName() == joint_name)
- {
- attachmentp = attachment;
- break;
- }
- }
- if (attachmentp == NULL)
- {
- return true;
- }
-
- for (std::set<LLUUID>::const_iterator set_iter = selected_items.begin();
- set_iter != selected_items.end();
- ++set_iter)
- {
- const LLUUID &id = *set_iter;
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(id);
- if(item && gInventory.isObjectDescendentOf(id, gInventory.getRootFolderID()))
- {
- rez_attachment(item, attachmentp);
- }
- else if(item && item->isComplete())
- {
- // must be in library. copy it to our inventory and put it on.
- LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(attachmentp);
- copy_inventory_item(gAgent.getID(),
- item->getPermissions().getOwner(),
- item->getUUID(),
- LLUUID::null,
- std::string(),
- cb);
- }
- }
- gFocusMgr.setKeyboardFocus(NULL);
-
- return true;
-}
-
-
-//----------------------------------------------------------------------------
-
-// static DEBUG ONLY:
-void LLInventoryPanel::dumpSelectionInformation(void* user_data)
-{
- LLInventoryPanel* iv = (LLInventoryPanel*)user_data;
- iv->mFolders->dumpSelectionInformation();
-}
-
-BOOL LLInventoryPanel::getSinceLogoff()
-{
- return mFolders->getFilter()->isSinceLogoff();
-}
-
-void example_param_block_usage()
-{
- LLInventoryPanel::Params param_block;
- param_block.name(std::string("inventory"));
-
- param_block.sort_order_setting(LLInventoryPanel::RECENTITEMS_SORT_ORDER);
- param_block.allow_multi_select(true);
- param_block.filter(LLInventoryPanel::Filter()
- .sort_order(1)
- .types(0xffff0000));
- param_block.inventory(&gInventory);
- param_block.has_border(true);
-
- LLUICtrlFactory::create<LLInventoryPanel>(param_block);
-
- param_block = LLInventoryPanel::Params();
- param_block.name(std::string("inventory"));
-
- //LLSD param_block_sd;
- //param_block_sd["sort_order_setting"] = LLInventoryPanel::RECENTITEMS_SORT_ORDER;
- //param_block_sd["allow_multi_select"] = true;
- //param_block_sd["filter"]["sort_order"] = 1;
- //param_block_sd["filter"]["types"] = (S32)0xffff0000;
- //param_block_sd["has_border"] = true;
-
- //LLInitParam::LLSDParser(param_block_sd).parse(param_block);
-
- LLUICtrlFactory::create<LLInventoryPanel>(param_block);
-}
-
-// +=================================================+
-// | LLInventoryPanelObserver |
-// +=================================================+
-void LLInventoryPanelObserver::changed(U32 mask)
-{
- mIP->modelChanged(mask);
-}
+/*
+ * @file llinventorypanel.cpp
+ * @brief Implementation of the inventory panel and associated stuff.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include <utility> // for std::pair<>
+
+#include "llinventorypanel.h"
+
+#include "llagent.h"
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
+#include "llfloaterreg.h"
+#include "llimview.h"
+#include "llinventorybridge.h"
+#include "llscrollcontainer.h"
+#include "llviewerfoldertype.h"
+#include "llimfloater.h"
+#include "llvoavatarself.h"
+
+static LLDefaultChildRegistry::Register<LLInventoryPanel> r("inventory_panel");
+
+const std::string LLInventoryPanel::DEFAULT_SORT_ORDER = std::string("InventorySortOrder");
+const std::string LLInventoryPanel::RECENTITEMS_SORT_ORDER = std::string("RecentItemsSortOrder");
+const std::string LLInventoryPanel::INHERIT_SORT_ORDER = std::string("");
+static const LLInventoryFVBridgeBuilder INVENTORY_BRIDGE_BUILDER;
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLInventoryPanelObserver
+//
+// Bridge to support knowing when the inventory has changed.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLInventoryPanelObserver : public LLInventoryObserver
+{
+public:
+ LLInventoryPanelObserver(LLInventoryPanel* ip) : mIP(ip) {}
+ virtual ~LLInventoryPanelObserver() {}
+ virtual void changed(U32 mask);
+protected:
+ LLInventoryPanel* mIP;
+};
+
+LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
+ LLPanel(p),
+ mInventoryObserver(NULL),
+ mFolders(NULL),
+ mScroller(NULL),
+ mSortOrderSetting(p.sort_order_setting),
+ mInventory(p.inventory),
+ mAllowMultiSelect(p.allow_multi_select),
+ mHasInventoryConnection(false),
+ mStartFolderString(p.start_folder),
+ mBuildDefaultHierarchy(true),
+ mInvFVBridgeBuilder(NULL)
+{
+ mInvFVBridgeBuilder = &INVENTORY_BRIDGE_BUILDER;
+
+ // contex menu callbacks
+ mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLInventoryPanel::doToSelected, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
+ mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
+ mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLInventoryPanel::doCreate, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this));
+
+ setBackgroundColor(LLUIColorTable::instance().getColor("InventoryBackgroundColor"));
+ setBackgroundVisible(TRUE);
+ setBackgroundOpaque(TRUE);
+}
+
+BOOL LLInventoryPanel::postBuild()
+{
+ LLMemType mt(LLMemType::MTYPE_INVENTORY_POST_BUILD);
+
+ mCommitCallbackRegistrar.pushScope(); // registered as a widget; need to push callback scope ourselves
+
+ // create root folder
+ {
+ LLRect folder_rect(0,
+ 0,
+ getRect().getWidth(),
+ 0);
+ LLFolderView::Params p;
+ p.name = getName();
+ p.rect = folder_rect;
+ p.parent_panel = this;
+ p.tool_tip = p.name;
+ mFolders = LLUICtrlFactory::create<LLFolderView>(p);
+ mFolders->setAllowMultiSelect(mAllowMultiSelect);
+ }
+
+ mCommitCallbackRegistrar.popScope();
+
+ mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
+
+ // scroller
+ {
+ LLRect scroller_view_rect = getRect();
+ scroller_view_rect.translate(-scroller_view_rect.mLeft, -scroller_view_rect.mBottom);
+ LLScrollContainer::Params p;
+ p.name("Inventory Scroller");
+ p.rect(scroller_view_rect);
+ p.follows.flags(FOLLOWS_ALL);
+ p.reserve_scroll_corner(true);
+ p.tab_stop(true);
+ mScroller = LLUICtrlFactory::create<LLScrollContainer>(p);
+ }
+ addChild(mScroller);
+ mScroller->addChild(mFolders);
+
+ mFolders->setScrollContainer(mScroller);
+
+ // set up the callbacks from the inventory we're viewing, and then
+ // build everything.
+ mInventoryObserver = new LLInventoryPanelObserver(this);
+ mInventory->addObserver(mInventoryObserver);
+
+ // build view of inventory if we need default full hierarchy and inventory ready, otherwise wait for modelChanged() callback
+ if (mBuildDefaultHierarchy && mInventory->isInventoryUsable() && !mHasInventoryConnection)
+ {
+ rebuildViews();
+ mHasInventoryConnection = true;
+ defaultOpenInventory();
+ }
+
+ if (mSortOrderSetting != INHERIT_SORT_ORDER)
+ {
+ setSortOrder(gSavedSettings.getU32(mSortOrderSetting));
+ }
+ else
+ {
+ setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER));
+ }
+ mFolders->setSortOrder(mFolders->getFilter()->getSortOrder());
+
+ return TRUE;
+}
+
+LLInventoryPanel::~LLInventoryPanel()
+{
+ // should this be a global setting?
+ if (mFolders)
+ {
+ U32 sort_order = mFolders->getSortOrder();
+ if (mSortOrderSetting != INHERIT_SORT_ORDER)
+ {
+ gSavedSettings.setU32(mSortOrderSetting, sort_order);
+ }
+ }
+
+ // LLView destructor will take care of the sub-views.
+ mInventory->removeObserver(mInventoryObserver);
+ delete mInventoryObserver;
+ mScroller = NULL;
+}
+
+LLMemType mt(LLMemType::MTYPE_INVENTORY_FROM_XML); // ! BUG ! Should this be removed?
+void LLInventoryPanel::draw()
+{
+ // select the desired item (in case it wasn't loaded when the selection was requested)
+ mFolders->updateSelection();
+ LLPanel::draw();
+}
+
+LLInventoryFilter* LLInventoryPanel::getFilter()
+{
+ if (mFolders) return mFolders->getFilter();
+ return NULL;
+}
+
+void LLInventoryPanel::setFilterTypes(U64 filter_types, BOOL filter_for_categories)
+{
+ mFolders->getFilter()->setFilterTypes(filter_types, filter_for_categories);
+}
+
+void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask)
+{
+ mFolders->getFilter()->setFilterPermissions(filter_perm_mask);
+}
+
+void LLInventoryPanel::setFilterSubString(const std::string& string)
+{
+ mFolders->getFilter()->setFilterSubString(string);
+}
+
+void LLInventoryPanel::setSortOrder(U32 order)
+{
+ mFolders->getFilter()->setSortOrder(order);
+ if (mFolders->getFilter()->isModified())
+ {
+ mFolders->setSortOrder(order);
+ // try to keep selection onscreen, even if it wasn't to start with
+ mFolders->scrollToShowSelection();
+ }
+}
+
+void LLInventoryPanel::setSinceLogoff(BOOL sl)
+{
+ mFolders->getFilter()->setDateRangeLastLogoff(sl);
+}
+
+void LLInventoryPanel::setHoursAgo(U32 hours)
+{
+ mFolders->getFilter()->setHoursAgo(hours);
+}
+
+void LLInventoryPanel::setShowFolderState(LLInventoryFilter::EFolderShow show)
+{
+ mFolders->getFilter()->setShowFolderState(show);
+}
+
+LLInventoryFilter::EFolderShow LLInventoryPanel::getShowFolderState()
+{
+ return mFolders->getFilter()->getShowFolderState();
+}
+
+static LLFastTimer::DeclareTimer FTM_REFRESH("Inventory Refresh");
+
+void LLInventoryPanel::modelChanged(U32 mask)
+{
+ LLFastTimer t2(FTM_REFRESH);
+
+ bool handled = false;
+
+ // inventory just initialized, do complete build
+ if ((mask & LLInventoryObserver::ADD) && gInventory.getChangedIDs().empty() && !mHasInventoryConnection)
+ {
+ rebuildViews();
+ mHasInventoryConnection = true;
+ defaultOpenInventory();
+ return;
+ }
+
+ if (mask & LLInventoryObserver::LABEL)
+ {
+ handled = true;
+ // label change - empty out the display name for each object
+ // in this change set.
+ 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();
+ LLFolderViewItem* view = NULL;
+ LLInvFVBridge* bridge = NULL;
+ for (;id_it != id_end; ++id_it)
+ {
+ view = mFolders->getItemByID(*id_it);
+ if(view)
+ {
+ // request refresh on this item (also flags for filtering)
+ bridge = (LLInvFVBridge*)view->getListener();
+ if(bridge)
+ { // Clear the display name first, so it gets properly re-built during refresh()
+ bridge->clearDisplayName();
+ }
+ view->refresh();
+ }
+ }
+ }
+
+ // We don't really care which of these masks the item is actually flagged with, since the masks
+ // may not be accurate (e.g. in the main inventory panel, I move an item from My Inventory into
+ // Landmarks; this is a STRUCTURE change for that panel but is an ADD change for the Landmarks
+ // panel). What's relevant is that the item and UI are probably out of sync and thus need to be
+ // resynchronized.
+ if (mask & (LLInventoryObserver::STRUCTURE |
+ LLInventoryObserver::ADD |
+ LLInventoryObserver::REMOVE))
+ {
+ handled = true;
+ // Record which folders are open by uuid.
+ LLInventoryModel* model = getModel();
+ if (model)
+ {
+ 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)
+ {
+ // sync view with model
+ LLInventoryObject* model_item = model->getObject(*id_it);
+ LLFolderViewItem* view_item = mFolders->getItemByID(*id_it);
+
+ // Item exists in memory but a UI element hasn't been created for it.
+ if (model_item && !view_item)
+ {
+ // Add the UI element for this item.
+ buildNewViews(*id_it);
+ // Select any newly created object that has the auto rename at top of folder root set.
+ if(mFolders->getRoot()->needsAutoRename())
+ {
+ setSelection(*id_it, FALSE);
+ }
+ }
+
+ // This item already exists in both memory and UI. It was probably moved
+ // around in the panel's directory structure (i.e. reparented).
+ if (model_item && view_item)
+ {
+ LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolders->getItemByID(model_item->getParentUUID());
+
+ // Item has been moved.
+ if (view_item->getParentFolder() != new_parent)
+ {
+ if (new_parent != NULL)
+ {
+ // Item is to be moved and we found its new parent in the panel's directory, so move the item's UI.
+ view_item->getParentFolder()->extractItem(view_item);
+ view_item->addToFolder(new_parent, mFolders);
+ }
+ else
+ {
+ // Item is to be moved outside the panel's directory (e.g. moved to trash for a panel that
+ // doesn't include trash). Just remove the item's UI.
+ view_item->destroyView();
+ }
+ }
+ }
+
+ // This item has been removed from memory, but its associated UI element still exists.
+ if (!model_item && view_item)
+ {
+ // Remove the item's UI.
+ view_item->destroyView();
+ }
+ }
+ }
+ }
+
+ if (!handled)
+ {
+ // it's a small change that only requires a refresh.
+ // *TODO: figure out a more efficient way to do the refresh
+ // since it is expensive on large inventories
+ mFolders->refresh();
+ }
+}
+
+
+void LLInventoryPanel::rebuildViews()
+{
+ // Determine the root folder and rebuild the views starting
+ // at that folder.
+ const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(mStartFolderString);
+
+ if ("LIBRARY" == mStartFolderString)
+ {
+ mStartFolderID = gInventory.getLibraryRootFolderID();
+ }
+ else
+ {
+ mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);
+ }
+
+ rebuildViewsFor(mStartFolderID);
+}
+
+void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
+{
+ LLFolderViewItem* old_view = NULL;
+
+ // get old LLFolderViewItem
+ old_view = mFolders->getItemByID(id);
+ if (old_view && id.notNull())
+ {
+ old_view->destroyView();
+ }
+
+ buildNewViews(id);
+}
+
+void LLInventoryPanel::buildNewViews(const LLUUID& id)
+{
+ LLMemType mt(LLMemType::MTYPE_INVENTORY_BUILD_NEW_VIEWS);
+ LLFolderViewItem* itemp = NULL;
+ LLInventoryObject* objectp = gInventory.getObject(id);
+ if (objectp)
+ {
+ const LLUUID &parent_id = objectp->getParentUUID();
+ LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolders->getItemByID(parent_id);
+ if (id == mStartFolderID)
+ parent_folder = mFolders;
+
+ if (!parent_folder)
+ {
+ // This item exists outside the inventory's hierarchy, so don't add it.
+ return;
+ }
+
+ if (objectp->getType() <= LLAssetType::AT_NONE ||
+ objectp->getType() >= LLAssetType::AT_COUNT)
+ {
+ llwarns << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " <<
+ ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() << llendl;
+ return;
+ }
+
+ if (objectp->getType() == LLAssetType::AT_CATEGORY &&
+ objectp->getActualType() != LLAssetType::AT_LINK_FOLDER)
+ {
+ LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(objectp->getType(),
+ objectp->getType(),
+ LLInventoryType::IT_CATEGORY,
+ this,
+ objectp->getUUID());
+
+ if (new_listener)
+ {
+ LLFolderViewFolder::Params p;
+ p.name = new_listener->getDisplayName();
+ p.icon = new_listener->getIcon();
+ p.root = mFolders;
+ p.listener = new_listener;
+ p.tool_tip = p.name;
+ LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(p);
+ folderp->setItemSortOrder(mFolders->getSortOrder());
+ itemp = folderp;
+
+ // Hide the root folder, so we can show the contents of a folder
+ // flat but still have the parent folder present for listener-related
+ // operations.
+ if (id == mStartFolderID)
+ {
+ folderp->setDontShowInHierarchy(TRUE);
+ }
+ }
+ }
+ else
+ {
+ // Build new view for item
+ LLInventoryItem* item = (LLInventoryItem*)objectp;
+ LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(item->getType(),
+ item->getActualType(),
+ item->getInventoryType(),
+ this,
+ item->getUUID(),
+ item->getFlags());
+
+ if (new_listener)
+ {
+ LLFolderViewItem::Params params;
+ params.name(new_listener->getDisplayName());
+ params.icon(new_listener->getIcon());
+ params.creation_date(new_listener->getCreationDate());
+ params.root(mFolders);
+ params.listener(new_listener);
+ params.rect(LLRect (0, 0, 0, 0));
+ params.tool_tip = params.name;
+ itemp = LLUICtrlFactory::create<LLFolderViewItem> (params);
+ }
+ }
+
+ if (itemp)
+ {
+ itemp->addToFolder(parent_folder, mFolders);
+ }
+ }
+
+ // If this is a folder, add the children of the folder and recursively add any
+ // child folders.
+ if ((id == mStartFolderID) ||
+ (objectp && objectp->getType() == LLAssetType::AT_CATEGORY))
+ {
+ LLViewerInventoryCategory::cat_array_t* categories;
+ LLViewerInventoryItem::item_array_t* items;
+
+ mInventory->lockDirectDescendentArrays(id, categories, items);
+ if(categories)
+ {
+ S32 count = categories->count();
+ for(S32 i = 0; i < count; ++i)
+ {
+ LLInventoryCategory* cat = categories->get(i);
+ buildNewViews(cat->getUUID());
+ }
+ }
+ if(items)
+ {
+ S32 count = items->count();
+ for(S32 i = 0; i < count; ++i)
+ {
+ LLInventoryItem* item = items->get(i);
+ buildNewViews(item->getUUID());
+ }
+ }
+ mInventory->unlockDirectDescendentArrays(id);
+ }
+}
+
+// bit of a hack to make sure the inventory is open.
+void LLInventoryPanel::defaultOpenInventory()
+{
+ const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(mStartFolderString);
+ if (preferred_type != LLFolderType::FT_NONE)
+ {
+ const std::string& top_level_folder_name = LLViewerFolderType::lookupNewCategoryName(preferred_type);
+ mFolders->openFolder(top_level_folder_name);
+ }
+ else
+ {
+ // Get the first child (it should be "My Inventory") and
+ // open it up by name (just to make sure the first child is actually a folder).
+ LLView* first_child = mFolders->getFirstChild();
+ const std::string& first_child_name = first_child->getName();
+ mFolders->openFolder(first_child_name);
+ }
+}
+
+struct LLConfirmPurgeData
+{
+ LLUUID mID;
+ LLInventoryModel* mModel;
+};
+
+class LLIsNotWorn : public LLInventoryCollectFunctor
+{
+public:
+ LLIsNotWorn() {}
+ virtual ~LLIsNotWorn() {}
+ virtual bool operator()(LLInventoryCategory* cat,
+ LLInventoryItem* item)
+ {
+ return !gAgentWearables.isWearingItem(item->getUUID());
+ }
+};
+
+class LLOpenFolderByID : public LLFolderViewFunctor
+{
+public:
+ LLOpenFolderByID(const LLUUID& id) : mID(id) {}
+ virtual ~LLOpenFolderByID() {}
+ virtual void doFolder(LLFolderViewFolder* folder)
+ {
+ if (folder->getListener() && folder->getListener()->getUUID() == mID) folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_UP);
+ }
+ virtual void doItem(LLFolderViewItem* item) {}
+protected:
+ const LLUUID& mID;
+};
+
+
+void LLInventoryPanel::openSelected()
+{
+ LLFolderViewItem* folder_item = mFolders->getCurSelectedItem();
+ if(!folder_item) return;
+ LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener();
+ if(!bridge) return;
+ bridge->openItem();
+}
+
+BOOL LLInventoryPanel::handleHover(S32 x, S32 y, MASK mask)
+{
+ BOOL handled = LLView::handleHover(x, y, mask);
+ if(handled)
+ {
+ ECursorType cursor = getWindow()->getCursor();
+ if (LLInventoryModel::backgroundFetchActive() && cursor == UI_CURSOR_ARROW)
+ {
+ // replace arrow cursor with arrow and hourglass cursor
+ getWindow()->setCursor(UI_CURSOR_WORKING);
+ }
+ }
+ else
+ {
+ getWindow()->setCursor(UI_CURSOR_ARROW);
+ }
+ return TRUE;
+}
+
+BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+
+ BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+
+ if (handled)
+ {
+ mFolders->setDragAndDropThisFrame();
+ }
+
+ return handled;
+}
+
+void LLInventoryPanel::onFocusLost()
+{
+ // inventory no longer handles cut/copy/paste/delete
+ if (LLEditMenuHandler::gEditMenuHandler == mFolders)
+ {
+ LLEditMenuHandler::gEditMenuHandler = NULL;
+ }
+
+ LLPanel::onFocusLost();
+}
+
+void LLInventoryPanel::onFocusReceived()
+{
+ // inventory now handles cut/copy/paste/delete
+ LLEditMenuHandler::gEditMenuHandler = mFolders;
+
+ LLPanel::onFocusReceived();
+}
+
+
+void LLInventoryPanel::openAllFolders()
+{
+ mFolders->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
+ mFolders->arrangeAll();
+}
+
+void LLInventoryPanel::openDefaultFolderForType(LLFolderType::EType type)
+{
+ LLUUID category_id = mInventory->findCategoryUUIDForType(type);
+ LLOpenFolderByID opener(category_id);
+ mFolders->applyFunctorRecursively(opener);
+}
+
+void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus)
+{
+ // Don't select objects in COF (e.g. to prevent refocus when items are worn).
+ const LLInventoryObject *obj = gInventory.getObject(obj_id);
+ if (obj && obj->getParentUUID() == LLAppearanceManager::instance().getCOF())
+ {
+ return;
+ }
+ mFolders->setSelectionByID(obj_id, take_keyboard_focus);
+}
+
+void LLInventoryPanel::clearSelection()
+{
+ mFolders->clearSelection();
+}
+
+void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& items, BOOL user_action)
+{
+ LLFolderView* fv = getRootFolder();
+ if (fv->needsAutoRename()) // auto-selecting a new user-created asset and preparing to rename
+ {
+ fv->setNeedsAutoRename(FALSE);
+ if (items.size()) // new asset is visible and selected
+ {
+ fv->startRenamingSelectedItem();
+ }
+ }
+ // Seraph - Put determineFolderType in here for ensemble typing?
+}
+
+//----------------------------------------------------------------------------
+
+void LLInventoryPanel::doToSelected(const LLSD& userdata)
+{
+ mFolders->doToSelected(&gInventory, userdata);
+}
+
+void LLInventoryPanel::doCreate(const LLSD& userdata)
+{
+ menu_create_inventory_item(mFolders, LLFolderBridge::sSelf, userdata);
+}
+
+bool LLInventoryPanel::beginIMSession()
+{
+ std::set<LLUUID> selected_items;
+ mFolders->getSelectionList(selected_items);
+
+ std::string name;
+ static int session_num = 1;
+
+ LLDynamicArray<LLUUID> members;
+ EInstantMessage type = IM_SESSION_CONFERENCE_START;
+
+ std::set<LLUUID>::const_iterator iter;
+ for (iter = selected_items.begin(); iter != selected_items.end(); iter++)
+ {
+
+ LLUUID item = *iter;
+ LLFolderViewItem* folder_item = mFolders->getItemByID(item);
+
+ if(folder_item)
+ {
+ LLFolderViewEventListener* fve_listener = folder_item->getListener();
+ if (fve_listener && (fve_listener->getInventoryType() == LLInventoryType::IT_CATEGORY))
+ {
+
+ LLFolderBridge* bridge = (LLFolderBridge*)folder_item->getListener();
+ if(!bridge) return true;
+ LLViewerInventoryCategory* cat = bridge->getCategory();
+ if(!cat) return true;
+ name = cat->getName();
+ LLUniqueBuddyCollector is_buddy;
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+ gInventory.collectDescendentsIf(bridge->getUUID(),
+ cat_array,
+ item_array,
+ LLInventoryModel::EXCLUDE_TRASH,
+ is_buddy);
+ S32 count = item_array.count();
+ if(count > 0)
+ {
+ LLFloaterReg::showInstance("communicate");
+ // create the session
+ LLAvatarTracker& at = LLAvatarTracker::instance();
+ LLUUID id;
+ for(S32 i = 0; i < count; ++i)
+ {
+ id = item_array.get(i)->getCreatorUUID();
+ if(at.isBuddyOnline(id))
+ {
+ members.put(id);
+ }
+ }
+ }
+ }
+ else
+ {
+ LLFolderViewItem* folder_item = mFolders->getItemByID(item);
+ if(!folder_item) return true;
+ LLInvFVBridge* listenerp = (LLInvFVBridge*)folder_item->getListener();
+
+ if (listenerp->getInventoryType() == LLInventoryType::IT_CALLINGCARD)
+ {
+ LLInventoryItem* inv_item = gInventory.getItem(listenerp->getUUID());
+
+ if (inv_item)
+ {
+ LLAvatarTracker& at = LLAvatarTracker::instance();
+ LLUUID id = inv_item->getCreatorUUID();
+
+ if(at.isBuddyOnline(id))
+ {
+ members.put(id);
+ }
+ }
+ } //if IT_CALLINGCARD
+ } //if !IT_CATEGORY
+ }
+ } //for selected_items
+
+ // the session_id is randomly generated UUID which will be replaced later
+ // with a server side generated number
+
+ if (name.empty())
+ {
+ name = llformat("Session %d", session_num++);
+ }
+
+ LLUUID session_id = gIMMgr->addSession(name, type, members[0], members);
+ if (session_id != LLUUID::null)
+ {
+ LLIMFloater::show(session_id);
+ }
+
+ return true;
+}
+
+bool LLInventoryPanel::attachObject(const LLSD& userdata)
+{
+ std::set<LLUUID> selected_items;
+ mFolders->getSelectionList(selected_items);
+
+ std::string joint_name = userdata.asString();
+ LLVOAvatar *avatarp = static_cast<LLVOAvatar*>(gAgent.getAvatarObject());
+ LLViewerJointAttachment* attachmentp = NULL;
+ for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();
+ iter != avatarp->mAttachmentPoints.end(); )
+ {
+ LLVOAvatar::attachment_map_t::iterator curiter = iter++;
+ LLViewerJointAttachment* attachment = curiter->second;
+ if (attachment->getName() == joint_name)
+ {
+ attachmentp = attachment;
+ break;
+ }
+ }
+ if (attachmentp == NULL)
+ {
+ return true;
+ }
+
+ for (std::set<LLUUID>::const_iterator set_iter = selected_items.begin();
+ set_iter != selected_items.end();
+ ++set_iter)
+ {
+ const LLUUID &id = *set_iter;
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(id);
+ if(item && gInventory.isObjectDescendentOf(id, gInventory.getRootFolderID()))
+ {
+ rez_attachment(item, attachmentp);
+ }
+ else if(item && item->isComplete())
+ {
+ // must be in library. copy it to our inventory and put it on.
+ LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(attachmentp);
+ copy_inventory_item(gAgent.getID(),
+ item->getPermissions().getOwner(),
+ item->getUUID(),
+ LLUUID::null,
+ std::string(),
+ cb);
+ }
+ }
+ gFocusMgr.setKeyboardFocus(NULL);
+
+ return true;
+}
+
+
+//----------------------------------------------------------------------------
+
+// static DEBUG ONLY:
+void LLInventoryPanel::dumpSelectionInformation(void* user_data)
+{
+ LLInventoryPanel* iv = (LLInventoryPanel*)user_data;
+ iv->mFolders->dumpSelectionInformation();
+}
+
+BOOL LLInventoryPanel::getSinceLogoff()
+{
+ return mFolders->getFilter()->isSinceLogoff();
+}
+
+void example_param_block_usage()
+{
+ LLInventoryPanel::Params param_block;
+ param_block.name(std::string("inventory"));
+
+ param_block.sort_order_setting(LLInventoryPanel::RECENTITEMS_SORT_ORDER);
+ param_block.allow_multi_select(true);
+ param_block.filter(LLInventoryPanel::Filter()
+ .sort_order(1)
+ .types(0xffff0000));
+ param_block.inventory(&gInventory);
+ param_block.has_border(true);
+
+ LLUICtrlFactory::create<LLInventoryPanel>(param_block);
+
+ param_block = LLInventoryPanel::Params();
+ param_block.name(std::string("inventory"));
+
+ //LLSD param_block_sd;
+ //param_block_sd["sort_order_setting"] = LLInventoryPanel::RECENTITEMS_SORT_ORDER;
+ //param_block_sd["allow_multi_select"] = true;
+ //param_block_sd["filter"]["sort_order"] = 1;
+ //param_block_sd["filter"]["types"] = (S32)0xffff0000;
+ //param_block_sd["has_border"] = true;
+
+ //LLInitParam::LLSDParser(param_block_sd).parse(param_block);
+
+ LLUICtrlFactory::create<LLInventoryPanel>(param_block);
+}
+
+// +=================================================+
+// | LLInventoryPanelObserver |
+// +=================================================+
+void LLInventoryPanelObserver::changed(U32 mask)
+{
+ mIP->modelChanged(mask);
+}
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 5e23662a0b..40319d949d 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -195,7 +195,7 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
childSetEnabled("teleport_btn", FALSE);
childSetEnabled("pay_btn", FALSE);
- getChild<LLTextBox>("avatar_name")->setValue(im_session->mName);
+ getChild<LLTextBox>("avatar_name")->setValue(im_session->mName);
}
else
{
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 9f723169e1..74c1420cf3 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -1,1022 +1,1022 @@
-/**
- * @file llsidepanelmaininventory.cpp
- * @brief Implementation of llsidepanelmaininventory.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llpanelmaininventory.h"
-
-#include "lldndbutton.h"
-#include "llfilepicker.h"
-#include "llfloaterinventory.h"
-#include "llinventorybridge.h"
-#include "llinventoryfunctions.h"
-#include "llinventorypanel.h"
-#include "llfiltereditor.h"
-#include "llfloaterreg.h"
-#include "llpreviewtexture.h"
-#include "llscrollcontainer.h"
-#include "llsdserialize.h"
-#include "llspinctrl.h"
-#include "lltooldraganddrop.h"
-#include "llviewermenu.h"
-#include "llviewertexturelist.h"
-
-static LLRegisterPanelClassWrapper<LLPanelMainInventory> t_inventory("panel_main_inventory");
-
-void on_file_loaded_for_save(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata);
-
-///----------------------------------------------------------------------------
-/// LLFloaterInventoryFinder
-///----------------------------------------------------------------------------
-
-class LLFloaterInventoryFinder : public LLFloater
-{
-public:
- LLFloaterInventoryFinder( LLPanelMainInventory* inventory_view);
- virtual void draw();
- /*virtual*/ BOOL postBuild();
- void changeFilter(LLInventoryFilter* filter);
- void updateElementsFromFilter();
- BOOL getCheckShowEmpty();
- BOOL getCheckSinceLogoff();
-
- static void onTimeAgo(LLUICtrl*, void *);
- static void onCheckSinceLogoff(LLUICtrl*, void *);
- static void onCloseBtn(void* user_data);
- static void selectAllTypes(void* user_data);
- static void selectNoTypes(void* user_data);
-private:
- LLPanelMainInventory* mPanelMainInventory;
- LLSpinCtrl* mSpinSinceDays;
- LLSpinCtrl* mSpinSinceHours;
- LLInventoryFilter* mFilter;
-};
-
-///----------------------------------------------------------------------------
-/// LLPanelMainInventory
-///----------------------------------------------------------------------------
-
-LLPanelMainInventory::LLPanelMainInventory()
- : LLPanel(),
- mActivePanel(NULL),
- mSavedFolderState(NULL),
- mFilterText(""),
- mMenuGearDefault(NULL),
- mMenuAdd(NULL)
-{
- LLMemType mt(LLMemType::MTYPE_INVENTORY_VIEW_INIT);
- // Menu Callbacks (non contex menus)
- mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelMainInventory::doToSelected, this, _2));
- mCommitCallbackRegistrar.add("Inventory.CloseAllFolders", boost::bind(&LLPanelMainInventory::closeAllFolders, this));
- mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
- mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
- mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));
- mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
- mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
- mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this));
- mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));
-
- // Controls
- // *TODO: Just use persistant settings for each of these
- U32 sort_order = gSavedSettings.getU32("InventorySortOrder");
- BOOL sort_by_name = ! ( sort_order & LLInventoryFilter::SO_DATE );
- BOOL sort_folders_by_name = ( sort_order & LLInventoryFilter::SO_FOLDERS_BY_NAME );
- BOOL sort_system_folders_to_top = ( sort_order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP );
-
- gSavedSettings.declareBOOL("Inventory.SortByName", sort_by_name, "Declared in code", FALSE);
- gSavedSettings.declareBOOL("Inventory.SortByDate", !sort_by_name, "Declared in code", FALSE);
- gSavedSettings.declareBOOL("Inventory.FoldersAlwaysByName", sort_folders_by_name, "Declared in code", FALSE);
- gSavedSettings.declareBOOL("Inventory.SystemFoldersToTop", sort_system_folders_to_top, "Declared in code", FALSE);
-
- mSavedFolderState = new LLSaveFolderState();
- mSavedFolderState->setApply(FALSE);
-}
-
-BOOL LLPanelMainInventory::postBuild()
-{
- gInventory.addObserver(this);
-
- mFilterTabs = getChild<LLTabContainer>("inventory filter tabs");
- mFilterTabs->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterSelected, this));
-
- //panel->getFilter()->markDefault();
-
- // Set up the default inv. panel/filter settings.
- mActivePanel = getChild<LLInventoryPanel>("All Items");
- if (mActivePanel)
- {
- // "All Items" is the previous only view, so it gets the InventorySortOrder
- mActivePanel->setSortOrder(gSavedSettings.getU32("InventorySortOrder"));
- mActivePanel->getFilter()->markDefault();
- mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
- mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2));
- }
- LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>("Recent Items");
- if (recent_items_panel)
- {
- recent_items_panel->setSinceLogoff(TRUE);
- recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE);
- recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
- recent_items_panel->getFilter()->markDefault();
- recent_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, recent_items_panel, _1, _2));
- }
-
- // Now load the stored settings from disk, if available.
- std::ostringstream filterSaveName;
- filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
- llinfos << "LLPanelMainInventory::init: reading from " << filterSaveName << llendl;
- llifstream file(filterSaveName.str());
- LLSD savedFilterState;
- if (file.is_open())
- {
- LLSDSerialize::fromXML(savedFilterState, file);
- file.close();
-
- // Load the persistent "Recent Items" settings.
- // Note that the "All Items" settings do not persist.
- if(recent_items_panel)
- {
- if(savedFilterState.has(recent_items_panel->getFilter()->getName()))
- {
- LLSD recent_items = savedFilterState.get(
- recent_items_panel->getFilter()->getName());
- recent_items_panel->getFilter()->fromLLSD(recent_items);
- }
- }
-
- }
-
- mFilterEditor = getChild<LLFilterEditor>("inventory search editor");
- if (mFilterEditor)
- {
- mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2));
- }
-
- // *TODO:Get the cost info from the server
- const std::string upload_cost("10");
- childSetLabelArg("Upload Image", "[COST]", upload_cost);
- childSetLabelArg("Upload Sound", "[COST]", upload_cost);
- childSetLabelArg("Upload Animation", "[COST]", upload_cost);
- childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
-
- initListCommandsHandlers();
- return TRUE;
-}
-
-// Destroys the object
-LLPanelMainInventory::~LLPanelMainInventory( void )
-{
- // Save the filters state.
- LLSD filterRoot;
- LLInventoryPanel* all_items_panel = getChild<LLInventoryPanel>("All Items");
- if (all_items_panel)
- {
- LLInventoryFilter* filter = all_items_panel->getFilter();
- if (filter)
- {
- LLSD filterState;
- filter->toLLSD(filterState);
- filterRoot[filter->getName()] = filterState;
- }
- }
-
- LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>("Recent Items");
- if (recent_items_panel)
- {
- LLInventoryFilter* filter = recent_items_panel->getFilter();
- if (filter)
- {
- LLSD filterState;
- filter->toLLSD(filterState);
- filterRoot[filter->getName()] = filterState;
- }
- }
-
- std::ostringstream filterSaveName;
- filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
- llofstream filtersFile(filterSaveName.str());
- if(!LLSDSerialize::toPrettyXML(filterRoot, filtersFile))
- {
- llwarns << "Could not write to filters save file " << filterSaveName << llendl;
- }
- else
- filtersFile.close();
-
- gInventory.removeObserver(this);
- delete mSavedFolderState;
-}
-
-void LLPanelMainInventory::startSearch()
-{
- // this forces focus to line editor portion of search editor
- if (mFilterEditor)
- {
- mFilterEditor->focusFirstItem(TRUE);
- }
-}
-
-BOOL LLPanelMainInventory::handleKeyHere(KEY key, MASK mask)
-{
- LLFolderView* root_folder = mActivePanel ? mActivePanel->getRootFolder() : NULL;
- if (root_folder)
- {
- // first check for user accepting current search results
- if (mFilterEditor
- && mFilterEditor->hasFocus()
- && (key == KEY_RETURN
- || key == KEY_DOWN)
- && mask == MASK_NONE)
- {
- // move focus to inventory proper
- mActivePanel->setFocus(TRUE);
- root_folder->scrollToShowSelection();
- return TRUE;
- }
-
- if (mActivePanel->hasFocus() && key == KEY_UP)
- {
- startSearch();
- }
- }
-
- return LLPanel::handleKeyHere(key, mask);
-
-}
-
-//----------------------------------------------------------------------------
-// menu callbacks
-
-void LLPanelMainInventory::doToSelected(const LLSD& userdata)
-{
- getPanel()->getRootFolder()->doToSelected(&gInventory, userdata);
-}
-
-void LLPanelMainInventory::closeAllFolders()
-{
- getPanel()->getRootFolder()->closeAllFolders();
-}
-
-void LLPanelMainInventory::newWindow()
-{
- LLFloaterInventory::showAgentInventory();
-}
-
-void LLPanelMainInventory::doCreate(const LLSD& userdata)
-{
- menu_create_inventory_item(getPanel()->getRootFolder(), NULL, userdata);
-}
-
-void LLPanelMainInventory::resetFilters()
-{
- LLFloaterInventoryFinder *finder = getFinder();
- getActivePanel()->getFilter()->resetDefault();
- if (finder)
- {
- finder->updateElementsFromFilter();
- }
-
- setFilterTextFromFilter();
-}
-
-void LLPanelMainInventory::setSortBy(const LLSD& userdata)
-{
- std::string sort_field = userdata.asString();
- if (sort_field == "name")
- {
- U32 order = getActivePanel()->getSortOrder();
- getActivePanel()->setSortOrder( order & ~LLInventoryFilter::SO_DATE );
-
- gSavedSettings.setBOOL("Inventory.SortByName", TRUE );
- gSavedSettings.setBOOL("Inventory.SortByDate", FALSE );
- }
- else if (sort_field == "date")
- {
- U32 order = getActivePanel()->getSortOrder();
- getActivePanel()->setSortOrder( order | LLInventoryFilter::SO_DATE );
-
- gSavedSettings.setBOOL("Inventory.SortByName", FALSE );
- gSavedSettings.setBOOL("Inventory.SortByDate", TRUE );
- }
- else if (sort_field == "foldersalwaysbyname")
- {
- U32 order = getActivePanel()->getSortOrder();
- if ( order & LLInventoryFilter::SO_FOLDERS_BY_NAME )
- {
- order &= ~LLInventoryFilter::SO_FOLDERS_BY_NAME;
-
- gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", FALSE );
- }
- else
- {
- order |= LLInventoryFilter::SO_FOLDERS_BY_NAME;
-
- gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", TRUE );
- }
- getActivePanel()->setSortOrder( order );
- }
- else if (sort_field == "systemfolderstotop")
- {
- U32 order = getActivePanel()->getSortOrder();
- if ( order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP )
- {
- order &= ~LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
-
- gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", FALSE );
- }
- else
- {
- order |= LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
-
- gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", TRUE );
- }
- getActivePanel()->setSortOrder( order );
- }
-}
-
-// static
-BOOL LLPanelMainInventory::filtersVisible(void* user_data)
-{
- LLPanelMainInventory* self = (LLPanelMainInventory*)user_data;
- if(!self) return FALSE;
-
- return self->getFinder() != NULL;
-}
-
-void LLPanelMainInventory::onClearSearch()
-{
- LLFloater *finder = getFinder();
- if (mActivePanel)
- {
- mActivePanel->setFilterSubString(LLStringUtil::null);
- mActivePanel->setFilterTypes(0xffffffff);
- }
-
- if (finder)
- {
- LLFloaterInventoryFinder::selectAllTypes(finder);
- }
-
- // re-open folders that were initially open
- if (mActivePanel)
- {
- mSavedFolderState->setApply(TRUE);
- mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
- LLOpenFoldersWithSelection opener;
- mActivePanel->getRootFolder()->applyFunctorRecursively(opener);
- mActivePanel->getRootFolder()->scrollToShowSelection();
- }
-}
-
-void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
-{
- if (search_string == "")
- {
- onClearSearch();
- }
- if (!mActivePanel)
- {
- return;
- }
-
- gInventory.startBackgroundFetch();
-
- std::string uppercase_search_string = search_string;
- LLStringUtil::toUpper(uppercase_search_string);
- if (mActivePanel->getFilterSubString().empty() && uppercase_search_string.empty())
- {
- // current filter and new filter empty, do nothing
- return;
- }
-
- // save current folder open state if no filter currently applied
- if (!mActivePanel->getRootFolder()->isFilterModified())
- {
- mSavedFolderState->setApply(FALSE);
- mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
- }
-
- // set new filter string
- mActivePanel->setFilterSubString(uppercase_search_string);
-}
-
-
- //static
- BOOL LLPanelMainInventory::incrementalFind(LLFolderViewItem* first_item, const char *find_text, BOOL backward)
- {
- LLPanelMainInventory* active_view = NULL;
-
- LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
- for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
- {
- LLPanelMainInventory* iv = dynamic_cast<LLPanelMainInventory*>(*iter);
- if (iv)
- {
- if (gFocusMgr.childHasKeyboardFocus(iv))
- {
- active_view = iv;
- break;
- }
- }
- }
-
- if (!active_view)
- {
- return FALSE;
- }
-
- std::string search_string(find_text);
-
- if (search_string.empty())
- {
- return FALSE;
- }
-
- if (active_view->getPanel() &&
- active_view->getPanel()->getRootFolder()->search(first_item, search_string, backward))
- {
- return TRUE;
- }
-
- return FALSE;
- }
-
-void LLPanelMainInventory::onFilterSelected()
-{
- // Find my index
- mActivePanel = (LLInventoryPanel*)childGetVisibleTab("inventory filter tabs");
-
- if (!mActivePanel)
- {
- return;
- }
- LLInventoryFilter* filter = mActivePanel->getFilter();
- LLFloaterInventoryFinder *finder = getFinder();
- if (finder)
- {
- finder->changeFilter(filter);
- }
- if (filter->isActive())
- {
- // If our filter is active we may be the first thing requiring a fetch so we better start it here.
- gInventory.startBackgroundFetch();
- }
- setFilterTextFromFilter();
-}
-
-const std::string LLPanelMainInventory::getFilterSubString()
-{
- return mActivePanel->getFilterSubString();
-}
-
-void LLPanelMainInventory::setFilterSubString(const std::string& string)
-{
- mActivePanel->setFilterSubString(string);
-}
-
-BOOL LLPanelMainInventory::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg)
-{
- // Check to see if we are auto scrolling from the last frame
- LLInventoryPanel* panel = (LLInventoryPanel*)this->getActivePanel();
- BOOL needsToScroll = panel->getScrollableContainer()->autoScroll(x, y);
- if(mFilterTabs)
- {
- if(needsToScroll)
- {
- mFilterTabs->startDragAndDropDelayTimer();
- }
- }
-
- BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-
- return handled;
-}
-
-void LLPanelMainInventory::changed(U32 mask)
-{
-}
-
-
-void LLPanelMainInventory::setFilterTextFromFilter()
-{
- mFilterText = mActivePanel->getFilter()->getFilterText();
-}
-
-void LLPanelMainInventory::toggleFindOptions()
-{
- LLMemType mt(LLMemType::MTYPE_INVENTORY_VIEW_TOGGLE);
- LLFloater *floater = getFinder();
- if (!floater)
- {
- LLFloaterInventoryFinder * finder = new LLFloaterInventoryFinder(this);
- mFinderHandle = finder->getHandle();
- finder->openFloater();
-
- LLFloater* parent_floater = gFloaterView->getParentFloater(this);
- if (parent_floater) // Seraph: Fix this, shouldn't be null even for sidepanel
- parent_floater->addDependentFloater(mFinderHandle);
- // start background fetch of folders
- gInventory.startBackgroundFetch();
- }
- else
- {
- floater->closeFloater();
- }
-}
-
-void LLPanelMainInventory::setSelectCallback(const LLFolderView::signal_t::slot_type& cb)
-{
- getChild<LLInventoryPanel>("All Items")->setSelectCallback(cb);
- getChild<LLInventoryPanel>("Recent Items")->setSelectCallback(cb);
-}
-
-void LLPanelMainInventory::onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action)
-{
- updateListCommands();
- panel->onSelectionChange(items, user_action);
-}
-
-///----------------------------------------------------------------------------
-/// LLFloaterInventoryFinder
-///----------------------------------------------------------------------------
-
-LLFloaterInventoryFinder* LLPanelMainInventory::getFinder()
-{
- return (LLFloaterInventoryFinder*)mFinderHandle.get();
-}
-
-
-LLFloaterInventoryFinder::LLFloaterInventoryFinder(LLPanelMainInventory* inventory_view) :
- LLFloater(LLSD()),
- mPanelMainInventory(inventory_view),
- mFilter(inventory_view->getPanel()->getFilter())
-{
- LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inventory_view_finder.xml", NULL);
- updateElementsFromFilter();
-}
-
-
-void LLFloaterInventoryFinder::onCheckSinceLogoff(LLUICtrl *ctrl, void *user_data)
-{
- LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
- if (!self) return;
-
- bool since_logoff= self->childGetValue("check_since_logoff");
-
- if (!since_logoff &&
- !( self->mSpinSinceDays->get() || self->mSpinSinceHours->get() ) )
- {
- self->mSpinSinceHours->set(1.0f);
- }
-}
-BOOL LLFloaterInventoryFinder::postBuild()
-{
- const LLRect& viewrect = mPanelMainInventory->getRect();
- setRect(LLRect(viewrect.mLeft - getRect().getWidth(), viewrect.mTop, viewrect.mLeft, viewrect.mTop - getRect().getHeight()));
-
- childSetAction("All", selectAllTypes, this);
- childSetAction("None", selectNoTypes, this);
-
- mSpinSinceHours = getChild<LLSpinCtrl>("spin_hours_ago");
- childSetCommitCallback("spin_hours_ago", onTimeAgo, this);
-
- mSpinSinceDays = getChild<LLSpinCtrl>("spin_days_ago");
- childSetCommitCallback("spin_days_ago", onTimeAgo, this);
-
- // mCheckSinceLogoff = getChild<LLSpinCtrl>("check_since_logoff");
- childSetCommitCallback("check_since_logoff", onCheckSinceLogoff, this);
-
- childSetAction("Close", onCloseBtn, this);
-
- updateElementsFromFilter();
- return TRUE;
-}
-void LLFloaterInventoryFinder::onTimeAgo(LLUICtrl *ctrl, void *user_data)
-{
- LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
- if (!self) return;
-
- bool since_logoff=true;
- if ( self->mSpinSinceDays->get() || self->mSpinSinceHours->get() )
- {
- since_logoff = false;
- }
- self->childSetValue("check_since_logoff", since_logoff);
-}
-
-void LLFloaterInventoryFinder::changeFilter(LLInventoryFilter* filter)
-{
- mFilter = filter;
- updateElementsFromFilter();
-}
-
-void LLFloaterInventoryFinder::updateElementsFromFilter()
-{
- if (!mFilter)
- return;
-
- // Get data needed for filter display
- U32 filter_types = mFilter->getFilterTypes();
- std::string filter_string = mFilter->getFilterSubString();
- LLInventoryFilter::EFolderShow show_folders = mFilter->getShowFolderState();
- U32 hours = mFilter->getHoursAgo();
-
- // update the ui elements
- setTitle(mFilter->getName());
-
- childSetValue("check_animation", (S32) (filter_types & 0x1 << LLInventoryType::IT_ANIMATION));
-
- childSetValue("check_calling_card", (S32) (filter_types & 0x1 << LLInventoryType::IT_CALLINGCARD));
- childSetValue("check_clothing", (S32) (filter_types & 0x1 << LLInventoryType::IT_WEARABLE));
- childSetValue("check_gesture", (S32) (filter_types & 0x1 << LLInventoryType::IT_GESTURE));
- childSetValue("check_landmark", (S32) (filter_types & 0x1 << LLInventoryType::IT_LANDMARK));
- childSetValue("check_notecard", (S32) (filter_types & 0x1 << LLInventoryType::IT_NOTECARD));
- childSetValue("check_object", (S32) (filter_types & 0x1 << LLInventoryType::IT_OBJECT));
- childSetValue("check_script", (S32) (filter_types & 0x1 << LLInventoryType::IT_LSL));
- childSetValue("check_sound", (S32) (filter_types & 0x1 << LLInventoryType::IT_SOUND));
- childSetValue("check_texture", (S32) (filter_types & 0x1 << LLInventoryType::IT_TEXTURE));
- childSetValue("check_snapshot", (S32) (filter_types & 0x1 << LLInventoryType::IT_SNAPSHOT));
- childSetValue("check_show_empty", show_folders == LLInventoryFilter::SHOW_ALL_FOLDERS);
- childSetValue("check_since_logoff", mFilter->isSinceLogoff());
- mSpinSinceHours->set((F32)(hours % 24));
- mSpinSinceDays->set((F32)(hours / 24));
-}
-
-void LLFloaterInventoryFinder::draw()
-{
- LLMemType mt(LLMemType::MTYPE_INVENTORY_DRAW);
- U32 filter = 0xffffffff;
- BOOL filtered_by_all_types = TRUE;
-
- if (!childGetValue("check_animation"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_ANIMATION);
- filtered_by_all_types = FALSE;
- }
-
-
- if (!childGetValue("check_calling_card"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_CALLINGCARD);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_clothing"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_WEARABLE);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_gesture"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_GESTURE);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_landmark"))
-
-
- {
- filter &= ~(0x1 << LLInventoryType::IT_LANDMARK);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_notecard"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_NOTECARD);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_object"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_OBJECT);
- filter &= ~(0x1 << LLInventoryType::IT_ATTACHMENT);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_script"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_LSL);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_sound"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_SOUND);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_texture"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_TEXTURE);
- filtered_by_all_types = FALSE;
- }
-
- if (!childGetValue("check_snapshot"))
- {
- filter &= ~(0x1 << LLInventoryType::IT_SNAPSHOT);
- filtered_by_all_types = FALSE;
- }
-
- if (!filtered_by_all_types)
- {
- // don't include folders in filter, unless I've selected everything
- filter &= ~(0x1 << LLInventoryType::IT_CATEGORY);
- }
-
- // update the panel, panel will update the filter
- mPanelMainInventory->getPanel()->setShowFolderState(getCheckShowEmpty() ?
- LLInventoryFilter::SHOW_ALL_FOLDERS : LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
- mPanelMainInventory->getPanel()->setFilterTypes(filter);
- if (getCheckSinceLogoff())
- {
- mSpinSinceDays->set(0);
- mSpinSinceHours->set(0);
- }
- U32 days = (U32)mSpinSinceDays->get();
- U32 hours = (U32)mSpinSinceHours->get();
- if (hours > 24)
- {
- days += hours / 24;
- hours = (U32)hours % 24;
- mSpinSinceDays->set((F32)days);
- mSpinSinceHours->set((F32)hours);
- }
- hours += days * 24;
- mPanelMainInventory->getPanel()->setHoursAgo(hours);
- mPanelMainInventory->getPanel()->setSinceLogoff(getCheckSinceLogoff());
- mPanelMainInventory->setFilterTextFromFilter();
-
- LLPanel::draw();
-}
-
-BOOL LLFloaterInventoryFinder::getCheckShowEmpty()
-{
- return childGetValue("check_show_empty");
-}
-
-BOOL LLFloaterInventoryFinder::getCheckSinceLogoff()
-{
- return childGetValue("check_since_logoff");
-}
-
-void LLFloaterInventoryFinder::onCloseBtn(void* user_data)
-{
- LLFloaterInventoryFinder* finderp = (LLFloaterInventoryFinder*)user_data;
- finderp->closeFloater();
-}
-
-// static
-void LLFloaterInventoryFinder::selectAllTypes(void* user_data)
-{
- LLFloaterInventoryFinder* self = (LLFloaterInventoryFinder*)user_data;
- if(!self) return;
-
- self->childSetValue("check_animation", TRUE);
- self->childSetValue("check_calling_card", TRUE);
- self->childSetValue("check_clothing", TRUE);
- self->childSetValue("check_gesture", TRUE);
- self->childSetValue("check_landmark", TRUE);
- self->childSetValue("check_notecard", TRUE);
- self->childSetValue("check_object", TRUE);
- self->childSetValue("check_script", TRUE);
- self->childSetValue("check_sound", TRUE);
- self->childSetValue("check_texture", TRUE);
- self->childSetValue("check_snapshot", TRUE);
-}
-
-//static
-void LLFloaterInventoryFinder::selectNoTypes(void* user_data)
-{
- LLFloaterInventoryFinder* self = (LLFloaterInventoryFinder*)user_data;
- if(!self) return;
-
- self->childSetValue("check_animation", FALSE);
- self->childSetValue("check_calling_card", FALSE);
- self->childSetValue("check_clothing", FALSE);
- self->childSetValue("check_gesture", FALSE);
- self->childSetValue("check_landmark", FALSE);
- self->childSetValue("check_notecard", FALSE);
- self->childSetValue("check_object", FALSE);
- self->childSetValue("check_script", FALSE);
- self->childSetValue("check_sound", FALSE);
- self->childSetValue("check_texture", FALSE);
- self->childSetValue("check_snapshot", FALSE);
-}
-
-//////////////////////////////////////////////////////////////////////////////////
-// List Commands //
-
-void LLPanelMainInventory::initListCommandsHandlers()
-{
- mListCommands = getChild<LLPanel>("bottom_panel");
-
- mListCommands->childSetAction("options_gear_btn", boost::bind(&LLPanelMainInventory::onGearButtonClick, this));
- mListCommands->childSetAction("trash_btn", boost::bind(&LLPanelMainInventory::onTrashButtonClick, this));
- mListCommands->childSetAction("add_btn", boost::bind(&LLPanelMainInventory::onAddButtonClick, this));
-
- LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>("trash_btn");
- trash_btn->setDragAndDropHandler(boost::bind(&LLPanelMainInventory::handleDragAndDropToTrash, this
- , _4 // BOOL drop
- , _5 // EDragAndDropType cargo_type
- , _7 // EAcceptance* accept
- ));
-
- mCommitCallbackRegistrar.add("Inventory.GearDefault.Custom.Action", boost::bind(&LLPanelMainInventory::onCustomAction, this, _2));
- mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));
- mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
- mMenuAdd = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_add.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-
-}
-
-void LLPanelMainInventory::updateListCommands()
-{
- bool trash_enabled = isActionEnabled("delete");
-
- mListCommands->childSetEnabled("trash_btn", trash_enabled);
-}
-
-void LLPanelMainInventory::onGearButtonClick()
-{
- showActionMenu(mMenuGearDefault,"options_gear_btn");
-}
-
-void LLPanelMainInventory::onAddButtonClick()
-{
- showActionMenu(mMenuAdd,"add_btn");
-}
-
-void LLPanelMainInventory::showActionMenu(LLMenuGL* menu, std::string spawning_view_name)
-{
- if (menu)
- {
- menu->buildDrawLabels();
- menu->updateParent(LLMenuGL::sMenuContainer);
- LLView* spawning_view = getChild<LLView> (spawning_view_name);
- S32 menu_x, menu_y;
- //show menu in co-ordinates of panel
- spawning_view->localPointToOtherView(0, spawning_view->getRect().getHeight(), &menu_x, &menu_y, this);
- menu_y += menu->getRect().getHeight();
- LLMenuGL::showPopup(this, menu, menu_x, menu_y);
- }
-}
-
-void LLPanelMainInventory::onTrashButtonClick()
-{
- onClipboardAction("delete");
-}
-
-void LLPanelMainInventory::onClipboardAction(const LLSD& userdata)
-{
- std::string command_name = userdata.asString();
- getActivePanel()->getRootFolder()->doToSelected(getActivePanel()->getModel(),command_name);
-}
-
-void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
-{
- if (!isActionEnabled(userdata))
- return;
-
- const std::string command_name = userdata.asString();
- if (command_name == "new_window")
- {
- newWindow();
- }
- if (command_name == "sort_by_name")
- {
- const LLSD arg = "name";
- setSortBy(arg);
- }
- if (command_name == "sort_by_recent")
- {
- const LLSD arg = "date";
- setSortBy(arg);
- }
- if (command_name == "show_filters")
- {
- toggleFindOptions();
- }
- if (command_name == "reset_filters")
- {
- resetFilters();
- }
- if (command_name == "close_folders")
- {
- closeAllFolders();
- }
- if (command_name == "empty_trash")
- {
- const std::string notification = "ConfirmEmptyTrash";
- gInventory.emptyFolderType(notification, LLFolderType::FT_TRASH);
- }
- if (command_name == "empty_lostnfound")
- {
- const std::string notification = "ConfirmEmptyLostAndFound";
- gInventory.emptyFolderType(notification, LLFolderType::FT_LOST_AND_FOUND);
- }
- if (command_name == "save_texture")
- {
- LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
- if (!current_item)
- {
- return;
- }
-
- const LLUUID& item_id = current_item->getListener()->getUUID();
- LLPreviewTexture* preview_texture = LLFloaterReg::showTypedInstance<LLPreviewTexture>("preview_texture", LLSD(item_id), TAKE_FOCUS_YES);
- if (preview_texture)
- {
- preview_texture->openToSave();
- }
- }
-}
-
-BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
-{
- const std::string command_name = userdata.asString();
- if (command_name == "delete")
- {
- BOOL can_delete = FALSE;
- LLFolderView *folder = getActivePanel()->getRootFolder();
- if (folder)
- {
- can_delete = TRUE;
- std::set<LLUUID> selection_set;
- folder->getSelectionList(selection_set);
- for (std::set<LLUUID>::iterator iter = selection_set.begin();
- iter != selection_set.end();
- ++iter)
- {
- const LLUUID &item_id = (*iter);
- LLFolderViewItem *item = folder->getItemByID(item_id);
- can_delete &= item->getListener()->isItemRemovable();
- }
- return can_delete;
- }
- return FALSE;
- }
- if (command_name == "save_texture")
- {
- LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
- if (current_item)
- {
- return (current_item->getListener()->getInventoryType() == LLInventoryType::IT_TEXTURE);
- }
- return FALSE;
- }
- return TRUE;
-}
-
-bool LLPanelMainInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
-{
- *accept = ACCEPT_NO;
-
- const bool is_enabled = isActionEnabled("delete");
- if (is_enabled) *accept = ACCEPT_YES_MULTI;
-
- if (is_enabled && drop)
- {
- onClipboardAction("delete");
- }
- return true;
-}
-
-// List Commands //
-////////////////////////////////////////////////////////////////////////////////
+/**
+ * @file llsidepanelmaininventory.cpp
+ * @brief Implementation of llsidepanelmaininventory.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llpanelmaininventory.h"
+
+#include "lldndbutton.h"
+#include "llfilepicker.h"
+#include "llfloaterinventory.h"
+#include "llinventorybridge.h"
+#include "llinventoryfunctions.h"
+#include "llinventorypanel.h"
+#include "llfiltereditor.h"
+#include "llfloaterreg.h"
+#include "llpreviewtexture.h"
+#include "llscrollcontainer.h"
+#include "llsdserialize.h"
+#include "llspinctrl.h"
+#include "lltooldraganddrop.h"
+#include "llviewermenu.h"
+#include "llviewertexturelist.h"
+
+static LLRegisterPanelClassWrapper<LLPanelMainInventory> t_inventory("panel_main_inventory");
+
+void on_file_loaded_for_save(BOOL success,
+ LLViewerFetchedTexture *src_vi,
+ LLImageRaw* src,
+ LLImageRaw* aux_src,
+ S32 discard_level,
+ BOOL final,
+ void* userdata);
+
+///----------------------------------------------------------------------------
+/// LLFloaterInventoryFinder
+///----------------------------------------------------------------------------
+
+class LLFloaterInventoryFinder : public LLFloater
+{
+public:
+ LLFloaterInventoryFinder( LLPanelMainInventory* inventory_view);
+ virtual void draw();
+ /*virtual*/ BOOL postBuild();
+ void changeFilter(LLInventoryFilter* filter);
+ void updateElementsFromFilter();
+ BOOL getCheckShowEmpty();
+ BOOL getCheckSinceLogoff();
+
+ static void onTimeAgo(LLUICtrl*, void *);
+ static void onCheckSinceLogoff(LLUICtrl*, void *);
+ static void onCloseBtn(void* user_data);
+ static void selectAllTypes(void* user_data);
+ static void selectNoTypes(void* user_data);
+private:
+ LLPanelMainInventory* mPanelMainInventory;
+ LLSpinCtrl* mSpinSinceDays;
+ LLSpinCtrl* mSpinSinceHours;
+ LLInventoryFilter* mFilter;
+};
+
+///----------------------------------------------------------------------------
+/// LLPanelMainInventory
+///----------------------------------------------------------------------------
+
+LLPanelMainInventory::LLPanelMainInventory()
+ : LLPanel(),
+ mActivePanel(NULL),
+ mSavedFolderState(NULL),
+ mFilterText(""),
+ mMenuGearDefault(NULL),
+ mMenuAdd(NULL)
+{
+ LLMemType mt(LLMemType::MTYPE_INVENTORY_VIEW_INIT);
+ // Menu Callbacks (non contex menus)
+ mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelMainInventory::doToSelected, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.CloseAllFolders", boost::bind(&LLPanelMainInventory::closeAllFolders, this));
+ mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
+ mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
+ mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));
+ mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
+ mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
+ mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this));
+ mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));
+
+ // Controls
+ // *TODO: Just use persistant settings for each of these
+ U32 sort_order = gSavedSettings.getU32("InventorySortOrder");
+ BOOL sort_by_name = ! ( sort_order & LLInventoryFilter::SO_DATE );
+ BOOL sort_folders_by_name = ( sort_order & LLInventoryFilter::SO_FOLDERS_BY_NAME );
+ BOOL sort_system_folders_to_top = ( sort_order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP );
+
+ gSavedSettings.declareBOOL("Inventory.SortByName", sort_by_name, "Declared in code", FALSE);
+ gSavedSettings.declareBOOL("Inventory.SortByDate", !sort_by_name, "Declared in code", FALSE);
+ gSavedSettings.declareBOOL("Inventory.FoldersAlwaysByName", sort_folders_by_name, "Declared in code", FALSE);
+ gSavedSettings.declareBOOL("Inventory.SystemFoldersToTop", sort_system_folders_to_top, "Declared in code", FALSE);
+
+ mSavedFolderState = new LLSaveFolderState();
+ mSavedFolderState->setApply(FALSE);
+}
+
+BOOL LLPanelMainInventory::postBuild()
+{
+ gInventory.addObserver(this);
+
+ mFilterTabs = getChild<LLTabContainer>("inventory filter tabs");
+ mFilterTabs->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterSelected, this));
+
+ //panel->getFilter()->markDefault();
+
+ // Set up the default inv. panel/filter settings.
+ mActivePanel = getChild<LLInventoryPanel>("All Items");
+ if (mActivePanel)
+ {
+ // "All Items" is the previous only view, so it gets the InventorySortOrder
+ mActivePanel->setSortOrder(gSavedSettings.getU32("InventorySortOrder"));
+ mActivePanel->getFilter()->markDefault();
+ mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+ mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2));
+ }
+ LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>("Recent Items");
+ if (recent_items_panel)
+ {
+ recent_items_panel->setSinceLogoff(TRUE);
+ recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE);
+ recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
+ recent_items_panel->getFilter()->markDefault();
+ recent_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, recent_items_panel, _1, _2));
+ }
+
+ // Now load the stored settings from disk, if available.
+ std::ostringstream filterSaveName;
+ filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
+ llinfos << "LLPanelMainInventory::init: reading from " << filterSaveName << llendl;
+ llifstream file(filterSaveName.str());
+ LLSD savedFilterState;
+ if (file.is_open())
+ {
+ LLSDSerialize::fromXML(savedFilterState, file);
+ file.close();
+
+ // Load the persistent "Recent Items" settings.
+ // Note that the "All Items" settings do not persist.
+ if(recent_items_panel)
+ {
+ if(savedFilterState.has(recent_items_panel->getFilter()->getName()))
+ {
+ LLSD recent_items = savedFilterState.get(
+ recent_items_panel->getFilter()->getName());
+ recent_items_panel->getFilter()->fromLLSD(recent_items);
+ }
+ }
+
+ }
+
+ mFilterEditor = getChild<LLFilterEditor>("inventory search editor");
+ if (mFilterEditor)
+ {
+ mFilterEditor->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterEdit, this, _2));
+ }
+
+ // *TODO:Get the cost info from the server
+ const std::string upload_cost("10");
+ childSetLabelArg("Upload Image", "[COST]", upload_cost);
+ childSetLabelArg("Upload Sound", "[COST]", upload_cost);
+ childSetLabelArg("Upload Animation", "[COST]", upload_cost);
+ childSetLabelArg("Bulk Upload", "[COST]", upload_cost);
+
+ initListCommandsHandlers();
+ return TRUE;
+}
+
+// Destroys the object
+LLPanelMainInventory::~LLPanelMainInventory( void )
+{
+ // Save the filters state.
+ LLSD filterRoot;
+ LLInventoryPanel* all_items_panel = getChild<LLInventoryPanel>("All Items");
+ if (all_items_panel)
+ {
+ LLInventoryFilter* filter = all_items_panel->getFilter();
+ if (filter)
+ {
+ LLSD filterState;
+ filter->toLLSD(filterState);
+ filterRoot[filter->getName()] = filterState;
+ }
+ }
+
+ LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>("Recent Items");
+ if (recent_items_panel)
+ {
+ LLInventoryFilter* filter = recent_items_panel->getFilter();
+ if (filter)
+ {
+ LLSD filterState;
+ filter->toLLSD(filterState);
+ filterRoot[filter->getName()] = filterState;
+ }
+ }
+
+ std::ostringstream filterSaveName;
+ filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml");
+ llofstream filtersFile(filterSaveName.str());
+ if(!LLSDSerialize::toPrettyXML(filterRoot, filtersFile))
+ {
+ llwarns << "Could not write to filters save file " << filterSaveName << llendl;
+ }
+ else
+ filtersFile.close();
+
+ gInventory.removeObserver(this);
+ delete mSavedFolderState;
+}
+
+void LLPanelMainInventory::startSearch()
+{
+ // this forces focus to line editor portion of search editor
+ if (mFilterEditor)
+ {
+ mFilterEditor->focusFirstItem(TRUE);
+ }
+}
+
+BOOL LLPanelMainInventory::handleKeyHere(KEY key, MASK mask)
+{
+ LLFolderView* root_folder = mActivePanel ? mActivePanel->getRootFolder() : NULL;
+ if (root_folder)
+ {
+ // first check for user accepting current search results
+ if (mFilterEditor
+ && mFilterEditor->hasFocus()
+ && (key == KEY_RETURN
+ || key == KEY_DOWN)
+ && mask == MASK_NONE)
+ {
+ // move focus to inventory proper
+ mActivePanel->setFocus(TRUE);
+ root_folder->scrollToShowSelection();
+ return TRUE;
+ }
+
+ if (mActivePanel->hasFocus() && key == KEY_UP)
+ {
+ startSearch();
+ }
+ }
+
+ return LLPanel::handleKeyHere(key, mask);
+
+}
+
+//----------------------------------------------------------------------------
+// menu callbacks
+
+void LLPanelMainInventory::doToSelected(const LLSD& userdata)
+{
+ getPanel()->getRootFolder()->doToSelected(&gInventory, userdata);
+}
+
+void LLPanelMainInventory::closeAllFolders()
+{
+ getPanel()->getRootFolder()->closeAllFolders();
+}
+
+void LLPanelMainInventory::newWindow()
+{
+ LLFloaterInventory::showAgentInventory();
+}
+
+void LLPanelMainInventory::doCreate(const LLSD& userdata)
+{
+ menu_create_inventory_item(getPanel()->getRootFolder(), NULL, userdata);
+}
+
+void LLPanelMainInventory::resetFilters()
+{
+ LLFloaterInventoryFinder *finder = getFinder();
+ getActivePanel()->getFilter()->resetDefault();
+ if (finder)
+ {
+ finder->updateElementsFromFilter();
+ }
+
+ setFilterTextFromFilter();
+}
+
+void LLPanelMainInventory::setSortBy(const LLSD& userdata)
+{
+ std::string sort_field = userdata.asString();
+ if (sort_field == "name")
+ {
+ U32 order = getActivePanel()->getSortOrder();
+ getActivePanel()->setSortOrder( order & ~LLInventoryFilter::SO_DATE );
+
+ gSavedSettings.setBOOL("Inventory.SortByName", TRUE );
+ gSavedSettings.setBOOL("Inventory.SortByDate", FALSE );
+ }
+ else if (sort_field == "date")
+ {
+ U32 order = getActivePanel()->getSortOrder();
+ getActivePanel()->setSortOrder( order | LLInventoryFilter::SO_DATE );
+
+ gSavedSettings.setBOOL("Inventory.SortByName", FALSE );
+ gSavedSettings.setBOOL("Inventory.SortByDate", TRUE );
+ }
+ else if (sort_field == "foldersalwaysbyname")
+ {
+ U32 order = getActivePanel()->getSortOrder();
+ if ( order & LLInventoryFilter::SO_FOLDERS_BY_NAME )
+ {
+ order &= ~LLInventoryFilter::SO_FOLDERS_BY_NAME;
+
+ gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", FALSE );
+ }
+ else
+ {
+ order |= LLInventoryFilter::SO_FOLDERS_BY_NAME;
+
+ gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", TRUE );
+ }
+ getActivePanel()->setSortOrder( order );
+ }
+ else if (sort_field == "systemfolderstotop")
+ {
+ U32 order = getActivePanel()->getSortOrder();
+ if ( order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP )
+ {
+ order &= ~LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
+
+ gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", FALSE );
+ }
+ else
+ {
+ order |= LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
+
+ gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", TRUE );
+ }
+ getActivePanel()->setSortOrder( order );
+ }
+}
+
+// static
+BOOL LLPanelMainInventory::filtersVisible(void* user_data)
+{
+ LLPanelMainInventory* self = (LLPanelMainInventory*)user_data;
+ if(!self) return FALSE;
+
+ return self->getFinder() != NULL;
+}
+
+void LLPanelMainInventory::onClearSearch()
+{
+ LLFloater *finder = getFinder();
+ if (mActivePanel)
+ {
+ mActivePanel->setFilterSubString(LLStringUtil::null);
+ mActivePanel->setFilterTypes(0xffffffff);
+ }
+
+ if (finder)
+ {
+ LLFloaterInventoryFinder::selectAllTypes(finder);
+ }
+
+ // re-open folders that were initially open
+ if (mActivePanel)
+ {
+ mSavedFolderState->setApply(TRUE);
+ mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+ LLOpenFoldersWithSelection opener;
+ mActivePanel->getRootFolder()->applyFunctorRecursively(opener);
+ mActivePanel->getRootFolder()->scrollToShowSelection();
+ }
+}
+
+void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
+{
+ if (search_string == "")
+ {
+ onClearSearch();
+ }
+ if (!mActivePanel)
+ {
+ return;
+ }
+
+ gInventory.startBackgroundFetch();
+
+ std::string uppercase_search_string = search_string;
+ LLStringUtil::toUpper(uppercase_search_string);
+ if (mActivePanel->getFilterSubString().empty() && uppercase_search_string.empty())
+ {
+ // current filter and new filter empty, do nothing
+ return;
+ }
+
+ // save current folder open state if no filter currently applied
+ if (!mActivePanel->getRootFolder()->isFilterModified())
+ {
+ mSavedFolderState->setApply(FALSE);
+ mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+ }
+
+ // set new filter string
+ mActivePanel->setFilterSubString(uppercase_search_string);
+}
+
+
+ //static
+ BOOL LLPanelMainInventory::incrementalFind(LLFolderViewItem* first_item, const char *find_text, BOOL backward)
+ {
+ LLPanelMainInventory* active_view = NULL;
+
+ LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
+ for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
+ {
+ LLPanelMainInventory* iv = dynamic_cast<LLPanelMainInventory*>(*iter);
+ if (iv)
+ {
+ if (gFocusMgr.childHasKeyboardFocus(iv))
+ {
+ active_view = iv;
+ break;
+ }
+ }
+ }
+
+ if (!active_view)
+ {
+ return FALSE;
+ }
+
+ std::string search_string(find_text);
+
+ if (search_string.empty())
+ {
+ return FALSE;
+ }
+
+ if (active_view->getPanel() &&
+ active_view->getPanel()->getRootFolder()->search(first_item, search_string, backward))
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+
+void LLPanelMainInventory::onFilterSelected()
+{
+ // Find my index
+ mActivePanel = (LLInventoryPanel*)childGetVisibleTab("inventory filter tabs");
+
+ if (!mActivePanel)
+ {
+ return;
+ }
+ LLInventoryFilter* filter = mActivePanel->getFilter();
+ LLFloaterInventoryFinder *finder = getFinder();
+ if (finder)
+ {
+ finder->changeFilter(filter);
+ }
+ if (filter->isActive())
+ {
+ // If our filter is active we may be the first thing requiring a fetch so we better start it here.
+ gInventory.startBackgroundFetch();
+ }
+ setFilterTextFromFilter();
+}
+
+const std::string LLPanelMainInventory::getFilterSubString()
+{
+ return mActivePanel->getFilterSubString();
+}
+
+void LLPanelMainInventory::setFilterSubString(const std::string& string)
+{
+ mActivePanel->setFilterSubString(string);
+}
+
+BOOL LLPanelMainInventory::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+ // Check to see if we are auto scrolling from the last frame
+ LLInventoryPanel* panel = (LLInventoryPanel*)this->getActivePanel();
+ BOOL needsToScroll = panel->getScrollableContainer()->autoScroll(x, y);
+ if(mFilterTabs)
+ {
+ if(needsToScroll)
+ {
+ mFilterTabs->startDragAndDropDelayTimer();
+ }
+ }
+
+ BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+
+ return handled;
+}
+
+void LLPanelMainInventory::changed(U32 mask)
+{
+}
+
+
+void LLPanelMainInventory::setFilterTextFromFilter()
+{
+ mFilterText = mActivePanel->getFilter()->getFilterText();
+}
+
+void LLPanelMainInventory::toggleFindOptions()
+{
+ LLMemType mt(LLMemType::MTYPE_INVENTORY_VIEW_TOGGLE);
+ LLFloater *floater = getFinder();
+ if (!floater)
+ {
+ LLFloaterInventoryFinder * finder = new LLFloaterInventoryFinder(this);
+ mFinderHandle = finder->getHandle();
+ finder->openFloater();
+
+ LLFloater* parent_floater = gFloaterView->getParentFloater(this);
+ if (parent_floater) // Seraph: Fix this, shouldn't be null even for sidepanel
+ parent_floater->addDependentFloater(mFinderHandle);
+ // start background fetch of folders
+ gInventory.startBackgroundFetch();
+ }
+ else
+ {
+ floater->closeFloater();
+ }
+}
+
+void LLPanelMainInventory::setSelectCallback(const LLFolderView::signal_t::slot_type& cb)
+{
+ getChild<LLInventoryPanel>("All Items")->setSelectCallback(cb);
+ getChild<LLInventoryPanel>("Recent Items")->setSelectCallback(cb);
+}
+
+void LLPanelMainInventory::onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action)
+{
+ updateListCommands();
+ panel->onSelectionChange(items, user_action);
+}
+
+///----------------------------------------------------------------------------
+/// LLFloaterInventoryFinder
+///----------------------------------------------------------------------------
+
+LLFloaterInventoryFinder* LLPanelMainInventory::getFinder()
+{
+ return (LLFloaterInventoryFinder*)mFinderHandle.get();
+}
+
+
+LLFloaterInventoryFinder::LLFloaterInventoryFinder(LLPanelMainInventory* inventory_view) :
+ LLFloater(LLSD()),
+ mPanelMainInventory(inventory_view),
+ mFilter(inventory_view->getPanel()->getFilter())
+{
+ LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inventory_view_finder.xml", NULL);
+ updateElementsFromFilter();
+}
+
+
+void LLFloaterInventoryFinder::onCheckSinceLogoff(LLUICtrl *ctrl, void *user_data)
+{
+ LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
+ if (!self) return;
+
+ bool since_logoff= self->childGetValue("check_since_logoff");
+
+ if (!since_logoff &&
+ !( self->mSpinSinceDays->get() || self->mSpinSinceHours->get() ) )
+ {
+ self->mSpinSinceHours->set(1.0f);
+ }
+}
+BOOL LLFloaterInventoryFinder::postBuild()
+{
+ const LLRect& viewrect = mPanelMainInventory->getRect();
+ setRect(LLRect(viewrect.mLeft - getRect().getWidth(), viewrect.mTop, viewrect.mLeft, viewrect.mTop - getRect().getHeight()));
+
+ childSetAction("All", selectAllTypes, this);
+ childSetAction("None", selectNoTypes, this);
+
+ mSpinSinceHours = getChild<LLSpinCtrl>("spin_hours_ago");
+ childSetCommitCallback("spin_hours_ago", onTimeAgo, this);
+
+ mSpinSinceDays = getChild<LLSpinCtrl>("spin_days_ago");
+ childSetCommitCallback("spin_days_ago", onTimeAgo, this);
+
+ // mCheckSinceLogoff = getChild<LLSpinCtrl>("check_since_logoff");
+ childSetCommitCallback("check_since_logoff", onCheckSinceLogoff, this);
+
+ childSetAction("Close", onCloseBtn, this);
+
+ updateElementsFromFilter();
+ return TRUE;
+}
+void LLFloaterInventoryFinder::onTimeAgo(LLUICtrl *ctrl, void *user_data)
+{
+ LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
+ if (!self) return;
+
+ bool since_logoff=true;
+ if ( self->mSpinSinceDays->get() || self->mSpinSinceHours->get() )
+ {
+ since_logoff = false;
+ }
+ self->childSetValue("check_since_logoff", since_logoff);
+}
+
+void LLFloaterInventoryFinder::changeFilter(LLInventoryFilter* filter)
+{
+ mFilter = filter;
+ updateElementsFromFilter();
+}
+
+void LLFloaterInventoryFinder::updateElementsFromFilter()
+{
+ if (!mFilter)
+ return;
+
+ // Get data needed for filter display
+ U32 filter_types = mFilter->getFilterTypes();
+ std::string filter_string = mFilter->getFilterSubString();
+ LLInventoryFilter::EFolderShow show_folders = mFilter->getShowFolderState();
+ U32 hours = mFilter->getHoursAgo();
+
+ // update the ui elements
+ setTitle(mFilter->getName());
+
+ childSetValue("check_animation", (S32) (filter_types & 0x1 << LLInventoryType::IT_ANIMATION));
+
+ childSetValue("check_calling_card", (S32) (filter_types & 0x1 << LLInventoryType::IT_CALLINGCARD));
+ childSetValue("check_clothing", (S32) (filter_types & 0x1 << LLInventoryType::IT_WEARABLE));
+ childSetValue("check_gesture", (S32) (filter_types & 0x1 << LLInventoryType::IT_GESTURE));
+ childSetValue("check_landmark", (S32) (filter_types & 0x1 << LLInventoryType::IT_LANDMARK));
+ childSetValue("check_notecard", (S32) (filter_types & 0x1 << LLInventoryType::IT_NOTECARD));
+ childSetValue("check_object", (S32) (filter_types & 0x1 << LLInventoryType::IT_OBJECT));
+ childSetValue("check_script", (S32) (filter_types & 0x1 << LLInventoryType::IT_LSL));
+ childSetValue("check_sound", (S32) (filter_types & 0x1 << LLInventoryType::IT_SOUND));
+ childSetValue("check_texture", (S32) (filter_types & 0x1 << LLInventoryType::IT_TEXTURE));
+ childSetValue("check_snapshot", (S32) (filter_types & 0x1 << LLInventoryType::IT_SNAPSHOT));
+ childSetValue("check_show_empty", show_folders == LLInventoryFilter::SHOW_ALL_FOLDERS);
+ childSetValue("check_since_logoff", mFilter->isSinceLogoff());
+ mSpinSinceHours->set((F32)(hours % 24));
+ mSpinSinceDays->set((F32)(hours / 24));
+}
+
+void LLFloaterInventoryFinder::draw()
+{
+ LLMemType mt(LLMemType::MTYPE_INVENTORY_DRAW);
+ U32 filter = 0xffffffff;
+ BOOL filtered_by_all_types = TRUE;
+
+ if (!childGetValue("check_animation"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_ANIMATION);
+ filtered_by_all_types = FALSE;
+ }
+
+
+ if (!childGetValue("check_calling_card"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_CALLINGCARD);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_clothing"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_WEARABLE);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_gesture"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_GESTURE);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_landmark"))
+
+
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_LANDMARK);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_notecard"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_NOTECARD);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_object"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_OBJECT);
+ filter &= ~(0x1 << LLInventoryType::IT_ATTACHMENT);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_script"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_LSL);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_sound"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_SOUND);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_texture"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_TEXTURE);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!childGetValue("check_snapshot"))
+ {
+ filter &= ~(0x1 << LLInventoryType::IT_SNAPSHOT);
+ filtered_by_all_types = FALSE;
+ }
+
+ if (!filtered_by_all_types)
+ {
+ // don't include folders in filter, unless I've selected everything
+ filter &= ~(0x1 << LLInventoryType::IT_CATEGORY);
+ }
+
+ // update the panel, panel will update the filter
+ mPanelMainInventory->getPanel()->setShowFolderState(getCheckShowEmpty() ?
+ LLInventoryFilter::SHOW_ALL_FOLDERS : LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
+ mPanelMainInventory->getPanel()->setFilterTypes(filter);
+ if (getCheckSinceLogoff())
+ {
+ mSpinSinceDays->set(0);
+ mSpinSinceHours->set(0);
+ }
+ U32 days = (U32)mSpinSinceDays->get();
+ U32 hours = (U32)mSpinSinceHours->get();
+ if (hours > 24)
+ {
+ days += hours / 24;
+ hours = (U32)hours % 24;
+ mSpinSinceDays->set((F32)days);
+ mSpinSinceHours->set((F32)hours);
+ }
+ hours += days * 24;
+ mPanelMainInventory->getPanel()->setHoursAgo(hours);
+ mPanelMainInventory->getPanel()->setSinceLogoff(getCheckSinceLogoff());
+ mPanelMainInventory->setFilterTextFromFilter();
+
+ LLPanel::draw();
+}
+
+BOOL LLFloaterInventoryFinder::getCheckShowEmpty()
+{
+ return childGetValue("check_show_empty");
+}
+
+BOOL LLFloaterInventoryFinder::getCheckSinceLogoff()
+{
+ return childGetValue("check_since_logoff");
+}
+
+void LLFloaterInventoryFinder::onCloseBtn(void* user_data)
+{
+ LLFloaterInventoryFinder* finderp = (LLFloaterInventoryFinder*)user_data;
+ finderp->closeFloater();
+}
+
+// static
+void LLFloaterInventoryFinder::selectAllTypes(void* user_data)
+{
+ LLFloaterInventoryFinder* self = (LLFloaterInventoryFinder*)user_data;
+ if(!self) return;
+
+ self->childSetValue("check_animation", TRUE);
+ self->childSetValue("check_calling_card", TRUE);
+ self->childSetValue("check_clothing", TRUE);
+ self->childSetValue("check_gesture", TRUE);
+ self->childSetValue("check_landmark", TRUE);
+ self->childSetValue("check_notecard", TRUE);
+ self->childSetValue("check_object", TRUE);
+ self->childSetValue("check_script", TRUE);
+ self->childSetValue("check_sound", TRUE);
+ self->childSetValue("check_texture", TRUE);
+ self->childSetValue("check_snapshot", TRUE);
+}
+
+//static
+void LLFloaterInventoryFinder::selectNoTypes(void* user_data)
+{
+ LLFloaterInventoryFinder* self = (LLFloaterInventoryFinder*)user_data;
+ if(!self) return;
+
+ self->childSetValue("check_animation", FALSE);
+ self->childSetValue("check_calling_card", FALSE);
+ self->childSetValue("check_clothing", FALSE);
+ self->childSetValue("check_gesture", FALSE);
+ self->childSetValue("check_landmark", FALSE);
+ self->childSetValue("check_notecard", FALSE);
+ self->childSetValue("check_object", FALSE);
+ self->childSetValue("check_script", FALSE);
+ self->childSetValue("check_sound", FALSE);
+ self->childSetValue("check_texture", FALSE);
+ self->childSetValue("check_snapshot", FALSE);
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// List Commands //
+
+void LLPanelMainInventory::initListCommandsHandlers()
+{
+ mListCommands = getChild<LLPanel>("bottom_panel");
+
+ mListCommands->childSetAction("options_gear_btn", boost::bind(&LLPanelMainInventory::onGearButtonClick, this));
+ mListCommands->childSetAction("trash_btn", boost::bind(&LLPanelMainInventory::onTrashButtonClick, this));
+ mListCommands->childSetAction("add_btn", boost::bind(&LLPanelMainInventory::onAddButtonClick, this));
+
+ LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>("trash_btn");
+ trash_btn->setDragAndDropHandler(boost::bind(&LLPanelMainInventory::handleDragAndDropToTrash, this
+ , _4 // BOOL drop
+ , _5 // EDragAndDropType cargo_type
+ , _7 // EAcceptance* accept
+ ));
+
+ mCommitCallbackRegistrar.add("Inventory.GearDefault.Custom.Action", boost::bind(&LLPanelMainInventory::onCustomAction, this, _2));
+ mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));
+ mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
+ mMenuAdd = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory_add.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
+
+}
+
+void LLPanelMainInventory::updateListCommands()
+{
+ bool trash_enabled = isActionEnabled("delete");
+
+ mListCommands->childSetEnabled("trash_btn", trash_enabled);
+}
+
+void LLPanelMainInventory::onGearButtonClick()
+{
+ showActionMenu(mMenuGearDefault,"options_gear_btn");
+}
+
+void LLPanelMainInventory::onAddButtonClick()
+{
+ showActionMenu(mMenuAdd,"add_btn");
+}
+
+void LLPanelMainInventory::showActionMenu(LLMenuGL* menu, std::string spawning_view_name)
+{
+ if (menu)
+ {
+ menu->buildDrawLabels();
+ menu->updateParent(LLMenuGL::sMenuContainer);
+ LLView* spawning_view = getChild<LLView> (spawning_view_name);
+ S32 menu_x, menu_y;
+ //show menu in co-ordinates of panel
+ spawning_view->localPointToOtherView(0, spawning_view->getRect().getHeight(), &menu_x, &menu_y, this);
+ menu_y += menu->getRect().getHeight();
+ LLMenuGL::showPopup(this, menu, menu_x, menu_y);
+ }
+}
+
+void LLPanelMainInventory::onTrashButtonClick()
+{
+ onClipboardAction("delete");
+}
+
+void LLPanelMainInventory::onClipboardAction(const LLSD& userdata)
+{
+ std::string command_name = userdata.asString();
+ getActivePanel()->getRootFolder()->doToSelected(getActivePanel()->getModel(),command_name);
+}
+
+void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
+{
+ if (!isActionEnabled(userdata))
+ return;
+
+ const std::string command_name = userdata.asString();
+ if (command_name == "new_window")
+ {
+ newWindow();
+ }
+ if (command_name == "sort_by_name")
+ {
+ const LLSD arg = "name";
+ setSortBy(arg);
+ }
+ if (command_name == "sort_by_recent")
+ {
+ const LLSD arg = "date";
+ setSortBy(arg);
+ }
+ if (command_name == "show_filters")
+ {
+ toggleFindOptions();
+ }
+ if (command_name == "reset_filters")
+ {
+ resetFilters();
+ }
+ if (command_name == "close_folders")
+ {
+ closeAllFolders();
+ }
+ if (command_name == "empty_trash")
+ {
+ const std::string notification = "ConfirmEmptyTrash";
+ gInventory.emptyFolderType(notification, LLFolderType::FT_TRASH);
+ }
+ if (command_name == "empty_lostnfound")
+ {
+ const std::string notification = "ConfirmEmptyLostAndFound";
+ gInventory.emptyFolderType(notification, LLFolderType::FT_LOST_AND_FOUND);
+ }
+ if (command_name == "save_texture")
+ {
+ LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
+ if (!current_item)
+ {
+ return;
+ }
+
+ const LLUUID& item_id = current_item->getListener()->getUUID();
+ LLPreviewTexture* preview_texture = LLFloaterReg::showTypedInstance<LLPreviewTexture>("preview_texture", LLSD(item_id), TAKE_FOCUS_YES);
+ if (preview_texture)
+ {
+ preview_texture->openToSave();
+ }
+ }
+}
+
+BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
+{
+ const std::string command_name = userdata.asString();
+ if (command_name == "delete")
+ {
+ BOOL can_delete = FALSE;
+ LLFolderView *folder = getActivePanel()->getRootFolder();
+ if (folder)
+ {
+ can_delete = TRUE;
+ std::set<LLUUID> selection_set;
+ folder->getSelectionList(selection_set);
+ for (std::set<LLUUID>::iterator iter = selection_set.begin();
+ iter != selection_set.end();
+ ++iter)
+ {
+ const LLUUID &item_id = (*iter);
+ LLFolderViewItem *item = folder->getItemByID(item_id);
+ can_delete &= item->getListener()->isItemRemovable();
+ }
+ return can_delete;
+ }
+ return FALSE;
+ }
+ if (command_name == "save_texture")
+ {
+ LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
+ if (current_item)
+ {
+ return (current_item->getListener()->getInventoryType() == LLInventoryType::IT_TEXTURE);
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool LLPanelMainInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
+{
+ *accept = ACCEPT_NO;
+
+ const bool is_enabled = isActionEnabled("delete");
+ if (is_enabled) *accept = ACCEPT_YES_MULTI;
+
+ if (is_enabled && drop)
+ {
+ onClipboardAction("delete");
+ }
+ return true;
+}
+
+// List Commands //
+////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index 627be21577..ae78d3bec8 100644
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -1,149 +1,149 @@
-/**
- * @file llpanelmaininventory.h
- * @brief llpanelmaininventory.h
- * class definition
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLPANELMAININVENTORY_H
-#define LL_LLPANELMAININVENTORY_H
-
-#include "llpanel.h"
-#include "llinventoryobserver.h"
-
-#include "llfolderview.h"
-
-class LLFolderViewItem;
-class LLInventoryPanel;
-class LLSaveFolderState;
-class LLFilterEditor;
-class LLTabContainer;
-class LLFloaterInventoryFinder;
-class LLMenuGL;
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLPanelMainInventory
-//
-// This is a panel used to view and control an agent's inventory,
-// including all the fixin's (e.g. AllItems/RecentItems tabs, filter floaters).
-//
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLPanelMainInventory : public LLPanel, LLInventoryObserver
-{
-public:
- friend class LLFloaterInventoryFinder;
-
- LLPanelMainInventory();
- ~LLPanelMainInventory();
-
- BOOL postBuild();
-
- virtual BOOL handleKeyHere(KEY key, MASK mask);
-
- // Inherited functionality
- /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg);
- /*virtual*/ void changed(U32 mask);
-
- LLInventoryPanel* getPanel() { return mActivePanel; }
- LLInventoryPanel* getActivePanel() { return mActivePanel; }
- const LLInventoryPanel* getActivePanel() const { return mActivePanel; }
-
- const std::string& getFilterText() const { return mFilterText; }
-
- void setSelectCallback(const LLFolderView::signal_t::slot_type& cb);
-
-protected:
- //
- // Misc functions
- //
- void setFilterTextFromFilter();
- void startSearch();
-
- void toggleFindOptions();
- void onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action);
-
- static BOOL filtersVisible(void* user_data);
- void onClearSearch();
- static void onFoldersByName(void *user_data);
- static BOOL checkFoldersByName(void *user_data);
- void onFilterEdit(const std::string& search_string );
- static BOOL incrementalFind(LLFolderViewItem* first_item, const char *find_text, BOOL backward);
- void onFilterSelected();
-
- const std::string getFilterSubString();
- void setFilterSubString(const std::string& string);
-
- // menu callbacks
- void doToSelected(const LLSD& userdata);
- void closeAllFolders();
- void newWindow();
- void doCreate(const LLSD& userdata);
- void resetFilters();
- void setSortBy(const LLSD& userdata);
-
-private:
- LLFloaterInventoryFinder* getFinder();
-
- LLFilterEditor* mFilterEditor;
- LLTabContainer* mFilterTabs;
- LLHandle<LLFloater> mFinderHandle;
- LLInventoryPanel* mActivePanel;
- LLSaveFolderState* mSavedFolderState;
- std::string mFilterText;
-
-
- //////////////////////////////////////////////////////////////////////////////////
- // List Commands //
-protected:
- void initListCommandsHandlers();
- void updateListCommands();
- void onGearButtonClick();
- void onAddButtonClick();
- void showActionMenu(LLMenuGL* menu, std::string spawning_view_name);
- void onTrashButtonClick();
- void onClipboardAction(const LLSD& userdata);
- BOOL isActionEnabled(const LLSD& command_name);
- void onCustomAction(const LLSD& command_name);
- bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
-private:
- LLPanel* mListCommands;
- LLMenuGL* mMenuGearDefault;
- LLMenuGL* mMenuAdd;
- // List Commands //
- ////////////////////////////////////////////////////////////////////////////////
-};
-
-#endif // LL_LLPANELMAININVENTORY_H
-
-
-
+/**
+ * @file llpanelmaininventory.h
+ * @brief llpanelmaininventory.h
+ * class definition
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELMAININVENTORY_H
+#define LL_LLPANELMAININVENTORY_H
+
+#include "llpanel.h"
+#include "llinventoryobserver.h"
+
+#include "llfolderview.h"
+
+class LLFolderViewItem;
+class LLInventoryPanel;
+class LLSaveFolderState;
+class LLFilterEditor;
+class LLTabContainer;
+class LLFloaterInventoryFinder;
+class LLMenuGL;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLPanelMainInventory
+//
+// This is a panel used to view and control an agent's inventory,
+// including all the fixin's (e.g. AllItems/RecentItems tabs, filter floaters).
+//
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLPanelMainInventory : public LLPanel, LLInventoryObserver
+{
+public:
+ friend class LLFloaterInventoryFinder;
+
+ LLPanelMainInventory();
+ ~LLPanelMainInventory();
+
+ BOOL postBuild();
+
+ virtual BOOL handleKeyHere(KEY key, MASK mask);
+
+ // Inherited functionality
+ /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg);
+ /*virtual*/ void changed(U32 mask);
+
+ LLInventoryPanel* getPanel() { return mActivePanel; }
+ LLInventoryPanel* getActivePanel() { return mActivePanel; }
+ const LLInventoryPanel* getActivePanel() const { return mActivePanel; }
+
+ const std::string& getFilterText() const { return mFilterText; }
+
+ void setSelectCallback(const LLFolderView::signal_t::slot_type& cb);
+
+protected:
+ //
+ // Misc functions
+ //
+ void setFilterTextFromFilter();
+ void startSearch();
+
+ void toggleFindOptions();
+ void onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action);
+
+ static BOOL filtersVisible(void* user_data);
+ void onClearSearch();
+ static void onFoldersByName(void *user_data);
+ static BOOL checkFoldersByName(void *user_data);
+ void onFilterEdit(const std::string& search_string );
+ static BOOL incrementalFind(LLFolderViewItem* first_item, const char *find_text, BOOL backward);
+ void onFilterSelected();
+
+ const std::string getFilterSubString();
+ void setFilterSubString(const std::string& string);
+
+ // menu callbacks
+ void doToSelected(const LLSD& userdata);
+ void closeAllFolders();
+ void newWindow();
+ void doCreate(const LLSD& userdata);
+ void resetFilters();
+ void setSortBy(const LLSD& userdata);
+
+private:
+ LLFloaterInventoryFinder* getFinder();
+
+ LLFilterEditor* mFilterEditor;
+ LLTabContainer* mFilterTabs;
+ LLHandle<LLFloater> mFinderHandle;
+ LLInventoryPanel* mActivePanel;
+ LLSaveFolderState* mSavedFolderState;
+ std::string mFilterText;
+
+
+ //////////////////////////////////////////////////////////////////////////////////
+ // List Commands //
+protected:
+ void initListCommandsHandlers();
+ void updateListCommands();
+ void onGearButtonClick();
+ void onAddButtonClick();
+ void showActionMenu(LLMenuGL* menu, std::string spawning_view_name);
+ void onTrashButtonClick();
+ void onClipboardAction(const LLSD& userdata);
+ BOOL isActionEnabled(const LLSD& command_name);
+ void onCustomAction(const LLSD& command_name);
+ bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
+private:
+ LLPanel* mListCommands;
+ LLMenuGL* mMenuGearDefault;
+ LLMenuGL* mMenuAdd;
+ // List Commands //
+ ////////////////////////////////////////////////////////////////////////////////
+};
+
+#endif // LL_LLPANELMAININVENTORY_H
+
+
+
diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp
index bec2494eac..1a772e4eff 100644
--- a/indra/newview/llpanelmediasettingssecurity.cpp
+++ b/indra/newview/llpanelmediasettingssecurity.cpp
@@ -1,345 +1,345 @@
-/**
- * @file llpanelmediasettingssecurity.cpp
- * @brief LLPanelMediaSettingsSecurity class implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llfloaterreg.h"
-#include "llpanelmediasettingssecurity.h"
-#include "llpanelcontents.h"
-#include "llcheckboxctrl.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "lluictrlfactory.h"
-#include "llwindow.h"
-#include "llviewerwindow.h"
-#include "llsdutil.h"
-#include "llselectmgr.h"
-#include "llmediaentry.h"
-#include "llfloaterwhitelistentry.h"
-#include "llfloatermediasettings.h"
-////////////////////////////////////////////////////////////////////////////////
-//
-LLPanelMediaSettingsSecurity::LLPanelMediaSettingsSecurity() :
- mParent( NULL )
-{
- mCommitCallbackRegistrar.add("Media.whitelistAdd", boost::bind(&LLPanelMediaSettingsSecurity::onBtnAdd, this));
- mCommitCallbackRegistrar.add("Media.whitelistDelete", boost::bind(&LLPanelMediaSettingsSecurity::onBtnDel, this));
- // build dialog from XML
- LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_security.xml");
-
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-BOOL LLPanelMediaSettingsSecurity::postBuild()
-{
- mEnableWhiteList = getChild< LLCheckBoxCtrl >( LLMediaEntry::WHITELIST_ENABLE_KEY );
- mWhiteListList = getChild< LLScrollListCtrl >( LLMediaEntry::WHITELIST_KEY );
-
- setDefaultBtn("whitelist_add");
-
- return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// virtual
-LLPanelMediaSettingsSecurity::~LLPanelMediaSettingsSecurity()
-{
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-void LLPanelMediaSettingsSecurity::draw()
-{
- // housekeeping
- LLPanel::draw();
-
- // if list is empty, disable DEL button and checkbox to enable use of list
- if ( mWhiteListList->isEmpty() )
- {
- childSetEnabled( "whitelist_del", false );
- childSetEnabled( LLMediaEntry::WHITELIST_KEY, false );
- childSetEnabled( LLMediaEntry::WHITELIST_ENABLE_KEY, false );
- }
- else
- {
- childSetEnabled( "whitelist_del", true );
- childSetEnabled( LLMediaEntry::WHITELIST_KEY, true );
- childSetEnabled( LLMediaEntry::WHITELIST_ENABLE_KEY, true );
- };
-
- // if nothing is selected, disable DEL button
- if ( mWhiteListList->getSelectedValue().asString().empty() )
- {
- childSetEnabled( "whitelist_del", false );
- }
- else
- {
- childSetEnabled( "whitelist_del", true );
- };
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// static
-void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media_settings , bool editable)
-{
- LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
-
- if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
- {
- if(LLFloaterMediaSettings::getInstance()->mMultipleMedia)
- {
- self->clearValues(self, editable);
- // only show multiple
- return;
- }
-
- }
- else
- {
- if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia)
- {
- self->clearValues(self, editable);
- // only show multiple
- return;
- }
-
- }
- std::string base_key( "" );
- std::string tentative_key( "" );
-
- struct
- {
- std::string key_name;
- LLUICtrl* ctrl_ptr;
- std::string ctrl_type;
-
- } data_set [] =
- {
- { LLMediaEntry::WHITELIST_ENABLE_KEY, self->mEnableWhiteList, "LLCheckBoxCtrl" },
- { LLMediaEntry::WHITELIST_KEY, self->mWhiteListList, "LLScrollListCtrl" },
- { "", NULL , "" }
- };
-
- for( int i = 0; data_set[ i ].key_name.length() > 0; ++i )
- {
- base_key = std::string( data_set[ i ].key_name );
- tentative_key = base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX );
-
- // TODO: CP - I bet there is a better way to do this using Boost
- if ( media_settings[ base_key ].isDefined() )
- {
- if ( data_set[ i ].ctrl_type == "LLCheckBoxCtrl" )
- {
- static_cast< LLCheckBoxCtrl* >( data_set[ i ].ctrl_ptr )->
- setValue( media_settings[ base_key ].asBoolean() );
- }
- else
- if ( data_set[ i ].ctrl_type == "LLScrollListCtrl" )
- {
- // get control
- LLScrollListCtrl* list = static_cast< LLScrollListCtrl* >( data_set[ i ].ctrl_ptr );
- list->deleteAllItems();
-
- // points to list of white list URLs
- LLSD url_list = media_settings[ base_key ];
-
- // iterate over them and add to scroll list
- LLSD::array_iterator iter = url_list.beginArray();
- while( iter != url_list.endArray() )
- {
- // TODO: is iter guaranteed to be valid here?
- std::string url = *iter;
- list->addSimpleElement( url );
- ++iter;
- };
- };
- data_set[ i ].ctrl_ptr->setEnabled(editable);
- data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );
- };
- };
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// static
-void LLPanelMediaSettingsSecurity::clearValues( void* userdata , bool editable)
-{
- LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
- self->mEnableWhiteList->clear();
- self->mWhiteListList->deleteAllItems();
- self->mEnableWhiteList->setEnabled(editable);
- self->mWhiteListList->setEnabled(editable);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-void LLPanelMediaSettingsSecurity::preApply()
-{
- // no-op
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in )
-{
- fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = mEnableWhiteList->getValue();
-
- // iterate over white list and extract items
- std::vector< LLScrollListItem* > white_list_items = mWhiteListList->getAllData();
- std::vector< LLScrollListItem* >::iterator iter = white_list_items.begin();
- // *NOTE: need actually set the key to be an emptyArray(), or the merge
- // we do with this LLSD will think there's nothing to change.
- fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray();
- while( iter != white_list_items.end() )
- {
- std::string white_list_url = (*iter)->getValue().asString();
- fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( white_list_url );
- ++iter;
- };
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-void LLPanelMediaSettingsSecurity::postApply()
-{
- // no-op
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Try to make a valid URL if a fragment (
-// white list list box widget and build a list to test against. Can also
-const std::string LLPanelMediaSettingsSecurity::makeValidUrl( const std::string& src_url )
-{
- // use LLURI to determine if we have a valid scheme
- LLURI candidate_url( src_url );
- if ( candidate_url.scheme().empty() )
- {
- // build a URL comprised of default scheme and the original fragment
- const std::string default_scheme( "http://" );
- return default_scheme + src_url;
- };
-
- // we *could* test the "default scheme" + "original fragment" URL again
- // using LLURI to see if it's valid but I think the outcome is the same
- // in either case - our only option is to return the original URL
-
- // we *think* the original url passed in was valid
- return src_url;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// wrapper for testing a URL against the whitelist. We grab entries from
-// white list list box widget and build a list to test against. Can also
-// optionally pass the URL that you are trying to add to the widget since
-// it won't be added until this call returns.
-bool LLPanelMediaSettingsSecurity::passesWhiteList( const std::string& added_url,
- const std::string& test_url )
-{
- // the checkUrlAgainstWhitelist(..) function works on a vector
- // of strings for the white list entries - in this panel, the white list
- // is stored in the widgets themselves so we need to build something compatible.
- std::vector< std::string > whitelist_strings;
- whitelist_strings.clear(); // may not be required - I forget what the spec says.
-
- // step through whitelist widget entries and grab them as strings
- std::vector< LLScrollListItem* > white_list_items = mWhiteListList->getAllData();
- std::vector< LLScrollListItem* >::iterator iter = white_list_items.begin();
- while( iter != white_list_items.end() )
- {
- const std::string whitelist_url = (*iter)->getValue().asString();
- whitelist_strings.push_back( whitelist_url );
-
- ++iter;
- };
-
- // add in the URL that might be added to the whitelist so we can test that too
- if ( added_url.length() )
- whitelist_strings.push_back( added_url );
-
- // possible the URL is just a fragment so we validize it
- const std::string valid_url = makeValidUrl( test_url );
-
- // indicate if the URL passes whitelist
- return LLMediaEntry::checkUrlAgainstWhitelist( valid_url, whitelist_strings );
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//
-void LLPanelMediaSettingsSecurity::addWhiteListItem(const std::string& url)
-{
- // grab home URL from the general panel (via the parent floater)
- std::string home_url( "" );
- if ( mParent )
- home_url = mParent->getHomeUrl();
-
- // if the home URL is blank (user hasn't entered it yet) then
- // don't bother to check if it passes the white list
- if ( home_url.empty() )
- {
- mWhiteListList->addSimpleElement( url );
- return;
- };
-
- // if the URL passes the white list, add it
- if ( passesWhiteList( url, home_url ) )
- {
- mWhiteListList->addSimpleElement( url );
- }
- else
- // display a message indicating you can't do that
- {
- LLNotifications::instance().add("WhiteListInvalidatesHomeUrl");
- };
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// static
-void LLPanelMediaSettingsSecurity::onBtnAdd( void* userdata )
-{
- LLFloaterReg::showInstance("whitelist_entry");
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// static
-void LLPanelMediaSettingsSecurity::onBtnDel( void* userdata )
-{
- LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
-
- self->mWhiteListList->deleteSelectedItems();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-void LLPanelMediaSettingsSecurity::setParent( LLFloaterMediaSettings* parent )
-{
- mParent = parent;
-};
-
+/**
+ * @file llpanelmediasettingssecurity.cpp
+ * @brief LLPanelMediaSettingsSecurity class implementation
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llfloaterreg.h"
+#include "llpanelmediasettingssecurity.h"
+#include "llpanelcontents.h"
+#include "llcheckboxctrl.h"
+#include "llscrolllistctrl.h"
+#include "llscrolllistitem.h"
+#include "lluictrlfactory.h"
+#include "llwindow.h"
+#include "llviewerwindow.h"
+#include "llsdutil.h"
+#include "llselectmgr.h"
+#include "llmediaentry.h"
+#include "llfloaterwhitelistentry.h"
+#include "llfloatermediasettings.h"
+////////////////////////////////////////////////////////////////////////////////
+//
+LLPanelMediaSettingsSecurity::LLPanelMediaSettingsSecurity() :
+ mParent( NULL )
+{
+ mCommitCallbackRegistrar.add("Media.whitelistAdd", boost::bind(&LLPanelMediaSettingsSecurity::onBtnAdd, this));
+ mCommitCallbackRegistrar.add("Media.whitelistDelete", boost::bind(&LLPanelMediaSettingsSecurity::onBtnDel, this));
+ // build dialog from XML
+ LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_security.xml");
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+BOOL LLPanelMediaSettingsSecurity::postBuild()
+{
+ mEnableWhiteList = getChild< LLCheckBoxCtrl >( LLMediaEntry::WHITELIST_ENABLE_KEY );
+ mWhiteListList = getChild< LLScrollListCtrl >( LLMediaEntry::WHITELIST_KEY );
+
+ setDefaultBtn("whitelist_add");
+
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// virtual
+LLPanelMediaSettingsSecurity::~LLPanelMediaSettingsSecurity()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLPanelMediaSettingsSecurity::draw()
+{
+ // housekeeping
+ LLPanel::draw();
+
+ // if list is empty, disable DEL button and checkbox to enable use of list
+ if ( mWhiteListList->isEmpty() )
+ {
+ childSetEnabled( "whitelist_del", false );
+ childSetEnabled( LLMediaEntry::WHITELIST_KEY, false );
+ childSetEnabled( LLMediaEntry::WHITELIST_ENABLE_KEY, false );
+ }
+ else
+ {
+ childSetEnabled( "whitelist_del", true );
+ childSetEnabled( LLMediaEntry::WHITELIST_KEY, true );
+ childSetEnabled( LLMediaEntry::WHITELIST_ENABLE_KEY, true );
+ };
+
+ // if nothing is selected, disable DEL button
+ if ( mWhiteListList->getSelectedValue().asString().empty() )
+ {
+ childSetEnabled( "whitelist_del", false );
+ }
+ else
+ {
+ childSetEnabled( "whitelist_del", true );
+ };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// static
+void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media_settings , bool editable)
+{
+ LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
+
+ if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
+ {
+ if(LLFloaterMediaSettings::getInstance()->mMultipleMedia)
+ {
+ self->clearValues(self, editable);
+ // only show multiple
+ return;
+ }
+
+ }
+ else
+ {
+ if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia)
+ {
+ self->clearValues(self, editable);
+ // only show multiple
+ return;
+ }
+
+ }
+ std::string base_key( "" );
+ std::string tentative_key( "" );
+
+ struct
+ {
+ std::string key_name;
+ LLUICtrl* ctrl_ptr;
+ std::string ctrl_type;
+
+ } data_set [] =
+ {
+ { LLMediaEntry::WHITELIST_ENABLE_KEY, self->mEnableWhiteList, "LLCheckBoxCtrl" },
+ { LLMediaEntry::WHITELIST_KEY, self->mWhiteListList, "LLScrollListCtrl" },
+ { "", NULL , "" }
+ };
+
+ for( int i = 0; data_set[ i ].key_name.length() > 0; ++i )
+ {
+ base_key = std::string( data_set[ i ].key_name );
+ tentative_key = base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX );
+
+ // TODO: CP - I bet there is a better way to do this using Boost
+ if ( media_settings[ base_key ].isDefined() )
+ {
+ if ( data_set[ i ].ctrl_type == "LLCheckBoxCtrl" )
+ {
+ static_cast< LLCheckBoxCtrl* >( data_set[ i ].ctrl_ptr )->
+ setValue( media_settings[ base_key ].asBoolean() );
+ }
+ else
+ if ( data_set[ i ].ctrl_type == "LLScrollListCtrl" )
+ {
+ // get control
+ LLScrollListCtrl* list = static_cast< LLScrollListCtrl* >( data_set[ i ].ctrl_ptr );
+ list->deleteAllItems();
+
+ // points to list of white list URLs
+ LLSD url_list = media_settings[ base_key ];
+
+ // iterate over them and add to scroll list
+ LLSD::array_iterator iter = url_list.beginArray();
+ while( iter != url_list.endArray() )
+ {
+ // TODO: is iter guaranteed to be valid here?
+ std::string url = *iter;
+ list->addSimpleElement( url );
+ ++iter;
+ };
+ };
+ data_set[ i ].ctrl_ptr->setEnabled(editable);
+ data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );
+ };
+ };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// static
+void LLPanelMediaSettingsSecurity::clearValues( void* userdata , bool editable)
+{
+ LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
+ self->mEnableWhiteList->clear();
+ self->mWhiteListList->deleteAllItems();
+ self->mEnableWhiteList->setEnabled(editable);
+ self->mWhiteListList->setEnabled(editable);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLPanelMediaSettingsSecurity::preApply()
+{
+ // no-op
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in )
+{
+ fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = mEnableWhiteList->getValue();
+
+ // iterate over white list and extract items
+ std::vector< LLScrollListItem* > white_list_items = mWhiteListList->getAllData();
+ std::vector< LLScrollListItem* >::iterator iter = white_list_items.begin();
+ // *NOTE: need actually set the key to be an emptyArray(), or the merge
+ // we do with this LLSD will think there's nothing to change.
+ fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray();
+ while( iter != white_list_items.end() )
+ {
+ std::string white_list_url = (*iter)->getValue().asString();
+ fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( white_list_url );
+ ++iter;
+ };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLPanelMediaSettingsSecurity::postApply()
+{
+ // no-op
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Try to make a valid URL if a fragment (
+// white list list box widget and build a list to test against. Can also
+const std::string LLPanelMediaSettingsSecurity::makeValidUrl( const std::string& src_url )
+{
+ // use LLURI to determine if we have a valid scheme
+ LLURI candidate_url( src_url );
+ if ( candidate_url.scheme().empty() )
+ {
+ // build a URL comprised of default scheme and the original fragment
+ const std::string default_scheme( "http://" );
+ return default_scheme + src_url;
+ };
+
+ // we *could* test the "default scheme" + "original fragment" URL again
+ // using LLURI to see if it's valid but I think the outcome is the same
+ // in either case - our only option is to return the original URL
+
+ // we *think* the original url passed in was valid
+ return src_url;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// wrapper for testing a URL against the whitelist. We grab entries from
+// white list list box widget and build a list to test against. Can also
+// optionally pass the URL that you are trying to add to the widget since
+// it won't be added until this call returns.
+bool LLPanelMediaSettingsSecurity::passesWhiteList( const std::string& added_url,
+ const std::string& test_url )
+{
+ // the checkUrlAgainstWhitelist(..) function works on a vector
+ // of strings for the white list entries - in this panel, the white list
+ // is stored in the widgets themselves so we need to build something compatible.
+ std::vector< std::string > whitelist_strings;
+ whitelist_strings.clear(); // may not be required - I forget what the spec says.
+
+ // step through whitelist widget entries and grab them as strings
+ std::vector< LLScrollListItem* > white_list_items = mWhiteListList->getAllData();
+ std::vector< LLScrollListItem* >::iterator iter = white_list_items.begin();
+ while( iter != white_list_items.end() )
+ {
+ const std::string whitelist_url = (*iter)->getValue().asString();
+ whitelist_strings.push_back( whitelist_url );
+
+ ++iter;
+ };
+
+ // add in the URL that might be added to the whitelist so we can test that too
+ if ( added_url.length() )
+ whitelist_strings.push_back( added_url );
+
+ // possible the URL is just a fragment so we validize it
+ const std::string valid_url = makeValidUrl( test_url );
+
+ // indicate if the URL passes whitelist
+ return LLMediaEntry::checkUrlAgainstWhitelist( valid_url, whitelist_strings );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//
+void LLPanelMediaSettingsSecurity::addWhiteListItem(const std::string& url)
+{
+ // grab home URL from the general panel (via the parent floater)
+ std::string home_url( "" );
+ if ( mParent )
+ home_url = mParent->getHomeUrl();
+
+ // if the home URL is blank (user hasn't entered it yet) then
+ // don't bother to check if it passes the white list
+ if ( home_url.empty() )
+ {
+ mWhiteListList->addSimpleElement( url );
+ return;
+ };
+
+ // if the URL passes the white list, add it
+ if ( passesWhiteList( url, home_url ) )
+ {
+ mWhiteListList->addSimpleElement( url );
+ }
+ else
+ // display a message indicating you can't do that
+ {
+ LLNotifications::instance().add("WhiteListInvalidatesHomeUrl");
+ };
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// static
+void LLPanelMediaSettingsSecurity::onBtnAdd( void* userdata )
+{
+ LLFloaterReg::showInstance("whitelist_entry");
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// static
+void LLPanelMediaSettingsSecurity::onBtnDel( void* userdata )
+{
+ LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
+
+ self->mWhiteListList->deleteSelectedItems();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLPanelMediaSettingsSecurity::setParent( LLFloaterMediaSettings* parent )
+{
+ mParent = parent;
+};
+
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
index 7a39d8fabc..6722bb212e 100644
--- a/indra/newview/llpanelobjectinventory.h
+++ b/indra/newview/llpanelobjectinventory.h
@@ -1,102 +1,102 @@
-/**
- * @file llpanelobjectinventory.h
- * @brief LLPanelObjectInventory class definition
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLPANELOBJECTINVENTORY_H
-#define LL_LLPANELOBJECTINVENTORY_H
-
-#include "llvoinventorylistener.h"
-#include "llpanel.h"
-
-#include "llinventory.h"
-
-class LLScrollContainer;
-class LLFolderView;
-class LLFolderViewFolder;
-class LLViewerObject;
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLPanelObjectInventory
-//
-// This class represents the panel used to view and control a
-// particular task's inventory.
-//
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLPanelObjectInventory : public LLPanel, public LLVOInventoryListener
-{
-public:
- // dummy param block for template registration purposes
- struct Params : public LLPanel::Params {};
-
- LLPanelObjectInventory(const Params&);
- virtual ~LLPanelObjectInventory();
-
- virtual BOOL postBuild();
-
- void doToSelected(const LLSD& userdata);
-
- void refresh();
- const LLUUID& getTaskUUID() { return mTaskUUID;}
- void removeSelectedItem();
- void startRenamingSelectedItem();
-
- LLFolderView* getRootFolder() const { return mFolders; }
-
- virtual void draw();
- virtual void deleteAllChildren();
- virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string& tooltip_msg);
-
- static void idle(void* user_data);
-
-protected:
- void reset();
- /*virtual*/ void inventoryChanged(LLViewerObject* object,
- InventoryObjectList* inventory,
- S32 serial_num,
- void* user_data);
- void updateInventory();
- void createFolderViews(LLInventoryObject* inventory_root, InventoryObjectList& contents);
- void createViewsForCategory(InventoryObjectList* inventory,
- LLInventoryObject* parent,
- LLFolderViewFolder* folder);
- void clearContents();
-
-private:
- LLScrollContainer* mScroller;
- LLFolderView* mFolders;
-
- LLUUID mTaskUUID;
- BOOL mHaveInventory;
- BOOL mIsInventoryEmpty;
- BOOL mInventoryNeedsUpdate;
-};
-
-#endif // LL_LLPANELOBJECTINVENTORY_H
+/**
+ * @file llpanelobjectinventory.h
+ * @brief LLPanelObjectInventory class definition
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELOBJECTINVENTORY_H
+#define LL_LLPANELOBJECTINVENTORY_H
+
+#include "llvoinventorylistener.h"
+#include "llpanel.h"
+
+#include "llinventory.h"
+
+class LLScrollContainer;
+class LLFolderView;
+class LLFolderViewFolder;
+class LLViewerObject;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLPanelObjectInventory
+//
+// This class represents the panel used to view and control a
+// particular task's inventory.
+//
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLPanelObjectInventory : public LLPanel, public LLVOInventoryListener
+{
+public:
+ // dummy param block for template registration purposes
+ struct Params : public LLPanel::Params {};
+
+ LLPanelObjectInventory(const Params&);
+ virtual ~LLPanelObjectInventory();
+
+ virtual BOOL postBuild();
+
+ void doToSelected(const LLSD& userdata);
+
+ void refresh();
+ const LLUUID& getTaskUUID() { return mTaskUUID;}
+ void removeSelectedItem();
+ void startRenamingSelectedItem();
+
+ LLFolderView* getRootFolder() const { return mFolders; }
+
+ virtual void draw();
+ virtual void deleteAllChildren();
+ virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string& tooltip_msg);
+
+ static void idle(void* user_data);
+
+protected:
+ void reset();
+ /*virtual*/ void inventoryChanged(LLViewerObject* object,
+ InventoryObjectList* inventory,
+ S32 serial_num,
+ void* user_data);
+ void updateInventory();
+ void createFolderViews(LLInventoryObject* inventory_root, InventoryObjectList& contents);
+ void createViewsForCategory(InventoryObjectList* inventory,
+ LLInventoryObject* parent,
+ LLFolderViewFolder* folder);
+ void clearContents();
+
+private:
+ LLScrollContainer* mScroller;
+ LLFolderView* mFolders;
+
+ LLUUID mTaskUUID;
+ BOOL mHaveInventory;
+ BOOL mIsInventoryEmpty;
+ BOOL mInventoryNeedsUpdate;
+};
+
+#endif // LL_LLPANELOBJECTINVENTORY_H
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 58962b67d6..824def3d92 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -1,279 +1,279 @@
-/**
- * @file LLSidepanelInventory.cpp
- * @brief Side Bar "Inventory" panel
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llsidepanelinventory.h"
-
-#include "llagent.h"
-#include "llbutton.h"
-#include "llinventorybridge.h"
-#include "llinventorypanel.h"
-#include "llpanelmaininventory.h"
-#include "llsidepaneliteminfo.h"
-#include "llsidepaneltaskinfo.h"
-#include "lltabcontainer.h"
-#include "llselectmgr.h"
-
-static LLRegisterPanelClassWrapper<LLSidepanelInventory> t_inventory("sidepanel_inventory");
-
-LLSidepanelInventory::LLSidepanelInventory()
- : LLPanel(),
- mItemPanel(NULL),
- mPanelMainInventory(NULL)
-{
-
- //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
-}
-
-LLSidepanelInventory::~LLSidepanelInventory()
-{
-}
-
-BOOL LLSidepanelInventory::postBuild()
-{
- // UI elements from inventory panel
- {
- mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel");
-
- mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn");
- mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this));
-
- mShareBtn = mInventoryPanel->getChild<LLButton>("share_btn");
- mShareBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShareButtonClicked, this));
-
- mWearBtn = mInventoryPanel->getChild<LLButton>("wear_btn");
- mWearBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onWearButtonClicked, this));
-
- mPlayBtn = mInventoryPanel->getChild<LLButton>("play_btn");
- mPlayBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onPlayButtonClicked, this));
-
- mTeleportBtn = mInventoryPanel->getChild<LLButton>("teleport_btn");
- mTeleportBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onTeleportButtonClicked, this));
-
- mOverflowBtn = mInventoryPanel->getChild<LLButton>("overflow_btn");
- mOverflowBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onOverflowButtonClicked, this));
-
- mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
- mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
- }
-
- // UI elements from item panel
- {
- mItemPanel = getChild<LLSidepanelItemInfo>("sidepanel__item_panel");
-
- LLButton* back_btn = mItemPanel->getChild<LLButton>("back_btn");
- back_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onBackButtonClicked, this));
- }
-
- // UI elements from task panel
- {
- mTaskPanel = getChild<LLSidepanelTaskInfo>("sidepanel__task_panel");
- if (mTaskPanel)
- {
- LLButton* back_btn = mTaskPanel->getChild<LLButton>("back_btn");
- back_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onBackButtonClicked, this));
- }
- }
-
- return TRUE;
-}
-
-void LLSidepanelInventory::onOpen(const LLSD& key)
-{
- if(key.size() == 0)
- return;
-
- mItemPanel->reset();
-
- if (key.has("id"))
- {
- mItemPanel->setItemID(key["id"].asUUID());
- if (key.has("object"))
- {
- mItemPanel->setObjectID(key["object"].asUUID());
- }
- showItemInfoPanel();
- }
- if (key.has("task"))
- {
- if (mTaskPanel)
- mTaskPanel->setObjectSelection(LLSelectMgr::getInstance()->getSelection());
- showTaskInfoPanel();
- }
- if (key.has("select"))
- {
- mPanelMainInventory->getPanel()->setSelection(key["select"].asUUID(), TAKE_FOCUS_NO);
- }
-}
-
-void LLSidepanelInventory::onInfoButtonClicked()
-{
- LLInventoryItem *item = getSelectedItem();
- if (item)
- {
- mItemPanel->reset();
- mItemPanel->setItemID(item->getUUID());
- showItemInfoPanel();
- }
-}
-
-void LLSidepanelInventory::onShareButtonClicked()
-{
-}
-
-void LLSidepanelInventory::performActionOnSelection(const std::string &action)
-{
- LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
- LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
- if (!current_item)
- {
- return;
- }
- current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getRootFolder(), panel_main_inventory->getActivePanel()->getModel(), action);
-}
-
-void LLSidepanelInventory::onWearButtonClicked()
-{
- performActionOnSelection("wear");
- performActionOnSelection("attach");
-}
-
-void LLSidepanelInventory::onPlayButtonClicked()
-{
- performActionOnSelection("activate");
-}
-
-void LLSidepanelInventory::onTeleportButtonClicked()
-{
- performActionOnSelection("teleport");
-}
-
-void LLSidepanelInventory::onOverflowButtonClicked()
-{
-}
-
-void LLSidepanelInventory::onBackButtonClicked()
-{
- showInventoryPanel();
-}
-
-void LLSidepanelInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
-{
- updateVerbs();
-}
-
-void LLSidepanelInventory::showItemInfoPanel()
-{
- mItemPanel->setVisible(TRUE);
- if (mTaskPanel)
- mTaskPanel->setVisible(FALSE);
- mInventoryPanel->setVisible(FALSE);
-
- mItemPanel->dirty();
- mItemPanel->setIsEditing(FALSE);
-}
-
-void LLSidepanelInventory::showTaskInfoPanel()
-{
- mItemPanel->setVisible(FALSE);
- mInventoryPanel->setVisible(FALSE);
-
- if (mTaskPanel)
- {
- mTaskPanel->setVisible(TRUE);
- mTaskPanel->dirty();
- mTaskPanel->setIsEditing(FALSE);
- }
-}
-
-void LLSidepanelInventory::showInventoryPanel()
-{
- mItemPanel->setVisible(FALSE);
- if (mTaskPanel)
- mTaskPanel->setVisible(FALSE);
- mInventoryPanel->setVisible(TRUE);
- updateVerbs();
-}
-
-void LLSidepanelInventory::updateVerbs()
-{
- mInfoBtn->setEnabled(FALSE);
- mShareBtn->setEnabled(FALSE);
-
- mWearBtn->setVisible(FALSE);
- mWearBtn->setEnabled(FALSE);
- mPlayBtn->setVisible(FALSE);
- mPlayBtn->setEnabled(FALSE);
- mTeleportBtn->setVisible(FALSE);
- mTeleportBtn->setEnabled(FALSE);
-
- const LLInventoryItem *item = getSelectedItem();
- if (!item)
- return;
-
- mInfoBtn->setEnabled(TRUE);
- mShareBtn->setEnabled(TRUE);
-
- switch(item->getInventoryType())
- {
- case LLInventoryType::IT_WEARABLE:
- case LLInventoryType::IT_OBJECT:
- case LLInventoryType::IT_ATTACHMENT:
- mWearBtn->setVisible(TRUE);
- mWearBtn->setEnabled(TRUE);
- break;
- case LLInventoryType::IT_SOUND:
- case LLInventoryType::IT_GESTURE:
- case LLInventoryType::IT_ANIMATION:
- mPlayBtn->setVisible(TRUE);
- mPlayBtn->setEnabled(TRUE);
- break;
- case LLInventoryType::IT_LANDMARK:
- mTeleportBtn->setVisible(TRUE);
- mTeleportBtn->setEnabled(TRUE);
- break;
- default:
- break;
- }
-}
-
-LLInventoryItem *LLSidepanelInventory::getSelectedItem()
-{
- LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
- LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
- if (!current_item)
- {
- return NULL;
- }
- const LLUUID &item_id = current_item->getListener()->getUUID();
- LLInventoryItem *item = gInventory.getItem(item_id);
- return item;
-}
+/**
+ * @file LLSidepanelInventory.cpp
+ * @brief Side Bar "Inventory" panel
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llsidepanelinventory.h"
+
+#include "llagent.h"
+#include "llbutton.h"
+#include "llinventorybridge.h"
+#include "llinventorypanel.h"
+#include "llpanelmaininventory.h"
+#include "llsidepaneliteminfo.h"
+#include "llsidepaneltaskinfo.h"
+#include "lltabcontainer.h"
+#include "llselectmgr.h"
+
+static LLRegisterPanelClassWrapper<LLSidepanelInventory> t_inventory("sidepanel_inventory");
+
+LLSidepanelInventory::LLSidepanelInventory()
+ : LLPanel(),
+ mItemPanel(NULL),
+ mPanelMainInventory(NULL)
+{
+
+ //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
+}
+
+LLSidepanelInventory::~LLSidepanelInventory()
+{
+}
+
+BOOL LLSidepanelInventory::postBuild()
+{
+ // UI elements from inventory panel
+ {
+ mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel");
+
+ mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn");
+ mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this));
+
+ mShareBtn = mInventoryPanel->getChild<LLButton>("share_btn");
+ mShareBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onShareButtonClicked, this));
+
+ mWearBtn = mInventoryPanel->getChild<LLButton>("wear_btn");
+ mWearBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onWearButtonClicked, this));
+
+ mPlayBtn = mInventoryPanel->getChild<LLButton>("play_btn");
+ mPlayBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onPlayButtonClicked, this));
+
+ mTeleportBtn = mInventoryPanel->getChild<LLButton>("teleport_btn");
+ mTeleportBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onTeleportButtonClicked, this));
+
+ mOverflowBtn = mInventoryPanel->getChild<LLButton>("overflow_btn");
+ mOverflowBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onOverflowButtonClicked, this));
+
+ mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
+ mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
+ }
+
+ // UI elements from item panel
+ {
+ mItemPanel = getChild<LLSidepanelItemInfo>("sidepanel__item_panel");
+
+ LLButton* back_btn = mItemPanel->getChild<LLButton>("back_btn");
+ back_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onBackButtonClicked, this));
+ }
+
+ // UI elements from task panel
+ {
+ mTaskPanel = getChild<LLSidepanelTaskInfo>("sidepanel__task_panel");
+ if (mTaskPanel)
+ {
+ LLButton* back_btn = mTaskPanel->getChild<LLButton>("back_btn");
+ back_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onBackButtonClicked, this));
+ }
+ }
+
+ return TRUE;
+}
+
+void LLSidepanelInventory::onOpen(const LLSD& key)
+{
+ if(key.size() == 0)
+ return;
+
+ mItemPanel->reset();
+
+ if (key.has("id"))
+ {
+ mItemPanel->setItemID(key["id"].asUUID());
+ if (key.has("object"))
+ {
+ mItemPanel->setObjectID(key["object"].asUUID());
+ }
+ showItemInfoPanel();
+ }
+ if (key.has("task"))
+ {
+ if (mTaskPanel)
+ mTaskPanel->setObjectSelection(LLSelectMgr::getInstance()->getSelection());
+ showTaskInfoPanel();
+ }
+ if (key.has("select"))
+ {
+ mPanelMainInventory->getPanel()->setSelection(key["select"].asUUID(), TAKE_FOCUS_NO);
+ }
+}
+
+void LLSidepanelInventory::onInfoButtonClicked()
+{
+ LLInventoryItem *item = getSelectedItem();
+ if (item)
+ {
+ mItemPanel->reset();
+ mItemPanel->setItemID(item->getUUID());
+ showItemInfoPanel();
+ }
+}
+
+void LLSidepanelInventory::onShareButtonClicked()
+{
+}
+
+void LLSidepanelInventory::performActionOnSelection(const std::string &action)
+{
+ LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
+ LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
+ if (!current_item)
+ {
+ return;
+ }
+ current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getRootFolder(), panel_main_inventory->getActivePanel()->getModel(), action);
+}
+
+void LLSidepanelInventory::onWearButtonClicked()
+{
+ performActionOnSelection("wear");
+ performActionOnSelection("attach");
+}
+
+void LLSidepanelInventory::onPlayButtonClicked()
+{
+ performActionOnSelection("activate");
+}
+
+void LLSidepanelInventory::onTeleportButtonClicked()
+{
+ performActionOnSelection("teleport");
+}
+
+void LLSidepanelInventory::onOverflowButtonClicked()
+{
+}
+
+void LLSidepanelInventory::onBackButtonClicked()
+{
+ showInventoryPanel();
+}
+
+void LLSidepanelInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
+{
+ updateVerbs();
+}
+
+void LLSidepanelInventory::showItemInfoPanel()
+{
+ mItemPanel->setVisible(TRUE);
+ if (mTaskPanel)
+ mTaskPanel->setVisible(FALSE);
+ mInventoryPanel->setVisible(FALSE);
+
+ mItemPanel->dirty();
+ mItemPanel->setIsEditing(FALSE);
+}
+
+void LLSidepanelInventory::showTaskInfoPanel()
+{
+ mItemPanel->setVisible(FALSE);
+ mInventoryPanel->setVisible(FALSE);
+
+ if (mTaskPanel)
+ {
+ mTaskPanel->setVisible(TRUE);
+ mTaskPanel->dirty();
+ mTaskPanel->setIsEditing(FALSE);
+ }
+}
+
+void LLSidepanelInventory::showInventoryPanel()
+{
+ mItemPanel->setVisible(FALSE);
+ if (mTaskPanel)
+ mTaskPanel->setVisible(FALSE);
+ mInventoryPanel->setVisible(TRUE);
+ updateVerbs();
+}
+
+void LLSidepanelInventory::updateVerbs()
+{
+ mInfoBtn->setEnabled(FALSE);
+ mShareBtn->setEnabled(FALSE);
+
+ mWearBtn->setVisible(FALSE);
+ mWearBtn->setEnabled(FALSE);
+ mPlayBtn->setVisible(FALSE);
+ mPlayBtn->setEnabled(FALSE);
+ mTeleportBtn->setVisible(FALSE);
+ mTeleportBtn->setEnabled(FALSE);
+
+ const LLInventoryItem *item = getSelectedItem();
+ if (!item)
+ return;
+
+ mInfoBtn->setEnabled(TRUE);
+ mShareBtn->setEnabled(TRUE);
+
+ switch(item->getInventoryType())
+ {
+ case LLInventoryType::IT_WEARABLE:
+ case LLInventoryType::IT_OBJECT:
+ case LLInventoryType::IT_ATTACHMENT:
+ mWearBtn->setVisible(TRUE);
+ mWearBtn->setEnabled(TRUE);
+ break;
+ case LLInventoryType::IT_SOUND:
+ case LLInventoryType::IT_GESTURE:
+ case LLInventoryType::IT_ANIMATION:
+ mPlayBtn->setVisible(TRUE);
+ mPlayBtn->setEnabled(TRUE);
+ break;
+ case LLInventoryType::IT_LANDMARK:
+ mTeleportBtn->setVisible(TRUE);
+ mTeleportBtn->setEnabled(TRUE);
+ break;
+ default:
+ break;
+ }
+}
+
+LLInventoryItem *LLSidepanelInventory::getSelectedItem()
+{
+ LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
+ LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem();
+ if (!current_item)
+ {
+ return NULL;
+ }
+ const LLUUID &item_id = current_item->getListener()->getUUID();
+ LLInventoryItem *item = gInventory.getItem(item_id);
+ return item;
+}
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index 9eba77b5c3..6aa9cc745f 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -1,91 +1,91 @@
-/**
- * @file LLSidepanelInventory.h
- * @brief Side Bar "Inventory" panel
- *
- * $LicenseInfo:firstyear=2009&license=viewergpl$
- *
- * Copyright (c) 2004-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLSIDEPANELINVENTORY_H
-#define LL_LLSIDEPANELINVENTORY_H
-
-#include "llpanel.h"
-
-class LLFolderViewItem;
-class LLInventoryItem;
-class LLPanelMainInventory;
-class LLSidepanelItemInfo;
-class LLSidepanelTaskInfo;
-
-class LLSidepanelInventory : public LLPanel
-{
-public:
- LLSidepanelInventory();
- virtual ~LLSidepanelInventory();
-
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void onOpen(const LLSD& key);
-
-protected:
- // Tracks highlighted (selected) item in inventory panel.
- LLInventoryItem *getSelectedItem();
- void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
- // "wear", "teleport", etc.
- void performActionOnSelection(const std::string &action);
-
- void showItemInfoPanel();
- void showTaskInfoPanel();
- void showInventoryPanel();
- void updateVerbs();
-
- //
- // UI Elements
- //
-private:
- LLPanel* mInventoryPanel; // Main inventory view
- LLSidepanelItemInfo* mItemPanel; // Individual item view
- LLSidepanelTaskInfo* mTaskPanel; // Individual in-world object view
- LLPanelMainInventory* mPanelMainInventory;
-
-protected:
- void onInfoButtonClicked();
- void onShareButtonClicked();
- void onWearButtonClicked();
- void onPlayButtonClicked();
- void onTeleportButtonClicked();
- void onOverflowButtonClicked();
- void onBackButtonClicked();
-private:
- LLButton* mInfoBtn;
- LLButton* mShareBtn;
- LLButton* mWearBtn;
- LLButton* mPlayBtn;
- LLButton* mTeleportBtn;
- LLButton* mOverflowBtn;
-
-};
-
-#endif //LL_LLSIDEPANELINVENTORY_H
+/**
+ * @file LLSidepanelInventory.h
+ * @brief Side Bar "Inventory" panel
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLSIDEPANELINVENTORY_H
+#define LL_LLSIDEPANELINVENTORY_H
+
+#include "llpanel.h"
+
+class LLFolderViewItem;
+class LLInventoryItem;
+class LLPanelMainInventory;
+class LLSidepanelItemInfo;
+class LLSidepanelTaskInfo;
+
+class LLSidepanelInventory : public LLPanel
+{
+public:
+ LLSidepanelInventory();
+ virtual ~LLSidepanelInventory();
+
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+protected:
+ // Tracks highlighted (selected) item in inventory panel.
+ LLInventoryItem *getSelectedItem();
+ void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
+ // "wear", "teleport", etc.
+ void performActionOnSelection(const std::string &action);
+
+ void showItemInfoPanel();
+ void showTaskInfoPanel();
+ void showInventoryPanel();
+ void updateVerbs();
+
+ //
+ // UI Elements
+ //
+private:
+ LLPanel* mInventoryPanel; // Main inventory view
+ LLSidepanelItemInfo* mItemPanel; // Individual item view
+ LLSidepanelTaskInfo* mTaskPanel; // Individual in-world object view
+ LLPanelMainInventory* mPanelMainInventory;
+
+protected:
+ void onInfoButtonClicked();
+ void onShareButtonClicked();
+ void onWearButtonClicked();
+ void onPlayButtonClicked();
+ void onTeleportButtonClicked();
+ void onOverflowButtonClicked();
+ void onBackButtonClicked();
+private:
+ LLButton* mInfoBtn;
+ LLButton* mShareBtn;
+ LLButton* mWearBtn;
+ LLButton* mPlayBtn;
+ LLButton* mTeleportBtn;
+ LLButton* mOverflowBtn;
+
+};
+
+#endif //LL_LLSIDEPANELINVENTORY_H
diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp
index 162198f1c5..23931defdd 100644
--- a/indra/newview/llsidepanelinventorysubpanel.cpp
+++ b/indra/newview/llsidepanelinventorysubpanel.cpp
@@ -1,155 +1,155 @@
-/**
- * @file llsidepanelinventorysubpanel.cpp
- * @brief A floater which shows an inventory item's properties.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llsidepanelinventorysubpanel.h"
-
-#include "roles_constants.h"
-
-#include "llagent.h"
-#include "llavataractions.h"
-#include "llbutton.h"
-#include "llfloaterreg.h"
-#include "llgroupactions.h"
-#include "llinventorymodel.h"
-#include "lllineeditor.h"
-#include "llradiogroup.h"
-#include "llviewercontrol.h"
-#include "llviewerinventory.h"
-#include "llviewerobjectlist.h"
-
-
-///----------------------------------------------------------------------------
-/// Class LLSidepanelInventorySubpanel
-///----------------------------------------------------------------------------
-
-// Default constructor
-LLSidepanelInventorySubpanel::LLSidepanelInventorySubpanel()
- : LLPanel(),
- mIsDirty(TRUE),
- mIsEditing(FALSE),
- mEditBtn(NULL),
- mCancelBtn(NULL),
- mSaveBtn(NULL)
-{
-}
-
-// Destroys the object
-LLSidepanelInventorySubpanel::~LLSidepanelInventorySubpanel()
-{
-}
-
-// virtual
-BOOL LLSidepanelInventorySubpanel::postBuild()
-{
- mEditBtn = getChild<LLButton>("edit_btn");
- mEditBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onEditButtonClicked, this));
-
- mSaveBtn = getChild<LLButton>("save_btn");
- mSaveBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onSaveButtonClicked, this));
-
- mCancelBtn = getChild<LLButton>("cancel_btn");
- mCancelBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onCancelButtonClicked, this));
- return TRUE;
-}
-
-void LLSidepanelInventorySubpanel::setVisible(BOOL visible)
-{
- if (visible)
- {
- dirty();
- }
- LLPanel::setVisible(visible);
-}
-
-void LLSidepanelInventorySubpanel::setIsEditing(BOOL edit)
-{
- mIsEditing = edit;
- mIsDirty = TRUE;
-}
-
-BOOL LLSidepanelInventorySubpanel::getIsEditing() const
-{
- return mIsEditing;
-}
-
-void LLSidepanelInventorySubpanel::reset()
-{
- mIsDirty = TRUE;
-}
-
-void LLSidepanelInventorySubpanel::draw()
-{
- if (mIsDirty)
- {
- mIsDirty = FALSE;
- refresh();
- updateVerbs();
- }
-
- LLPanel::draw();
-}
-
-void LLSidepanelInventorySubpanel::dirty()
-{
- mIsDirty = TRUE;
- setIsEditing(FALSE);
-}
-
-void LLSidepanelInventorySubpanel::updateVerbs()
-{
- mEditBtn->setVisible(!mIsEditing);
- mSaveBtn->setVisible(mIsEditing);
- mCancelBtn->setVisible(mIsEditing);
-}
-
-void LLSidepanelInventorySubpanel::onEditButtonClicked()
-{
- setIsEditing(TRUE);
- refresh();
- updateVerbs();
-}
-
-void LLSidepanelInventorySubpanel::onSaveButtonClicked()
-{
- save();
- setIsEditing(FALSE);
- refresh();
- updateVerbs();
-}
-
-void LLSidepanelInventorySubpanel::onCancelButtonClicked()
-{
- setIsEditing(FALSE);
- refresh();
- updateVerbs();
-}
+/**
+ * @file llsidepanelinventorysubpanel.cpp
+ * @brief A floater which shows an inventory item's properties.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llsidepanelinventorysubpanel.h"
+
+#include "roles_constants.h"
+
+#include "llagent.h"
+#include "llavataractions.h"
+#include "llbutton.h"
+#include "llfloaterreg.h"
+#include "llgroupactions.h"
+#include "llinventorymodel.h"
+#include "lllineeditor.h"
+#include "llradiogroup.h"
+#include "llviewercontrol.h"
+#include "llviewerinventory.h"
+#include "llviewerobjectlist.h"
+
+
+///----------------------------------------------------------------------------
+/// Class LLSidepanelInventorySubpanel
+///----------------------------------------------------------------------------
+
+// Default constructor
+LLSidepanelInventorySubpanel::LLSidepanelInventorySubpanel()
+ : LLPanel(),
+ mIsDirty(TRUE),
+ mIsEditing(FALSE),
+ mEditBtn(NULL),
+ mCancelBtn(NULL),
+ mSaveBtn(NULL)
+{
+}
+
+// Destroys the object
+LLSidepanelInventorySubpanel::~LLSidepanelInventorySubpanel()
+{
+}
+
+// virtual
+BOOL LLSidepanelInventorySubpanel::postBuild()
+{
+ mEditBtn = getChild<LLButton>("edit_btn");
+ mEditBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onEditButtonClicked, this));
+
+ mSaveBtn = getChild<LLButton>("save_btn");
+ mSaveBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onSaveButtonClicked, this));
+
+ mCancelBtn = getChild<LLButton>("cancel_btn");
+ mCancelBtn->setClickedCallback(boost::bind(&LLSidepanelInventorySubpanel::onCancelButtonClicked, this));
+ return TRUE;
+}
+
+void LLSidepanelInventorySubpanel::setVisible(BOOL visible)
+{
+ if (visible)
+ {
+ dirty();
+ }
+ LLPanel::setVisible(visible);
+}
+
+void LLSidepanelInventorySubpanel::setIsEditing(BOOL edit)
+{
+ mIsEditing = edit;
+ mIsDirty = TRUE;
+}
+
+BOOL LLSidepanelInventorySubpanel::getIsEditing() const
+{
+ return mIsEditing;
+}
+
+void LLSidepanelInventorySubpanel::reset()
+{
+ mIsDirty = TRUE;
+}
+
+void LLSidepanelInventorySubpanel::draw()
+{
+ if (mIsDirty)
+ {
+ mIsDirty = FALSE;
+ refresh();
+ updateVerbs();
+ }
+
+ LLPanel::draw();
+}
+
+void LLSidepanelInventorySubpanel::dirty()
+{
+ mIsDirty = TRUE;
+ setIsEditing(FALSE);
+}
+
+void LLSidepanelInventorySubpanel::updateVerbs()
+{
+ mEditBtn->setVisible(!mIsEditing);
+ mSaveBtn->setVisible(mIsEditing);
+ mCancelBtn->setVisible(mIsEditing);
+}
+
+void LLSidepanelInventorySubpanel::onEditButtonClicked()
+{
+ setIsEditing(TRUE);
+ refresh();
+ updateVerbs();
+}
+
+void LLSidepanelInventorySubpanel::onSaveButtonClicked()
+{
+ save();
+ setIsEditing(FALSE);
+ refresh();
+ updateVerbs();
+}
+
+void LLSidepanelInventorySubpanel::onCancelButtonClicked()
+{
+ setIsEditing(FALSE);
+ refresh();
+ updateVerbs();
+}
diff --git a/indra/newview/llsidepanelinventorysubpanel.h b/indra/newview/llsidepanelinventorysubpanel.h
index 6503887cd1..a74f4fdee6 100644
--- a/indra/newview/llsidepanelinventorysubpanel.h
+++ b/indra/newview/llsidepanelinventorysubpanel.h
@@ -1,82 +1,82 @@
-/**
- * @file llsidepanelinventorysubpanel.h
- * @brief A panel which shows an inventory item's properties.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLSIDEPANELINVENTORYSUBPANEL_H
-#define LL_LLSIDEPANELINVENTORYSUBPANEL_H
-
-#include "llpanel.h"
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLSidepanelInventorySubpanel
-// Base class for inventory sidepanel panels (e.g. item info, task info).
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLButton;
-class LLInventoryItem;
-
-class LLSidepanelInventorySubpanel : public LLPanel
-{
-public:
- LLSidepanelInventorySubpanel();
- virtual ~LLSidepanelInventorySubpanel();
-
- /*virtual*/ void setVisible(BOOL visible);
- virtual BOOL postBuild();
- virtual void draw();
- virtual void reset();
-
- void dirty();
- void setIsEditing(BOOL edit);
-protected:
- virtual void refresh() = 0;
- virtual void save() = 0;
- virtual void updateVerbs();
-
- BOOL getIsEditing() const;
-
- //
- // UI Elements
- //
-protected:
- void onEditButtonClicked();
- void onSaveButtonClicked();
- void onCancelButtonClicked();
- LLButton* mEditBtn;
- LLButton* mSaveBtn;
- LLButton* mCancelBtn;
-
-private:
- BOOL mIsDirty; // item properties need to be updated
- BOOL mIsEditing; // if we're in edit mode
-};
-
-#endif // LL_LLSIDEPANELINVENTORYSUBPANEL_H
+/**
+ * @file llsidepanelinventorysubpanel.h
+ * @brief A panel which shows an inventory item's properties.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLSIDEPANELINVENTORYSUBPANEL_H
+#define LL_LLSIDEPANELINVENTORYSUBPANEL_H
+
+#include "llpanel.h"
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLSidepanelInventorySubpanel
+// Base class for inventory sidepanel panels (e.g. item info, task info).
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLButton;
+class LLInventoryItem;
+
+class LLSidepanelInventorySubpanel : public LLPanel
+{
+public:
+ LLSidepanelInventorySubpanel();
+ virtual ~LLSidepanelInventorySubpanel();
+
+ /*virtual*/ void setVisible(BOOL visible);
+ virtual BOOL postBuild();
+ virtual void draw();
+ virtual void reset();
+
+ void dirty();
+ void setIsEditing(BOOL edit);
+protected:
+ virtual void refresh() = 0;
+ virtual void save() = 0;
+ virtual void updateVerbs();
+
+ BOOL getIsEditing() const;
+
+ //
+ // UI Elements
+ //
+protected:
+ void onEditButtonClicked();
+ void onSaveButtonClicked();
+ void onCancelButtonClicked();
+ LLButton* mEditBtn;
+ LLButton* mSaveBtn;
+ LLButton* mCancelBtn;
+
+private:
+ BOOL mIsDirty; // item properties need to be updated
+ BOOL mIsEditing; // if we're in edit mode
+};
+
+#endif // LL_LLSIDEPANELINVENTORYSUBPANEL_H
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index ff6e2d7363..5081c33f8e 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -1,883 +1,883 @@
-/**
- * @file llsidepaneliteminfo.cpp
- * @brief A floater which shows an inventory item's properties.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "llsidepaneliteminfo.h"
-
-#include "roles_constants.h"
-
-#include "llagent.h"
-#include "llavataractions.h"
-#include "llbutton.h"
-#include "llfloaterreg.h"
-#include "llgroupactions.h"
-#include "llinventorymodel.h"
-#include "llinventoryobserver.h"
-#include "lllineeditor.h"
-#include "llradiogroup.h"
-#include "llviewercontrol.h"
-#include "llviewerinventory.h"
-#include "llviewerobjectlist.h"
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLItemPropertiesObserver
-//
-// Helper class to watch for changes to the item.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLItemPropertiesObserver : public LLInventoryObserver
-{
-public:
- LLItemPropertiesObserver(LLSidepanelItemInfo* floater)
- : mFloater(floater)
- {
- gInventory.addObserver(this);
- }
- virtual ~LLItemPropertiesObserver()
- {
- gInventory.removeObserver(this);
- }
- virtual void changed(U32 mask);
-private:
- LLSidepanelItemInfo* mFloater;
-};
-
-void LLItemPropertiesObserver::changed(U32 mask)
-{
- // if there's a change we're interested in.
- if((mask & (LLInventoryObserver::LABEL | LLInventoryObserver::INTERNAL | LLInventoryObserver::REMOVE)) != 0)
- {
- mFloater->dirty();
- }
-}
-
-
-
-///----------------------------------------------------------------------------
-/// Class LLSidepanelItemInfo
-///----------------------------------------------------------------------------
-
-static LLRegisterPanelClassWrapper<LLSidepanelItemInfo> t_item_info("sidepanel_item_info");
-
-// Default constructor
-LLSidepanelItemInfo::LLSidepanelItemInfo()
- : mItemID(LLUUID::null)
-{
- mPropertiesObserver = new LLItemPropertiesObserver(this);
-
- //LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml");
-}
-
-// Destroys the object
-LLSidepanelItemInfo::~LLSidepanelItemInfo()
-{
- delete mPropertiesObserver;
- mPropertiesObserver = NULL;
-}
-
-// virtual
-BOOL LLSidepanelItemInfo::postBuild()
-{
- LLSidepanelInventorySubpanel::postBuild();
-
- // build the UI
- // item name & description
- childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
- //getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));
- childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
- //getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));
-
- // Creator information
- getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this));
-
- // owner information
- getChild<LLUICtrl>("BtnOwner")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickOwner,this));
-
- refresh();
- return TRUE;
-}
-
-void LLSidepanelItemInfo::setObjectID(const LLUUID& object_id)
-{
- mObjectID = object_id;
-}
-
-void LLSidepanelItemInfo::setItemID(const LLUUID& item_id)
-{
- mItemID = item_id;
-}
-
-void LLSidepanelItemInfo::reset()
-{
- LLSidepanelInventorySubpanel::reset();
-
- mObjectID = LLUUID::null;
- mItemID = LLUUID::null;
-}
-
-void LLSidepanelItemInfo::refresh()
-{
- LLInventoryItem* item = findItem();
- if(item)
- {
- refreshFromItem(item);
- updateVerbs();
- }
- else
- {
- if (getIsEditing())
- {
- setIsEditing(FALSE);
- return;
- }
- }
-
- if (!getIsEditing())
- {
- const std::string no_item_names[]={
- "LabelItemName",
- "LabelItemDesc",
- "LabelCreatorName",
- "LabelOwnerName",
- "CheckOwnerModify",
- "CheckOwnerCopy",
- "CheckOwnerTransfer",
- "CheckShareWithGroup",
- "CheckEveryoneCopy",
- "CheckNextOwnerModify",
- "CheckNextOwnerCopy",
- "CheckNextOwnerTransfer",
- "CheckPurchase",
- "RadioSaleType",
- "Edit Cost"
- };
-
- for(size_t t=0; t<LL_ARRAY_SIZE(no_item_names); ++t)
- {
- childSetEnabled(no_item_names[t],false);
- }
-
- const std::string hide_names[]={
- "BaseMaskDebug",
- "OwnerMaskDebug",
- "GroupMaskDebug",
- "EveryoneMaskDebug",
- "NextMaskDebug"
- };
- for(size_t t=0; t<LL_ARRAY_SIZE(hide_names); ++t)
- {
- childSetVisible(hide_names[t],false);
- }
- }
-
- if (!item)
- {
- const std::string no_edit_mode_names[]={
- "BtnCreator",
- "BtnOwner",
- };
- for(size_t t=0; t<LL_ARRAY_SIZE(no_edit_mode_names); ++t)
- {
- childSetEnabled(no_edit_mode_names[t],false);
- }
- }
-
- updateVerbs();
-}
-
-void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item)
-{
- ////////////////////////
- // PERMISSIONS LOOKUP //
- ////////////////////////
-
- // do not enable the UI for incomplete items.
- LLViewerInventoryItem* i = (LLViewerInventoryItem*)item;
- BOOL is_complete = i->isComplete();
- const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(i->getInventoryType());
- const BOOL is_calling_card = (i->getInventoryType() == LLInventoryType::IT_CALLINGCARD);
- const LLPermissions& perm = item->getPermissions();
- const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm,
- GP_OBJECT_MANIPULATE);
- const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm,
- GP_OBJECT_SET_SALE) &&
- !cannot_restrict_permissions;
- const BOOL is_link = i->getIsLinkType();
-
- // You need permission to modify the object to modify an inventory
- // item in it.
- LLViewerObject* object = NULL;
- if(!mObjectID.isNull()) object = gObjectList.findObject(mObjectID);
- BOOL is_obj_modify = TRUE;
- if(object)
- {
- is_obj_modify = object->permOwnerModify();
- }
-
- //////////////////////
- // ITEM NAME & DESC //
- //////////////////////
- BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm,
- GP_OBJECT_MANIPULATE)
- && is_obj_modify && is_complete;
-
- childSetEnabled("LabelItemNameTitle",TRUE);
- childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
- childSetText("LabelItemName",item->getName());
- childSetEnabled("LabelItemDescTitle",TRUE);
- childSetEnabled("LabelItemDesc",is_modifiable);
- childSetVisible("IconLocked",!is_modifiable);
- childSetText("LabelItemDesc",item->getDescription());
-
- //////////////////
- // CREATOR NAME //
- //////////////////
- if(!gCacheName) return;
- if(!gAgent.getRegion()) return;
-
- if (item->getCreatorUUID().notNull())
- {
- std::string name;
- gCacheName->getFullName(item->getCreatorUUID(), name);
- childSetEnabled("BtnCreator",TRUE);
- childSetEnabled("LabelCreatorTitle",TRUE);
- childSetEnabled("LabelCreatorName",TRUE);
- childSetText("LabelCreatorName",name);
- }
- else
- {
- childSetEnabled("BtnCreator",FALSE);
- childSetEnabled("LabelCreatorTitle",FALSE);
- childSetEnabled("LabelCreatorName",FALSE);
- childSetText("LabelCreatorName",getString("unknown"));
- }
-
- ////////////////
- // OWNER NAME //
- ////////////////
- if(perm.isOwned())
- {
- std::string name;
- if (perm.isGroupOwned())
- {
- gCacheName->getGroupName(perm.getGroup(), name);
- }
- else
- {
- gCacheName->getFullName(perm.getOwner(), name);
- }
- childSetEnabled("BtnOwner",TRUE);
- childSetEnabled("LabelOwnerTitle",TRUE);
- childSetEnabled("LabelOwnerName",TRUE);
- childSetText("LabelOwnerName",name);
- }
- else
- {
- childSetEnabled("BtnOwner",FALSE);
- childSetEnabled("LabelOwnerTitle",FALSE);
- childSetEnabled("LabelOwnerName",FALSE);
- childSetText("LabelOwnerName",getString("public"));
- }
-
- //////////////////
- // ACQUIRE DATE //
- //////////////////
-
- time_t time_utc = item->getCreationDate();
- if (0 == time_utc)
- {
- childSetText("LabelAcquiredDate",getString("unknown"));
- }
- else
- {
- std::string timeStr = getString("acquiredDate");
- LLSD substitution;
- substitution["datetime"] = (S32) time_utc;
- LLStringUtil::format (timeStr, substitution);
- childSetText ("LabelAcquiredDate", timeStr);
- }
-
- ///////////////////////
- // OWNER PERMISSIONS //
- ///////////////////////
- if(can_agent_manipulate)
- {
- childSetText("OwnerLabel",getString("you_can"));
- }
- else
- {
- childSetText("OwnerLabel",getString("owner_can"));
- }
-
- U32 base_mask = perm.getMaskBase();
- U32 owner_mask = perm.getMaskOwner();
- U32 group_mask = perm.getMaskGroup();
- U32 everyone_mask = perm.getMaskEveryone();
- U32 next_owner_mask = perm.getMaskNextOwner();
-
- childSetEnabled("OwnerLabel",TRUE);
- childSetEnabled("CheckOwnerModify",FALSE);
- childSetValue("CheckOwnerModify",LLSD((BOOL)(owner_mask & PERM_MODIFY)));
- childSetEnabled("CheckOwnerCopy",FALSE);
- childSetValue("CheckOwnerCopy",LLSD((BOOL)(owner_mask & PERM_COPY)));
- childSetEnabled("CheckOwnerTransfer",FALSE);
- childSetValue("CheckOwnerTransfer",LLSD((BOOL)(owner_mask & PERM_TRANSFER)));
-
- ///////////////////////
- // DEBUG PERMISSIONS //
- ///////////////////////
-
- if( gSavedSettings.getBOOL("DebugPermissions") )
- {
- BOOL slam_perm = FALSE;
- BOOL overwrite_group = FALSE;
- BOOL overwrite_everyone = FALSE;
-
- if (item->getType() == LLAssetType::AT_OBJECT)
- {
- U32 flags = item->getFlags();
- slam_perm = flags & LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
- overwrite_everyone = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
- overwrite_group = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
- }
-
- std::string perm_string;
-
- perm_string = "B: ";
- perm_string += mask_to_string(base_mask);
- childSetText("BaseMaskDebug",perm_string);
- childSetVisible("BaseMaskDebug",TRUE);
-
- perm_string = "O: ";
- perm_string += mask_to_string(owner_mask);
- childSetText("OwnerMaskDebug",perm_string);
- childSetVisible("OwnerMaskDebug",TRUE);
-
- perm_string = "G";
- perm_string += overwrite_group ? "*: " : ": ";
- perm_string += mask_to_string(group_mask);
- childSetText("GroupMaskDebug",perm_string);
- childSetVisible("GroupMaskDebug",TRUE);
-
- perm_string = "E";
- perm_string += overwrite_everyone ? "*: " : ": ";
- perm_string += mask_to_string(everyone_mask);
- childSetText("EveryoneMaskDebug",perm_string);
- childSetVisible("EveryoneMaskDebug",TRUE);
-
- perm_string = "N";
- perm_string += slam_perm ? "*: " : ": ";
- perm_string += mask_to_string(next_owner_mask);
- childSetText("NextMaskDebug",perm_string);
- childSetVisible("NextMaskDebug",TRUE);
- }
- else
- {
- childSetVisible("BaseMaskDebug",FALSE);
- childSetVisible("OwnerMaskDebug",FALSE);
- childSetVisible("GroupMaskDebug",FALSE);
- childSetVisible("EveryoneMaskDebug",FALSE);
- childSetVisible("NextMaskDebug",FALSE);
- }
-
- /////////////
- // SHARING //
- /////////////
-
- // Check for ability to change values.
- if (is_link || cannot_restrict_permissions)
- {
- childSetEnabled("CheckShareWithGroup",FALSE);
- childSetEnabled("CheckEveryoneCopy",FALSE);
- }
- else if (is_obj_modify && can_agent_manipulate)
- {
- childSetEnabled("CheckShareWithGroup",TRUE);
- childSetEnabled("CheckEveryoneCopy",(owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER));
- }
- else
- {
- childSetEnabled("CheckShareWithGroup",FALSE);
- childSetEnabled("CheckEveryoneCopy",FALSE);
- }
-
- // Set values.
- BOOL is_group_copy = (group_mask & PERM_COPY) ? TRUE : FALSE;
- BOOL is_group_modify = (group_mask & PERM_MODIFY) ? TRUE : FALSE;
- BOOL is_group_move = (group_mask & PERM_MOVE) ? TRUE : FALSE;
-
- if (is_group_copy && is_group_modify && is_group_move)
- {
- childSetValue("CheckShareWithGroup",LLSD((BOOL)TRUE));
-
- LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
- if(ctl)
- {
- ctl->setTentative(FALSE);
- }
- }
- else if (!is_group_copy && !is_group_modify && !is_group_move)
- {
- childSetValue("CheckShareWithGroup",LLSD((BOOL)FALSE));
- LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
- if(ctl)
- {
- ctl->setTentative(FALSE);
- }
- }
- else
- {
- LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
- if(ctl)
- {
- ctl->setTentative(TRUE);
- ctl->set(TRUE);
- }
- }
-
- childSetValue("CheckEveryoneCopy",LLSD((BOOL)(everyone_mask & PERM_COPY)));
-
- ///////////////
- // SALE INFO //
- ///////////////
-
- const LLSaleInfo& sale_info = item->getSaleInfo();
- BOOL is_for_sale = sale_info.isForSale();
- // Check for ability to change values.
- if (is_obj_modify && can_agent_sell
- && gAgent.allowOperation(PERM_TRANSFER, perm, GP_OBJECT_MANIPULATE))
- {
- childSetEnabled("SaleLabel",is_complete);
- childSetEnabled("CheckPurchase",is_complete);
-
- childSetEnabled("NextOwnerLabel",TRUE);
- childSetEnabled("CheckNextOwnerModify",(base_mask & PERM_MODIFY) && !cannot_restrict_permissions);
- childSetEnabled("CheckNextOwnerCopy",(base_mask & PERM_COPY) && !cannot_restrict_permissions);
- childSetEnabled("CheckNextOwnerTransfer",(next_owner_mask & PERM_COPY) && !cannot_restrict_permissions);
-
- childSetEnabled("RadioSaleType",is_complete && is_for_sale);
- childSetEnabled("TextPrice",is_complete && is_for_sale);
- childSetEnabled("Edit Cost",is_complete && is_for_sale);
- }
- else
- {
- childSetEnabled("SaleLabel",FALSE);
- childSetEnabled("CheckPurchase",FALSE);
-
- childSetEnabled("NextOwnerLabel",FALSE);
- childSetEnabled("CheckNextOwnerModify",FALSE);
- childSetEnabled("CheckNextOwnerCopy",FALSE);
- childSetEnabled("CheckNextOwnerTransfer",FALSE);
-
- childSetEnabled("RadioSaleType",FALSE);
- childSetEnabled("TextPrice",FALSE);
- childSetEnabled("Edit Cost",FALSE);
- }
-
- // Set values.
- childSetValue("CheckPurchase", is_for_sale);
- childSetEnabled("combobox sale copy", is_for_sale);
- childSetEnabled("Edit Cost", is_for_sale);
- childSetValue("CheckNextOwnerModify",LLSD(BOOL(next_owner_mask & PERM_MODIFY)));
- childSetValue("CheckNextOwnerCopy",LLSD(BOOL(next_owner_mask & PERM_COPY)));
- childSetValue("CheckNextOwnerTransfer",LLSD(BOOL(next_owner_mask & PERM_TRANSFER)));
-
- LLRadioGroup* radioSaleType = getChild<LLRadioGroup>("RadioSaleType");
- if (is_for_sale)
- {
- radioSaleType->setSelectedIndex((S32)sale_info.getSaleType() - 1);
- S32 numerical_price;
- numerical_price = sale_info.getSalePrice();
- childSetText("Edit Cost",llformat("%d",numerical_price));
- }
- else
- {
- radioSaleType->setSelectedIndex(-1);
- childSetText("Edit Cost",llformat("%d",0));
- }
-}
-
-void LLSidepanelItemInfo::onClickCreator()
-{
- LLInventoryItem* item = findItem();
- if(!item) return;
- if(!item->getCreatorUUID().isNull())
- {
- LLAvatarActions::showProfile(item->getCreatorUUID());
- }
-}
-
-// static
-void LLSidepanelItemInfo::onClickOwner()
-{
- LLInventoryItem* item = findItem();
- if(!item) return;
- if(item->getPermissions().isGroupOwned())
- {
- LLGroupActions::show(item->getPermissions().getGroup());
- }
- else
- {
- LLAvatarActions::showProfile(item->getPermissions().getOwner());
- }
-}
-
-// static
-void LLSidepanelItemInfo::onCommitName()
-{
- //llinfos << "LLSidepanelItemInfo::onCommitName()" << llendl;
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
- if(!item)
- {
- return;
- }
- LLLineEditor* labelItemName = getChild<LLLineEditor>("LabelItemName");
-
- if(labelItemName&&
- (item->getName() != labelItemName->getText()) &&
- (gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE)) )
- {
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->rename(labelItemName->getText());
- if(mObjectID.isNull())
- {
- new_item->updateServer(FALSE);
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
- else
- {
- LLViewerObject* object = gObjectList.findObject(mObjectID);
- if(object)
- {
- object->updateInventory(
- new_item,
- TASK_INVENTORY_ITEM_KEY,
- false);
- }
- }
- }
-}
-
-void LLSidepanelItemInfo::onCommitDescription()
-{
- //llinfos << "LLSidepanelItemInfo::onCommitDescription()" << llendl;
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
- if(!item) return;
-
- LLLineEditor* labelItemDesc = getChild<LLLineEditor>("LabelItemDesc");
- if(!labelItemDesc)
- {
- return;
- }
- if((item->getDescription() != labelItemDesc->getText()) &&
- (gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE)))
- {
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
-
- new_item->setDescription(labelItemDesc->getText());
- if(mObjectID.isNull())
- {
- new_item->updateServer(FALSE);
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
- else
- {
- LLViewerObject* object = gObjectList.findObject(mObjectID);
- if(object)
- {
- object->updateInventory(
- new_item,
- TASK_INVENTORY_ITEM_KEY,
- false);
- }
- }
- }
-}
-
-// static
-void LLSidepanelItemInfo::onCommitPermissions()
-{
- //llinfos << "LLSidepanelItemInfo::onCommitPermissions()" << llendl;
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
- if(!item) return;
- LLPermissions perm(item->getPermissions());
-
-
- LLCheckBoxCtrl* CheckShareWithGroup = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
-
- if(CheckShareWithGroup)
- {
- perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(),
- CheckShareWithGroup->get(),
- PERM_MODIFY | PERM_MOVE | PERM_COPY);
- }
- LLCheckBoxCtrl* CheckEveryoneCopy = getChild<LLCheckBoxCtrl>("CheckEveryoneCopy");
- if(CheckEveryoneCopy)
- {
- perm.setEveryoneBits(gAgent.getID(), gAgent.getGroupID(),
- CheckEveryoneCopy->get(), PERM_COPY);
- }
-
- LLCheckBoxCtrl* CheckNextOwnerModify = getChild<LLCheckBoxCtrl>("CheckNextOwnerModify");
- if(CheckNextOwnerModify)
- {
- perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
- CheckNextOwnerModify->get(), PERM_MODIFY);
- }
- LLCheckBoxCtrl* CheckNextOwnerCopy = getChild<LLCheckBoxCtrl>("CheckNextOwnerCopy");
- if(CheckNextOwnerCopy)
- {
- perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
- CheckNextOwnerCopy->get(), PERM_COPY);
- }
- LLCheckBoxCtrl* CheckNextOwnerTransfer = getChild<LLCheckBoxCtrl>("CheckNextOwnerTransfer");
- if(CheckNextOwnerTransfer)
- {
- perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
- CheckNextOwnerTransfer->get(), PERM_TRANSFER);
- }
- if(perm != item->getPermissions()
- && item->isComplete())
- {
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->setPermissions(perm);
- U32 flags = new_item->getFlags();
- // If next owner permissions have changed (and this is an object)
- // then set the slam permissions flag so that they are applied on rez.
- if((perm.getMaskNextOwner()!=item->getPermissions().getMaskNextOwner())
- && (item->getType() == LLAssetType::AT_OBJECT))
- {
- flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
- }
- // If everyone permissions have changed (and this is an object)
- // then set the overwrite everyone permissions flag so they
- // are applied on rez.
- if ((perm.getMaskEveryone()!=item->getPermissions().getMaskEveryone())
- && (item->getType() == LLAssetType::AT_OBJECT))
- {
- flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
- }
- // If group permissions have changed (and this is an object)
- // then set the overwrite group permissions flag so they
- // are applied on rez.
- if ((perm.getMaskGroup()!=item->getPermissions().getMaskGroup())
- && (item->getType() == LLAssetType::AT_OBJECT))
- {
- flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
- }
- new_item->setFlags(flags);
- if(mObjectID.isNull())
- {
- new_item->updateServer(FALSE);
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
- else
- {
- LLViewerObject* object = gObjectList.findObject(mObjectID);
- if(object)
- {
- object->updateInventory(
- new_item,
- TASK_INVENTORY_ITEM_KEY,
- false);
- }
- }
- }
- else
- {
- // need to make sure we don't just follow the click
- refresh();
- }
-}
-
-// static
-void LLSidepanelItemInfo::onCommitSaleInfo()
-{
- //llinfos << "LLSidepanelItemInfo::onCommitSaleInfo()" << llendl;
- updateSaleInfo();
-}
-
-// static
-void LLSidepanelItemInfo::onCommitSaleType()
-{
- //llinfos << "LLSidepanelItemInfo::onCommitSaleType()" << llendl;
- updateSaleInfo();
-}
-
-void LLSidepanelItemInfo::updateSaleInfo()
-{
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
- if(!item) return;
- LLSaleInfo sale_info(item->getSaleInfo());
- if(!gAgent.allowOperation(PERM_TRANSFER, item->getPermissions(), GP_OBJECT_SET_SALE))
- {
- childSetValue("CheckPurchase",LLSD((BOOL)FALSE));
- }
-
- if((BOOL)childGetValue("CheckPurchase"))
- {
- // turn on sale info
- LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_COPY;
-
- LLRadioGroup* RadioSaleType = getChild<LLRadioGroup>("RadioSaleType");
- if(RadioSaleType)
- {
- switch (RadioSaleType->getSelectedIndex())
- {
- case 0:
- sale_type = LLSaleInfo::FS_ORIGINAL;
- break;
- case 1:
- sale_type = LLSaleInfo::FS_COPY;
- break;
- case 2:
- sale_type = LLSaleInfo::FS_CONTENTS;
- break;
- default:
- sale_type = LLSaleInfo::FS_COPY;
- break;
- }
- }
-
- if (sale_type == LLSaleInfo::FS_COPY
- && !gAgent.allowOperation(PERM_COPY, item->getPermissions(),
- GP_OBJECT_SET_SALE))
- {
- sale_type = LLSaleInfo::FS_ORIGINAL;
- }
-
-
-
- S32 price = -1;
- price = getChild<LLUICtrl>("Edit Cost")->getValue().asInteger();;
-
- // Invalid data - turn off the sale
- if (price < 0)
- {
- sale_type = LLSaleInfo::FS_NOT;
- price = 0;
- }
-
- sale_info.setSaleType(sale_type);
- sale_info.setSalePrice(price);
- }
- else
- {
- sale_info.setSaleType(LLSaleInfo::FS_NOT);
- }
- if(sale_info != item->getSaleInfo()
- && item->isComplete())
- {
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
-
- // Force an update on the sale price at rez
- if (item->getType() == LLAssetType::AT_OBJECT)
- {
- U32 flags = new_item->getFlags();
- flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
- new_item->setFlags(flags);
- }
-
- new_item->setSaleInfo(sale_info);
- if(mObjectID.isNull())
- {
- // This is in the agent's inventory.
- new_item->updateServer(FALSE);
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
- else
- {
- // This is in an object's contents.
- LLViewerObject* object = gObjectList.findObject(mObjectID);
- if(object)
- {
- object->updateInventory(
- new_item,
- TASK_INVENTORY_ITEM_KEY,
- false);
- }
- }
- }
- else
- {
- // need to make sure we don't just follow the click
- refresh();
- }
-}
-
-LLInventoryItem* LLSidepanelItemInfo::findItem() const
-{
- LLInventoryItem* item = NULL;
- if(mObjectID.isNull())
- {
- // it is in agent inventory
- item = gInventory.getItem(mItemID);
- }
- else
- {
- LLViewerObject* object = gObjectList.findObject(mObjectID);
- if(object)
- {
- item = (LLInventoryItem*)object->getInventoryObject(mItemID);
- }
- }
- return item;
-}
-
-// virtual
-void LLSidepanelItemInfo::updateVerbs()
-{
- LLSidepanelInventorySubpanel::updateVerbs();
-
- const LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
- if (item)
- {
- const LLPermissions& perm = item->getPermissions();
- BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm,
- GP_OBJECT_MANIPULATE);
- mEditBtn->setEnabled(is_modifiable);
- }
-}
-
-// virtual
-void LLSidepanelItemInfo::save()
-{
- onCommitName();
- onCommitDescription();
- onCommitPermissions();
- onCommitSaleInfo();
- onCommitSaleType();
-}
+/**
+ * @file llsidepaneliteminfo.cpp
+ * @brief A floater which shows an inventory item's properties.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llsidepaneliteminfo.h"
+
+#include "roles_constants.h"
+
+#include "llagent.h"
+#include "llavataractions.h"
+#include "llbutton.h"
+#include "llfloaterreg.h"
+#include "llgroupactions.h"
+#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
+#include "lllineeditor.h"
+#include "llradiogroup.h"
+#include "llviewercontrol.h"
+#include "llviewerinventory.h"
+#include "llviewerobjectlist.h"
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLItemPropertiesObserver
+//
+// Helper class to watch for changes to the item.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLItemPropertiesObserver : public LLInventoryObserver
+{
+public:
+ LLItemPropertiesObserver(LLSidepanelItemInfo* floater)
+ : mFloater(floater)
+ {
+ gInventory.addObserver(this);
+ }
+ virtual ~LLItemPropertiesObserver()
+ {
+ gInventory.removeObserver(this);
+ }
+ virtual void changed(U32 mask);
+private:
+ LLSidepanelItemInfo* mFloater;
+};
+
+void LLItemPropertiesObserver::changed(U32 mask)
+{
+ // if there's a change we're interested in.
+ if((mask & (LLInventoryObserver::LABEL | LLInventoryObserver::INTERNAL | LLInventoryObserver::REMOVE)) != 0)
+ {
+ mFloater->dirty();
+ }
+}
+
+
+
+///----------------------------------------------------------------------------
+/// Class LLSidepanelItemInfo
+///----------------------------------------------------------------------------
+
+static LLRegisterPanelClassWrapper<LLSidepanelItemInfo> t_item_info("sidepanel_item_info");
+
+// Default constructor
+LLSidepanelItemInfo::LLSidepanelItemInfo()
+ : mItemID(LLUUID::null)
+{
+ mPropertiesObserver = new LLItemPropertiesObserver(this);
+
+ //LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml");
+}
+
+// Destroys the object
+LLSidepanelItemInfo::~LLSidepanelItemInfo()
+{
+ delete mPropertiesObserver;
+ mPropertiesObserver = NULL;
+}
+
+// virtual
+BOOL LLSidepanelItemInfo::postBuild()
+{
+ LLSidepanelInventorySubpanel::postBuild();
+
+ // build the UI
+ // item name & description
+ childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ //getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));
+ childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+ //getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));
+
+ // Creator information
+ getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this));
+
+ // owner information
+ getChild<LLUICtrl>("BtnOwner")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickOwner,this));
+
+ refresh();
+ return TRUE;
+}
+
+void LLSidepanelItemInfo::setObjectID(const LLUUID& object_id)
+{
+ mObjectID = object_id;
+}
+
+void LLSidepanelItemInfo::setItemID(const LLUUID& item_id)
+{
+ mItemID = item_id;
+}
+
+void LLSidepanelItemInfo::reset()
+{
+ LLSidepanelInventorySubpanel::reset();
+
+ mObjectID = LLUUID::null;
+ mItemID = LLUUID::null;
+}
+
+void LLSidepanelItemInfo::refresh()
+{
+ LLInventoryItem* item = findItem();
+ if(item)
+ {
+ refreshFromItem(item);
+ updateVerbs();
+ }
+ else
+ {
+ if (getIsEditing())
+ {
+ setIsEditing(FALSE);
+ return;
+ }
+ }
+
+ if (!getIsEditing())
+ {
+ const std::string no_item_names[]={
+ "LabelItemName",
+ "LabelItemDesc",
+ "LabelCreatorName",
+ "LabelOwnerName",
+ "CheckOwnerModify",
+ "CheckOwnerCopy",
+ "CheckOwnerTransfer",
+ "CheckShareWithGroup",
+ "CheckEveryoneCopy",
+ "CheckNextOwnerModify",
+ "CheckNextOwnerCopy",
+ "CheckNextOwnerTransfer",
+ "CheckPurchase",
+ "RadioSaleType",
+ "Edit Cost"
+ };
+
+ for(size_t t=0; t<LL_ARRAY_SIZE(no_item_names); ++t)
+ {
+ childSetEnabled(no_item_names[t],false);
+ }
+
+ const std::string hide_names[]={
+ "BaseMaskDebug",
+ "OwnerMaskDebug",
+ "GroupMaskDebug",
+ "EveryoneMaskDebug",
+ "NextMaskDebug"
+ };
+ for(size_t t=0; t<LL_ARRAY_SIZE(hide_names); ++t)
+ {
+ childSetVisible(hide_names[t],false);
+ }
+ }
+
+ if (!item)
+ {
+ const std::string no_edit_mode_names[]={
+ "BtnCreator",
+ "BtnOwner",
+ };
+ for(size_t t=0; t<LL_ARRAY_SIZE(no_edit_mode_names); ++t)
+ {
+ childSetEnabled(no_edit_mode_names[t],false);
+ }
+ }
+
+ updateVerbs();
+}
+
+void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item)
+{
+ ////////////////////////
+ // PERMISSIONS LOOKUP //
+ ////////////////////////
+
+ // do not enable the UI for incomplete items.
+ LLViewerInventoryItem* i = (LLViewerInventoryItem*)item;
+ BOOL is_complete = i->isComplete();
+ const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(i->getInventoryType());
+ const BOOL is_calling_card = (i->getInventoryType() == LLInventoryType::IT_CALLINGCARD);
+ const LLPermissions& perm = item->getPermissions();
+ const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm,
+ GP_OBJECT_MANIPULATE);
+ const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm,
+ GP_OBJECT_SET_SALE) &&
+ !cannot_restrict_permissions;
+ const BOOL is_link = i->getIsLinkType();
+
+ // You need permission to modify the object to modify an inventory
+ // item in it.
+ LLViewerObject* object = NULL;
+ if(!mObjectID.isNull()) object = gObjectList.findObject(mObjectID);
+ BOOL is_obj_modify = TRUE;
+ if(object)
+ {
+ is_obj_modify = object->permOwnerModify();
+ }
+
+ //////////////////////
+ // ITEM NAME & DESC //
+ //////////////////////
+ BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm,
+ GP_OBJECT_MANIPULATE)
+ && is_obj_modify && is_complete;
+
+ childSetEnabled("LabelItemNameTitle",TRUE);
+ childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards
+ childSetText("LabelItemName",item->getName());
+ childSetEnabled("LabelItemDescTitle",TRUE);
+ childSetEnabled("LabelItemDesc",is_modifiable);
+ childSetVisible("IconLocked",!is_modifiable);
+ childSetText("LabelItemDesc",item->getDescription());
+
+ //////////////////
+ // CREATOR NAME //
+ //////////////////
+ if(!gCacheName) return;
+ if(!gAgent.getRegion()) return;
+
+ if (item->getCreatorUUID().notNull())
+ {
+ std::string name;
+ gCacheName->getFullName(item->getCreatorUUID(), name);
+ childSetEnabled("BtnCreator",TRUE);
+ childSetEnabled("LabelCreatorTitle",TRUE);
+ childSetEnabled("LabelCreatorName",TRUE);
+ childSetText("LabelCreatorName",name);
+ }
+ else
+ {
+ childSetEnabled("BtnCreator",FALSE);
+ childSetEnabled("LabelCreatorTitle",FALSE);
+ childSetEnabled("LabelCreatorName",FALSE);
+ childSetText("LabelCreatorName",getString("unknown"));
+ }
+
+ ////////////////
+ // OWNER NAME //
+ ////////////////
+ if(perm.isOwned())
+ {
+ std::string name;
+ if (perm.isGroupOwned())
+ {
+ gCacheName->getGroupName(perm.getGroup(), name);
+ }
+ else
+ {
+ gCacheName->getFullName(perm.getOwner(), name);
+ }
+ childSetEnabled("BtnOwner",TRUE);
+ childSetEnabled("LabelOwnerTitle",TRUE);
+ childSetEnabled("LabelOwnerName",TRUE);
+ childSetText("LabelOwnerName",name);
+ }
+ else
+ {
+ childSetEnabled("BtnOwner",FALSE);
+ childSetEnabled("LabelOwnerTitle",FALSE);
+ childSetEnabled("LabelOwnerName",FALSE);
+ childSetText("LabelOwnerName",getString("public"));
+ }
+
+ //////////////////
+ // ACQUIRE DATE //
+ //////////////////
+
+ time_t time_utc = item->getCreationDate();
+ if (0 == time_utc)
+ {
+ childSetText("LabelAcquiredDate",getString("unknown"));
+ }
+ else
+ {
+ std::string timeStr = getString("acquiredDate");
+ LLSD substitution;
+ substitution["datetime"] = (S32) time_utc;
+ LLStringUtil::format (timeStr, substitution);
+ childSetText ("LabelAcquiredDate", timeStr);
+ }
+
+ ///////////////////////
+ // OWNER PERMISSIONS //
+ ///////////////////////
+ if(can_agent_manipulate)
+ {
+ childSetText("OwnerLabel",getString("you_can"));
+ }
+ else
+ {
+ childSetText("OwnerLabel",getString("owner_can"));
+ }
+
+ U32 base_mask = perm.getMaskBase();
+ U32 owner_mask = perm.getMaskOwner();
+ U32 group_mask = perm.getMaskGroup();
+ U32 everyone_mask = perm.getMaskEveryone();
+ U32 next_owner_mask = perm.getMaskNextOwner();
+
+ childSetEnabled("OwnerLabel",TRUE);
+ childSetEnabled("CheckOwnerModify",FALSE);
+ childSetValue("CheckOwnerModify",LLSD((BOOL)(owner_mask & PERM_MODIFY)));
+ childSetEnabled("CheckOwnerCopy",FALSE);
+ childSetValue("CheckOwnerCopy",LLSD((BOOL)(owner_mask & PERM_COPY)));
+ childSetEnabled("CheckOwnerTransfer",FALSE);
+ childSetValue("CheckOwnerTransfer",LLSD((BOOL)(owner_mask & PERM_TRANSFER)));
+
+ ///////////////////////
+ // DEBUG PERMISSIONS //
+ ///////////////////////
+
+ if( gSavedSettings.getBOOL("DebugPermissions") )
+ {
+ BOOL slam_perm = FALSE;
+ BOOL overwrite_group = FALSE;
+ BOOL overwrite_everyone = FALSE;
+
+ if (item->getType() == LLAssetType::AT_OBJECT)
+ {
+ U32 flags = item->getFlags();
+ slam_perm = flags & LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+ overwrite_everyone = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ overwrite_group = flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ }
+
+ std::string perm_string;
+
+ perm_string = "B: ";
+ perm_string += mask_to_string(base_mask);
+ childSetText("BaseMaskDebug",perm_string);
+ childSetVisible("BaseMaskDebug",TRUE);
+
+ perm_string = "O: ";
+ perm_string += mask_to_string(owner_mask);
+ childSetText("OwnerMaskDebug",perm_string);
+ childSetVisible("OwnerMaskDebug",TRUE);
+
+ perm_string = "G";
+ perm_string += overwrite_group ? "*: " : ": ";
+ perm_string += mask_to_string(group_mask);
+ childSetText("GroupMaskDebug",perm_string);
+ childSetVisible("GroupMaskDebug",TRUE);
+
+ perm_string = "E";
+ perm_string += overwrite_everyone ? "*: " : ": ";
+ perm_string += mask_to_string(everyone_mask);
+ childSetText("EveryoneMaskDebug",perm_string);
+ childSetVisible("EveryoneMaskDebug",TRUE);
+
+ perm_string = "N";
+ perm_string += slam_perm ? "*: " : ": ";
+ perm_string += mask_to_string(next_owner_mask);
+ childSetText("NextMaskDebug",perm_string);
+ childSetVisible("NextMaskDebug",TRUE);
+ }
+ else
+ {
+ childSetVisible("BaseMaskDebug",FALSE);
+ childSetVisible("OwnerMaskDebug",FALSE);
+ childSetVisible("GroupMaskDebug",FALSE);
+ childSetVisible("EveryoneMaskDebug",FALSE);
+ childSetVisible("NextMaskDebug",FALSE);
+ }
+
+ /////////////
+ // SHARING //
+ /////////////
+
+ // Check for ability to change values.
+ if (is_link || cannot_restrict_permissions)
+ {
+ childSetEnabled("CheckShareWithGroup",FALSE);
+ childSetEnabled("CheckEveryoneCopy",FALSE);
+ }
+ else if (is_obj_modify && can_agent_manipulate)
+ {
+ childSetEnabled("CheckShareWithGroup",TRUE);
+ childSetEnabled("CheckEveryoneCopy",(owner_mask & PERM_COPY) && (owner_mask & PERM_TRANSFER));
+ }
+ else
+ {
+ childSetEnabled("CheckShareWithGroup",FALSE);
+ childSetEnabled("CheckEveryoneCopy",FALSE);
+ }
+
+ // Set values.
+ BOOL is_group_copy = (group_mask & PERM_COPY) ? TRUE : FALSE;
+ BOOL is_group_modify = (group_mask & PERM_MODIFY) ? TRUE : FALSE;
+ BOOL is_group_move = (group_mask & PERM_MOVE) ? TRUE : FALSE;
+
+ if (is_group_copy && is_group_modify && is_group_move)
+ {
+ childSetValue("CheckShareWithGroup",LLSD((BOOL)TRUE));
+
+ LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
+ if(ctl)
+ {
+ ctl->setTentative(FALSE);
+ }
+ }
+ else if (!is_group_copy && !is_group_modify && !is_group_move)
+ {
+ childSetValue("CheckShareWithGroup",LLSD((BOOL)FALSE));
+ LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
+ if(ctl)
+ {
+ ctl->setTentative(FALSE);
+ }
+ }
+ else
+ {
+ LLCheckBoxCtrl* ctl = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
+ if(ctl)
+ {
+ ctl->setTentative(TRUE);
+ ctl->set(TRUE);
+ }
+ }
+
+ childSetValue("CheckEveryoneCopy",LLSD((BOOL)(everyone_mask & PERM_COPY)));
+
+ ///////////////
+ // SALE INFO //
+ ///////////////
+
+ const LLSaleInfo& sale_info = item->getSaleInfo();
+ BOOL is_for_sale = sale_info.isForSale();
+ // Check for ability to change values.
+ if (is_obj_modify && can_agent_sell
+ && gAgent.allowOperation(PERM_TRANSFER, perm, GP_OBJECT_MANIPULATE))
+ {
+ childSetEnabled("SaleLabel",is_complete);
+ childSetEnabled("CheckPurchase",is_complete);
+
+ childSetEnabled("NextOwnerLabel",TRUE);
+ childSetEnabled("CheckNextOwnerModify",(base_mask & PERM_MODIFY) && !cannot_restrict_permissions);
+ childSetEnabled("CheckNextOwnerCopy",(base_mask & PERM_COPY) && !cannot_restrict_permissions);
+ childSetEnabled("CheckNextOwnerTransfer",(next_owner_mask & PERM_COPY) && !cannot_restrict_permissions);
+
+ childSetEnabled("RadioSaleType",is_complete && is_for_sale);
+ childSetEnabled("TextPrice",is_complete && is_for_sale);
+ childSetEnabled("Edit Cost",is_complete && is_for_sale);
+ }
+ else
+ {
+ childSetEnabled("SaleLabel",FALSE);
+ childSetEnabled("CheckPurchase",FALSE);
+
+ childSetEnabled("NextOwnerLabel",FALSE);
+ childSetEnabled("CheckNextOwnerModify",FALSE);
+ childSetEnabled("CheckNextOwnerCopy",FALSE);
+ childSetEnabled("CheckNextOwnerTransfer",FALSE);
+
+ childSetEnabled("RadioSaleType",FALSE);
+ childSetEnabled("TextPrice",FALSE);
+ childSetEnabled("Edit Cost",FALSE);
+ }
+
+ // Set values.
+ childSetValue("CheckPurchase", is_for_sale);
+ childSetEnabled("combobox sale copy", is_for_sale);
+ childSetEnabled("Edit Cost", is_for_sale);
+ childSetValue("CheckNextOwnerModify",LLSD(BOOL(next_owner_mask & PERM_MODIFY)));
+ childSetValue("CheckNextOwnerCopy",LLSD(BOOL(next_owner_mask & PERM_COPY)));
+ childSetValue("CheckNextOwnerTransfer",LLSD(BOOL(next_owner_mask & PERM_TRANSFER)));
+
+ LLRadioGroup* radioSaleType = getChild<LLRadioGroup>("RadioSaleType");
+ if (is_for_sale)
+ {
+ radioSaleType->setSelectedIndex((S32)sale_info.getSaleType() - 1);
+ S32 numerical_price;
+ numerical_price = sale_info.getSalePrice();
+ childSetText("Edit Cost",llformat("%d",numerical_price));
+ }
+ else
+ {
+ radioSaleType->setSelectedIndex(-1);
+ childSetText("Edit Cost",llformat("%d",0));
+ }
+}
+
+void LLSidepanelItemInfo::onClickCreator()
+{
+ LLInventoryItem* item = findItem();
+ if(!item) return;
+ if(!item->getCreatorUUID().isNull())
+ {
+ LLAvatarActions::showProfile(item->getCreatorUUID());
+ }
+}
+
+// static
+void LLSidepanelItemInfo::onClickOwner()
+{
+ LLInventoryItem* item = findItem();
+ if(!item) return;
+ if(item->getPermissions().isGroupOwned())
+ {
+ LLGroupActions::show(item->getPermissions().getGroup());
+ }
+ else
+ {
+ LLAvatarActions::showProfile(item->getPermissions().getOwner());
+ }
+}
+
+// static
+void LLSidepanelItemInfo::onCommitName()
+{
+ //llinfos << "LLSidepanelItemInfo::onCommitName()" << llendl;
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
+ if(!item)
+ {
+ return;
+ }
+ LLLineEditor* labelItemName = getChild<LLLineEditor>("LabelItemName");
+
+ if(labelItemName&&
+ (item->getName() != labelItemName->getText()) &&
+ (gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE)) )
+ {
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+ new_item->rename(labelItemName->getText());
+ if(mObjectID.isNull())
+ {
+ new_item->updateServer(FALSE);
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+ }
+ else
+ {
+ LLViewerObject* object = gObjectList.findObject(mObjectID);
+ if(object)
+ {
+ object->updateInventory(
+ new_item,
+ TASK_INVENTORY_ITEM_KEY,
+ false);
+ }
+ }
+ }
+}
+
+void LLSidepanelItemInfo::onCommitDescription()
+{
+ //llinfos << "LLSidepanelItemInfo::onCommitDescription()" << llendl;
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
+ if(!item) return;
+
+ LLLineEditor* labelItemDesc = getChild<LLLineEditor>("LabelItemDesc");
+ if(!labelItemDesc)
+ {
+ return;
+ }
+ if((item->getDescription() != labelItemDesc->getText()) &&
+ (gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE)))
+ {
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+
+ new_item->setDescription(labelItemDesc->getText());
+ if(mObjectID.isNull())
+ {
+ new_item->updateServer(FALSE);
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+ }
+ else
+ {
+ LLViewerObject* object = gObjectList.findObject(mObjectID);
+ if(object)
+ {
+ object->updateInventory(
+ new_item,
+ TASK_INVENTORY_ITEM_KEY,
+ false);
+ }
+ }
+ }
+}
+
+// static
+void LLSidepanelItemInfo::onCommitPermissions()
+{
+ //llinfos << "LLSidepanelItemInfo::onCommitPermissions()" << llendl;
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
+ if(!item) return;
+ LLPermissions perm(item->getPermissions());
+
+
+ LLCheckBoxCtrl* CheckShareWithGroup = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
+
+ if(CheckShareWithGroup)
+ {
+ perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(),
+ CheckShareWithGroup->get(),
+ PERM_MODIFY | PERM_MOVE | PERM_COPY);
+ }
+ LLCheckBoxCtrl* CheckEveryoneCopy = getChild<LLCheckBoxCtrl>("CheckEveryoneCopy");
+ if(CheckEveryoneCopy)
+ {
+ perm.setEveryoneBits(gAgent.getID(), gAgent.getGroupID(),
+ CheckEveryoneCopy->get(), PERM_COPY);
+ }
+
+ LLCheckBoxCtrl* CheckNextOwnerModify = getChild<LLCheckBoxCtrl>("CheckNextOwnerModify");
+ if(CheckNextOwnerModify)
+ {
+ perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+ CheckNextOwnerModify->get(), PERM_MODIFY);
+ }
+ LLCheckBoxCtrl* CheckNextOwnerCopy = getChild<LLCheckBoxCtrl>("CheckNextOwnerCopy");
+ if(CheckNextOwnerCopy)
+ {
+ perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+ CheckNextOwnerCopy->get(), PERM_COPY);
+ }
+ LLCheckBoxCtrl* CheckNextOwnerTransfer = getChild<LLCheckBoxCtrl>("CheckNextOwnerTransfer");
+ if(CheckNextOwnerTransfer)
+ {
+ perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+ CheckNextOwnerTransfer->get(), PERM_TRANSFER);
+ }
+ if(perm != item->getPermissions()
+ && item->isComplete())
+ {
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+ new_item->setPermissions(perm);
+ U32 flags = new_item->getFlags();
+ // If next owner permissions have changed (and this is an object)
+ // then set the slam permissions flag so that they are applied on rez.
+ if((perm.getMaskNextOwner()!=item->getPermissions().getMaskNextOwner())
+ && (item->getType() == LLAssetType::AT_OBJECT))
+ {
+ flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+ }
+ // If everyone permissions have changed (and this is an object)
+ // then set the overwrite everyone permissions flag so they
+ // are applied on rez.
+ if ((perm.getMaskEveryone()!=item->getPermissions().getMaskEveryone())
+ && (item->getType() == LLAssetType::AT_OBJECT))
+ {
+ flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+ }
+ // If group permissions have changed (and this is an object)
+ // then set the overwrite group permissions flag so they
+ // are applied on rez.
+ if ((perm.getMaskGroup()!=item->getPermissions().getMaskGroup())
+ && (item->getType() == LLAssetType::AT_OBJECT))
+ {
+ flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+ }
+ new_item->setFlags(flags);
+ if(mObjectID.isNull())
+ {
+ new_item->updateServer(FALSE);
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+ }
+ else
+ {
+ LLViewerObject* object = gObjectList.findObject(mObjectID);
+ if(object)
+ {
+ object->updateInventory(
+ new_item,
+ TASK_INVENTORY_ITEM_KEY,
+ false);
+ }
+ }
+ }
+ else
+ {
+ // need to make sure we don't just follow the click
+ refresh();
+ }
+}
+
+// static
+void LLSidepanelItemInfo::onCommitSaleInfo()
+{
+ //llinfos << "LLSidepanelItemInfo::onCommitSaleInfo()" << llendl;
+ updateSaleInfo();
+}
+
+// static
+void LLSidepanelItemInfo::onCommitSaleType()
+{
+ //llinfos << "LLSidepanelItemInfo::onCommitSaleType()" << llendl;
+ updateSaleInfo();
+}
+
+void LLSidepanelItemInfo::updateSaleInfo()
+{
+ LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
+ if(!item) return;
+ LLSaleInfo sale_info(item->getSaleInfo());
+ if(!gAgent.allowOperation(PERM_TRANSFER, item->getPermissions(), GP_OBJECT_SET_SALE))
+ {
+ childSetValue("CheckPurchase",LLSD((BOOL)FALSE));
+ }
+
+ if((BOOL)childGetValue("CheckPurchase"))
+ {
+ // turn on sale info
+ LLSaleInfo::EForSale sale_type = LLSaleInfo::FS_COPY;
+
+ LLRadioGroup* RadioSaleType = getChild<LLRadioGroup>("RadioSaleType");
+ if(RadioSaleType)
+ {
+ switch (RadioSaleType->getSelectedIndex())
+ {
+ case 0:
+ sale_type = LLSaleInfo::FS_ORIGINAL;
+ break;
+ case 1:
+ sale_type = LLSaleInfo::FS_COPY;
+ break;
+ case 2:
+ sale_type = LLSaleInfo::FS_CONTENTS;
+ break;
+ default:
+ sale_type = LLSaleInfo::FS_COPY;
+ break;
+ }
+ }
+
+ if (sale_type == LLSaleInfo::FS_COPY
+ && !gAgent.allowOperation(PERM_COPY, item->getPermissions(),
+ GP_OBJECT_SET_SALE))
+ {
+ sale_type = LLSaleInfo::FS_ORIGINAL;
+ }
+
+
+
+ S32 price = -1;
+ price = getChild<LLUICtrl>("Edit Cost")->getValue().asInteger();;
+
+ // Invalid data - turn off the sale
+ if (price < 0)
+ {
+ sale_type = LLSaleInfo::FS_NOT;
+ price = 0;
+ }
+
+ sale_info.setSaleType(sale_type);
+ sale_info.setSalePrice(price);
+ }
+ else
+ {
+ sale_info.setSaleType(LLSaleInfo::FS_NOT);
+ }
+ if(sale_info != item->getSaleInfo()
+ && item->isComplete())
+ {
+ LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
+
+ // Force an update on the sale price at rez
+ if (item->getType() == LLAssetType::AT_OBJECT)
+ {
+ U32 flags = new_item->getFlags();
+ flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+ new_item->setFlags(flags);
+ }
+
+ new_item->setSaleInfo(sale_info);
+ if(mObjectID.isNull())
+ {
+ // This is in the agent's inventory.
+ new_item->updateServer(FALSE);
+ gInventory.updateItem(new_item);
+ gInventory.notifyObservers();
+ }
+ else
+ {
+ // This is in an object's contents.
+ LLViewerObject* object = gObjectList.findObject(mObjectID);
+ if(object)
+ {
+ object->updateInventory(
+ new_item,
+ TASK_INVENTORY_ITEM_KEY,
+ false);
+ }
+ }
+ }
+ else
+ {
+ // need to make sure we don't just follow the click
+ refresh();
+ }
+}
+
+LLInventoryItem* LLSidepanelItemInfo::findItem() const
+{
+ LLInventoryItem* item = NULL;
+ if(mObjectID.isNull())
+ {
+ // it is in agent inventory
+ item = gInventory.getItem(mItemID);
+ }
+ else
+ {
+ LLViewerObject* object = gObjectList.findObject(mObjectID);
+ if(object)
+ {
+ item = (LLInventoryItem*)object->getInventoryObject(mItemID);
+ }
+ }
+ return item;
+}
+
+// virtual
+void LLSidepanelItemInfo::updateVerbs()
+{
+ LLSidepanelInventorySubpanel::updateVerbs();
+
+ const LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem();
+ if (item)
+ {
+ const LLPermissions& perm = item->getPermissions();
+ BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm,
+ GP_OBJECT_MANIPULATE);
+ mEditBtn->setEnabled(is_modifiable);
+ }
+}
+
+// virtual
+void LLSidepanelItemInfo::save()
+{
+ onCommitName();
+ onCommitDescription();
+ onCommitPermissions();
+ onCommitSaleInfo();
+ onCommitSaleType();
+}
diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h
index b348b5cceb..4bfbd56ea7 100644
--- a/indra/newview/llsidepaneliteminfo.h
+++ b/indra/newview/llsidepaneliteminfo.h
@@ -1,91 +1,91 @@
-/**
- * @file llsidepaneliteminfo.h
- * @brief A panel which shows an inventory item's properties.
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2009, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLSIDEPANELITEMINFO_H
-#define LL_LLSIDEPANELITEMINFO_H
-
-#include "llsidepanelinventorysubpanel.h"
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLSidepanelItemInfo
-// Object properties for inventory side panel.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLButton;
-class LLInventoryItem;
-class LLItemPropertiesObserver;
-class LLViewerObject;
-class LLPermissions;
-
-class LLSidepanelItemInfo : public LLSidepanelInventorySubpanel
-{
-public:
- LLSidepanelItemInfo();
- virtual ~LLSidepanelItemInfo();
-
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void reset();
-
- void setObjectID(const LLUUID& object_id);
- void setItemID(const LLUUID& item_id);
- void setEditMode(BOOL edit);
-
-protected:
- /*virtual*/ void refresh();
- /*virtual*/ void save();
- /*virtual*/ void updateVerbs();
-
- LLInventoryItem* findItem() const;
- LLViewerObject* findObject() const;
-
- void refreshFromItem(LLInventoryItem* item);
-
-private:
- LLUUID mItemID; // inventory UUID for the inventory item.
- LLUUID mObjectID; // in-world task UUID, or null if in agent inventory.
- LLItemPropertiesObserver* mPropertiesObserver; // for syncing changes to item
-
- //
- // UI Elements
- //
-protected:
- void onClickCreator();
- void onClickOwner();
- void onCommitName();
- void onCommitDescription();
- void onCommitPermissions();
- void onCommitSaleInfo();
- void onCommitSaleType();
- void updateSaleInfo();
-};
-
-#endif // LL_LLSIDEPANELITEMINFO_H
+/**
+ * @file llsidepaneliteminfo.h
+ * @brief A panel which shows an inventory item's properties.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLSIDEPANELITEMINFO_H
+#define LL_LLSIDEPANELITEMINFO_H
+
+#include "llsidepanelinventorysubpanel.h"
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLSidepanelItemInfo
+// Object properties for inventory side panel.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLButton;
+class LLInventoryItem;
+class LLItemPropertiesObserver;
+class LLViewerObject;
+class LLPermissions;
+
+class LLSidepanelItemInfo : public LLSidepanelInventorySubpanel
+{
+public:
+ LLSidepanelItemInfo();
+ virtual ~LLSidepanelItemInfo();
+
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void reset();
+
+ void setObjectID(const LLUUID& object_id);
+ void setItemID(const LLUUID& item_id);
+ void setEditMode(BOOL edit);
+
+protected:
+ /*virtual*/ void refresh();
+ /*virtual*/ void save();
+ /*virtual*/ void updateVerbs();
+
+ LLInventoryItem* findItem() const;
+ LLViewerObject* findObject() const;
+
+ void refreshFromItem(LLInventoryItem* item);
+
+private:
+ LLUUID mItemID; // inventory UUID for the inventory item.
+ LLUUID mObjectID; // in-world task UUID, or null if in agent inventory.
+ LLItemPropertiesObserver* mPropertiesObserver; // for syncing changes to item
+
+ //
+ // UI Elements
+ //
+protected:
+ void onClickCreator();
+ void onClickOwner();
+ void onCommitName();
+ void onCommitDescription();
+ void onCommitPermissions();
+ void onCommitSaleInfo();
+ void onCommitSaleType();
+ void updateSaleInfo();
+};
+
+#endif // LL_LLSIDEPANELITEMINFO_H
diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
index 74b7c7dd72..b4d0fa20ef 100644
--- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Beboer" />
- <string name="AcctTypeTrial"
- value="På prøve" />
- <string name="AcctTypeCharterMember"
- value="æresmedlem" />
- <string name="AcctTypeEmployee"
- value="Linden Lab medarbejder" />
- <string name="PaymentInfoUsed"
- value="Betalende medlem" />
- <string name="PaymentInfoOnFile"
- value="Registreret betalende" />
- <string name="NoPaymentInfoOnFile"
- value="Ingen betalingsinfo" />
- <string name="AgeVerified"
- value="Alders-checket" />
- <string name="NotAgeVerified"
- value="Ikke alders-checket" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=da
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Optaget autosvar:
- </text>
- </panel>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident"
+ value="Beboer" />
+ <string name="AcctTypeTrial"
+ value="På prøve" />
+ <string name="AcctTypeCharterMember"
+ value="æresmedlem" />
+ <string name="AcctTypeEmployee"
+ value="Linden Lab medarbejder" />
+ <string name="PaymentInfoUsed"
+ value="Betalende medlem" />
+ <string name="PaymentInfoOnFile"
+ value="Registreret betalende" />
+ <string name="NoPaymentInfoOnFile"
+ value="Ingen betalingsinfo" />
+ <string name="AgeVerified"
+ value="Alders-checket" />
+ <string name="NotAgeVerified"
+ value="Ikke alders-checket" />
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=da
+ </string>
+ <panel name="scroll_content_panel">
+ <panel name="data_panel" >
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text">
+ [SECOND_LIFE]:
+ </text>
+ </panel>
+ </panel>
+ <text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="text_box3">
+ Optaget autosvar:
+ </text>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml
index 8522a89ec1..ea5c33b3c8 100644
--- a/indra/newview/skins/default/xui/de/floater_about.xml
+++ b/indra/newview/skins/default/xui/de/floater_about.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="ÜBER [APP_NAME]">
- <tab_container name="about_tab">
- <panel label="Danksagung" name="credits_panel">
- <text_editor name="credits_editor">
- Second Life wird Ihnen präsentiert von Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, 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, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, 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 und vielen anderen.
-
-Vielen Dank den folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
-
-
-
-Um im Geschäftsleben erfolreich zu sein, sei kühn, sei schnell, sei anders. --Henry Marchant
- </text_editor>
- </panel>
- <panel label="Lizenzen" 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 und Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
-
-Alle Rechte vorbehalten. Details siehe licenses.txt.
-
-Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf.G.722.1 Anhang C)
- </text_editor>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="ÜBER [APP_NAME]">
+ <tab_container name="about_tab">
+ <panel label="Danksagung" name="credits_panel">
+ <text_editor name="credits_editor">
+ Second Life wird Ihnen präsentiert von Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, 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, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, 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 und vielen anderen.
+
+Vielen Dank den folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
+
+
+
+Um im Geschäftsleben erfolreich zu sein, sei kühn, sei schnell, sei anders. --Henry Marchant
+ </text_editor>
+ </panel>
+ <panel label="Lizenzen" 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 und Mark Adler.
+google-perftools Copyright (c) 2005, Google Inc.
+
+Alle Rechte vorbehalten. Details siehe licenses.txt.
+
+Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf.G.722.1 Anhang C)
+ </text_editor>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index ae0ad2af65..d6d7434d58 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -1,475 +1,475 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="LAND-INFO">
- <floater.string name="Minutes">
- [MINUTES] Minuten
- </floater.string>
- <floater.string name="Minute">
- Minute
- </floater.string>
- <floater.string name="Seconds">
- [SECONDS] Sekunden
- </floater.string>
- <tab_container name="landtab">
- <panel label="Allgemein" name="land_general_panel">
- <panel.string name="new users only">
- Nur neue Benutzer
- </panel.string>
- <panel.string name="anyone">
- Jeder
- </panel.string>
- <panel.string name="area_text">
- Gebiet:
- </panel.string>
- <panel.string name="area_size_text">
- [AREA] qm.
- </panel.string>
- <panel.string name="auction_id_text">
- Auktions-ID: [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- Bestätigen Sie den Kauf, um dieses Land zu bearbeiten.
- </panel.string>
- <panel.string name="group_owned_text">
- (In Gruppenbesitz)
- </panel.string>
- <panel.string name="profile_text">
- Profil...
- </panel.string>
- <panel.string name="info_text">
- Info...
- </panel.string>
- <panel.string name="public_text">
- (öffentlich)
- </panel.string>
- <panel.string name="none_text">
- (keiner)
- </panel.string>
- <panel.string name="sale_pending_text">
- (Wird verkauft)
- </panel.string>
- <panel.string name="no_selection_text">
- Keine Parzelle ausgewählt.
-Öffnen Sie „Welt“ &gt; „Land-Info“ oder wählen Sie eine andere Parzelle aus, um Informationen darüber anzuzeigen.
- </panel.string>
- <text name="Name:">
- Name:
- </text>
- <text name="Description:">
- Beschreibung:
- </text>
- <text name="LandType">
- Typ:
- </text>
- <text name="LandTypeText">
- Mainland / Homestead
- </text>
- <text name="ContentRating">
- Einstufung:
- </text>
- <text name="ContentRatingText">
- Adult
- </text>
- <text name="Owner:">
- Eigentümer:
- </text>
- <text name="OwnerText">
- Leyla Linden
- </text>
- <button label="Profil..." label_selected="Profil..." name="Profile..."/>
- <text name="Group:">
- Gruppe:
- </text>
- <button label="Einstellen..." label_selected="Einstellen..." name="Set..."/>
- <check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>
- <button label="Übertragen..." label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
- <check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/>
- <text name="For Sale:">
- Zum Verkauf:
- </text>
- <text name="Not for sale.">
- Nicht zu verkaufen.
- </text>
- <text name="For Sale: Price L$[PRICE].">
- Preis: [PRICE] L$ ([PRICE_PER_SQM] L$/qm.).
- </text>
- <text name="SalePending"/>
- <button bottom="-222" label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..."/>
- <text name="For sale to">
- Zum Verkauf an: [BUYER]
- </text>
- <text name="Sell with landowners objects in parcel." width="210">
- Objekte sind im Verkauf eingeschlossen.
- </text>
- <text name="Selling with no objects in parcel." width="237">
- Objekte sind im Verkauf nicht eingeschlossen.
- </text>
- <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/>
- <text name="Claimed:">
- Gekauft am:
- </text>
- <text name="DateClaimText">
- Dienstag, 15. Aug. 2006, 13:47:25
- </text>
- <text name="PriceLabel">
- Gebiet:
- </text>
- <text name="PriceText">
- 4048 qm.
- </text>
- <text name="Traffic:">
- Traffic:
- </text>
- <text name="DwellText">
- 0
- </text>
- <button label="Land kaufen..." label_selected="Land kaufen..." name="Buy Land..."/>
- <button label="Für Gruppe kaufen..." label_selected="Für Gruppe kaufen..." name="Buy For Group..."/>
- <button label="Pass kaufen..." label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/>
- <button label="Land aufgeben..." label_selected="Land aufgeben..." name="Abandon Land..."/>
- <button label="Land in Besitz nehmen..." label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/>
- <button label="Linden-Verkauf..." label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
- </panel>
- <panel label="Vertrag" name="land_covenant_panel">
- <panel.string name="can_resell">
- Gekauftes Land in dieser Region kann wiederverkauft werden.
- </panel.string>
- <panel.string name="can_not_resell">
- Gekauftes Land in dieser Region kann nicht wiederverkauft werden.
- </panel.string>
- <panel.string name="can_change">
- Gekauftes Land in dieser Region kann zusammengelegt und
-geteilt werden.
- </panel.string>
- <panel.string name="can_not_change">
- Gekauftes Land in dieser Region kann nicht zusammengelegt
-und geteilt werden.
- </panel.string>
- <text name="estate_section_lbl">
- Grundstück:
- </text>
- <text name="estate_name_lbl">
- Name:
- </text>
- <text name="estate_name_text">
- Mainland
- </text>
- <text name="estate_owner_lbl">
- Eigentümer:
- </text>
- <text name="estate_owner_text">
- (keiner)
- </text>
- <text_editor name="covenant_editor">
- Für dieses Grundstück fehlt der Vertrag.
- </text_editor>
- <text name="covenant_timestamp_text">
- Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00
- </text>
- <text name="region_section_lbl">
- Region:
- </text>
- <text name="region_name_lbl">
- Name:
- </text>
- <text name="region_name_text">
- leyla
- </text>
- <text name="region_landtype_lbl">
- Typ:
- </text>
- <text name="region_landtype_text">
- Mainland / Homestead
- </text>
- <text name="region_maturity_lbl">
- Einstufung:
- </text>
- <text name="region_maturity_text">
- Adult
- </text>
- <text name="resellable_lbl">
- Wiederverkauf:
- </text>
- <text name="resellable_clause">
- Land in dieser Region kann nicht wiederverkauft werden.
- </text>
- <text name="changeable_lbl">
- Unterteilen:
- </text>
- <text name="changeable_clause">
- Land in dieser Region kann nicht zusammengelegt/geteilt
-werden.
- </text>
- </panel>
- <panel label="Objekte" name="land_objects_panel">
- <panel.string name="objects_available_text">
- [COUNT] von [MAX] ([AVAILABLE] verfügbar)
- </panel.string>
- <panel.string name="objects_deleted_text">
- [COUNT] von [MAX] ([DELETED] werden gelöscht)
- </panel.string>
- <text name="parcel_object_bonus">
- Objektbonusfaktor in Region: [BONUS]
- </text>
- <text name="Simulator primitive usage:">
- Primitive in Simulator:
- </text>
- <text name="objects_available">
- [COUNT] von [MAX] ([AVAILABLE] verfügbar)
- </text>
- <text name="Primitives parcel supports:" width="200">
- Von Parzelle unterstützte Primitiva:
- </text>
- <text left="204" name="object_contrib_text" width="152">
- [COUNT]
- </text>
- <text name="Primitives on parcel:">
- Primitiva auf Parzelle:
- </text>
- <text left="204" name="total_objects_text" width="48">
- [COUNT]
- </text>
- <text left="14" name="Owned by parcel owner:" width="200">
- Im Eigentum des Parzellenbesitzers:
- </text>
- <text left="204" name="owner_objects_text" width="48">
- [COUNT]
- </text>
- <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/>
- <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
- <text left="14" name="Set to group:">
- Der Gruppe zugeordnet:
- </text>
- <text left="204" name="group_objects_text" width="48">
- [COUNT]
- </text>
- <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/>
- <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
- <text left="14" name="Owned by others:" width="128">
- Im Eigentum anderer:
- </text>
- <text left="204" name="other_objects_text" width="48">
- [COUNT]
- </text>
- <button label="Anzeigen" label_selected="Anzeigen" name="ShowOther" right="-135" width="60"/>
- <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
- <text left="14" name="Selected / sat upon:" width="140">
- Ausgewählt/gesessen auf:
- </text>
- <text left="204" name="selected_objects_text" width="48">
- [COUNT]
- </text>
- <text left="4" name="Autoreturn" width="380">
- Objekte anderer Einwohner automatisch zurückgeben (Minuten, 0 für aus):
- </text>
- <line_editor name="clean other time" right="-10" width="56"/>
- <text name="Object Owners:">
- Objekteigentümer:
- </text>
- <button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List"/>
- <button label="Objekte zurückgeben..." label_selected="Objekte zurückgeben..." name="Return objects..."/>
- <name_list name="owner list">
- <name_list.columns label="Typ" name="type"/>
- <name_list.columns label="Name" name="name"/>
- <name_list.columns label="Zählen" name="count"/>
- <name_list.columns label="Aktuellster" name="mostrecent"/>
- </name_list>
- </panel>
- <panel label="Optionen" name="land_options_panel">
- <panel.string name="search_enabled_tooltip">
- Diese Parzelle in Suchergebnissen anzeigen.
- </panel.string>
- <panel.string name="search_disabled_small_tooltip">
- Diese Option ist nicht aktiviert, da diese Parzelle nicht größer als 128 qm ist.
-Nur große Parzellen können in der Suche aufgeführt werden.
- </panel.string>
- <panel.string name="search_disabled_permissions_tooltip">
- Diese Option ist nicht aktiviert, da Sie die Parzellenoptionen nicht verändern können.
- </panel.string>
- <panel.string name="mature_check_mature">
- Mature-Inhalt
- </panel.string>
- <panel.string name="mature_check_adult">
- Adult-Inhalt
- </panel.string>
- <panel.string name="mature_check_mature_tooltip">
- Die Informationen oder Inhalte Ihrer Parzelle sind „Mature“.
- </panel.string>
- <panel.string name="mature_check_adult_tooltip">
- Die Informationen oder Inhalte Ihrer Parzelle sind „Adult“.
- </panel.string>
- <panel.string name="landing_point_none">
- (keiner)
- </panel.string>
- <panel.string name="push_restrict_text">
- Kein Stoßen
- </panel.string>
- <panel.string name="push_restrict_region_text">
- Kein Stoßen (regional)
- </panel.string>
- <text name="allow_label">
- Anderen Einwohnern gestatten:
- </text>
- <check_box label="Terrain bearbeiten" name="edit land check" tool_tip="Falls aktiviert, kann jeder Ihr Land terraformen. Am besten ist es, wenn Sie diese Option deaktiviert lassen. Sie können Ihr eigenes Land jederzeit bearbeiten."/>
- <check_box label="Fliegen" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/>
- <text name="allow_label2">
- Objekte erstellen:
- </text>
- <check_box label="Alle Einwohner" name="edit objects check"/>
- <check_box label="Gruppe" name="edit group objects check"/>
- <text name="allow_label3">
- Objekteintritt:
- </text>
- <check_box label="Alle Einwohner" name="all object entry check"/>
- <check_box label="Gruppe" name="group object entry check"/>
- <text name="allow_label4">
- Skripts ausführen:
- </text>
- <check_box label="Alle Einwohner" name="check other scripts"/>
- <check_box label="Gruppe" name="check group scripts"/>
- <text name="land_options_label">
- Landoptionen:
- </text>
- <check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Falls nicht aktiviert, sind Kampfschäden aktiviert."/>
- <check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Skripte am Stoßen. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/>
- <check_box label="Ort in Suche anzeigen (30 L$/Woche) unter" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/>
- <combo_box name="land category with adult">
- <combo_box.item label="Alle Kategorien" name="item0"/>
- <combo_box.item label="Lindenort" name="item1"/>
- <combo_box.item label="Adult" name="item2"/>
- <combo_box.item label="Kunst &amp; Kultur" name="item3"/>
- <combo_box.item label="Business" name="item4"/>
- <combo_box.item label="Bildung" name="item5"/>
- <combo_box.item label="Spielen" name="item6"/>
- <combo_box.item label="Treffpunkt" name="item7"/>
- <combo_box.item label="Anfängergerecht" name="item8"/>
- <combo_box.item label="Parks und Natur" name="item9"/>
- <combo_box.item label="Wohngebiet" name="item10"/>
- <combo_box.item label="Shopping" name="item11"/>
- <combo_box.item label="Sonstige" name="item12"/>
- </combo_box>
- <combo_box left="266" name="land category" width="130">
- <combo_box.item label="Alle Kategorien" name="item0"/>
- <combo_box.item label="Lindenort" name="item1"/>
- <combo_box.item label="Kunst und Kultur" name="item3"/>
- <combo_box.item label="Business" name="item4"/>
- <combo_box.item label="Bildung" name="item5"/>
- <combo_box.item label="Spielen" name="item6"/>
- <combo_box.item label="Treffpunkt" name="item7"/>
- <combo_box.item label="Anfängergerecht" name="item8"/>
- <combo_box.item label="Parks und Natur" name="item9"/>
- <combo_box.item label="Wohngebiet" name="item10"/>
- <combo_box.item label="Shopping" name="item11"/>
- <combo_box.item label="Sonstige" name="item12"/>
- </combo_box>
- <check_box label="Mature-Inhalt" name="MatureCheck" tool_tip=""/>
- <text name="Snapshot:">
- Foto:
- </text>
- <texture_picker label="" name="snapshot_ctrl" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
- <text name="landing_point">
- Landepunkt: [LANDING]
- </text>
- <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/>
- <button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen." width="70"/>
- <text name="Teleport Routing: ">
- Teleport-Route:
- </text>
- <combo_box name="landing type" tool_tip="Teleport-Route -- festlegen, wie Teleports auf Ihrem Land gehandhabt werden sollen.">
- <combo_box.item label="Blockiert" name="Blocked"/>
- <combo_box.item label="Landepunkt" name="LandingPoint"/>
- <combo_box.item label="Überall" name="Anywhere"/>
- </combo_box>
- </panel>
- <panel label="Medien" name="land_media_panel">
- <text name="with media:">
- Typ:
- </text>
- <combo_box name="media type" tool_tip="Geben Sie einen URL für den Film, die Webseite oder ein anderes Medium ein"/>
- <text name="at URL:">
- Start URL:
- </text>
- <button label="Einstellen..." label_selected="Einstellen..." name="set_media_url"/>
- <text name="CurrentURL:">
- Aktuelle URL:
- </text>
- <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url"/>
- <check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/>
- <text name="Description:">
- Inhalt:
- </text>
- <line_editor name="url_description" tool_tip="Text, der neben der Abspielen/Laden-Schaltfläche angezeigt wird"/>
- <text name="Media texture:">
- Textur
-ersetzen:
- </text>
- <texture_picker label="" name="media texture" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
- <text name="replace_texture_help">
- Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken.
-
-Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
- </text>
- <check_box label="Automatisch skalieren" name="media_auto_scale" tool_tip="Aktivieren Sie diese Option, um den Inhalt für diese Parzelle automatisch zu skalieren. Dies ist eventuell langsamer und die Qualität ist schlechter, aber Sie müssen keine weitere Texturskalierung oder -anpassung vornehmen."/>
- <text name="media_size" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen.">
- Größe:
- </text>
- <spinner name="media_size_width" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen."/>
- <spinner name="media_size_height" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen."/>
- <text name="pixels">
- Pixel
- </text>
- <text name="Options:">
- Optionen:
- </text>
- <check_box label="Schleife" name="media_loop" tool_tip="Spielt das Medium in einer Schleife ab. Der Abspielvorgang wird immer wieder von vorne fortgesetzt."/>
- </panel>
- <panel label="Audio" name="land_audio_panel">
- <text name="MusicURL:">
- Musik-URL:
- </text>
- <text name="Sound:">
- Sound:
- </text>
- <check_box label="Gesten- und Objektgeräusche auf diese Parzelle beschränken" name="check sound local"/>
- <text name="Voice settings:">
- Voice:
- </text>
- <check_box label="Voice aktivieren" name="parcel_enable_voice_channel"/>
- <check_box label="Voice aktivieren (vom Grundstück eingerichtet)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/>
- </panel>
- <panel label="Zugang" name="land_access_panel">
- <panel.string name="estate_override">
- Eine oder mehrere dieser Optionen gelten auf Grundstücksebene
- </panel.string>
- <text name="Limit access to this parcel to:">
- Zugang zu dieser Parzelle
- </text>
- <check_box label="Freien Zugang erlauben" name="public_access"/>
- <text name="Only Allow">
- Zugang verweigern für:
- </text>
- <check_box label="Einwohner, die keine Zahlungsinformationen bei Linden Lab hinterlegt haben" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/>
- <check_box label="Einwohner, die keine altersgeprüften Erwachsenen sind" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
- <check_box label="Gruppenzugang erlauben: [GROUP]" name="GroupCheck" tool_tip="Gruppe im Register „Allgemein“ festlegen."/>
- <check_box label="Pässe verkaufen an:" name="PassCheck" tool_tip="Ermöglicht befristeten Zugang zu dieser Parzelle"/>
- <combo_box name="pass_combo">
- <combo_box.item label="Jeden" name="Anyone"/>
- <combo_box.item label="Gruppe" name="Group"/>
- </combo_box>
- <spinner label="Preis in L$:" name="PriceSpin"/>
- <spinner label="Online-Zeit:" name="HoursSpin"/>
- <text label="Immer erlauben" name="AllowedText">
- Zulässige Einwohner
- </text>
- <name_list name="AccessList" tool_tip="([LISTED] angezeigt, max. [MAX])"/>
- <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_allowed"/>
- <button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/>
- <text label="Verbannen" name="BanCheck">
- Verbannte Einwohner
- </text>
- <name_list name="BannedList" tool_tip="([LISTED] angezeigt, max. [MAX])"/>
- <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_banned"/>
- <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="LAND-INFO">
+ <floater.string name="Minutes">
+ [MINUTES] Minuten
+ </floater.string>
+ <floater.string name="Minute">
+ Minute
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] Sekunden
+ </floater.string>
+ <tab_container name="landtab">
+ <panel label="Allgemein" name="land_general_panel">
+ <panel.string name="new users only">
+ Nur neue Benutzer
+ </panel.string>
+ <panel.string name="anyone">
+ Jeder
+ </panel.string>
+ <panel.string name="area_text">
+ Gebiet:
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] qm.
+ </panel.string>
+ <panel.string name="auction_id_text">
+ Auktions-ID: [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ Bestätigen Sie den Kauf, um dieses Land zu bearbeiten.
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (In Gruppenbesitz)
+ </panel.string>
+ <panel.string name="profile_text">
+ Profil...
+ </panel.string>
+ <panel.string name="info_text">
+ Info...
+ </panel.string>
+ <panel.string name="public_text">
+ (öffentlich)
+ </panel.string>
+ <panel.string name="none_text">
+ (keiner)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (Wird verkauft)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ Keine Parzelle ausgewählt.
+Öffnen Sie „Welt“ &gt; „Land-Info“ oder wählen Sie eine andere Parzelle aus, um Informationen darüber anzuzeigen.
+ </panel.string>
+ <text name="Name:">
+ Name:
+ </text>
+ <text name="Description:">
+ Beschreibung:
+ </text>
+ <text name="LandType">
+ Typ:
+ </text>
+ <text name="LandTypeText">
+ Mainland / Homestead
+ </text>
+ <text name="ContentRating">
+ Einstufung:
+ </text>
+ <text name="ContentRatingText">
+ Adult
+ </text>
+ <text name="Owner:">
+ Eigentümer:
+ </text>
+ <text name="OwnerText">
+ Leyla Linden
+ </text>
+ <button label="Profil..." label_selected="Profil..." name="Profile..."/>
+ <text name="Group:">
+ Gruppe:
+ </text>
+ <button label="Einstellen..." label_selected="Einstellen..." name="Set..."/>
+ <check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>
+ <button label="Übertragen..." label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
+ <check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/>
+ <text name="For Sale:">
+ Zum Verkauf:
+ </text>
+ <text name="Not for sale.">
+ Nicht zu verkaufen.
+ </text>
+ <text name="For Sale: Price L$[PRICE].">
+ Preis: [PRICE] L$ ([PRICE_PER_SQM] L$/qm.).
+ </text>
+ <text name="SalePending"/>
+ <button bottom="-222" label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..."/>
+ <text name="For sale to">
+ Zum Verkauf an: [BUYER]
+ </text>
+ <text name="Sell with landowners objects in parcel." width="210">
+ Objekte sind im Verkauf eingeschlossen.
+ </text>
+ <text name="Selling with no objects in parcel." width="237">
+ Objekte sind im Verkauf nicht eingeschlossen.
+ </text>
+ <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/>
+ <text name="Claimed:">
+ Gekauft am:
+ </text>
+ <text name="DateClaimText">
+ Dienstag, 15. Aug. 2006, 13:47:25
+ </text>
+ <text name="PriceLabel">
+ Gebiet:
+ </text>
+ <text name="PriceText">
+ 4048 qm.
+ </text>
+ <text name="Traffic:">
+ Traffic:
+ </text>
+ <text name="DwellText">
+ 0
+ </text>
+ <button label="Land kaufen..." label_selected="Land kaufen..." name="Buy Land..."/>
+ <button label="Für Gruppe kaufen..." label_selected="Für Gruppe kaufen..." name="Buy For Group..."/>
+ <button label="Pass kaufen..." label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/>
+ <button label="Land aufgeben..." label_selected="Land aufgeben..." name="Abandon Land..."/>
+ <button label="Land in Besitz nehmen..." label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/>
+ <button label="Linden-Verkauf..." label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
+ </panel>
+ <panel label="Vertrag" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ Gekauftes Land in dieser Region kann wiederverkauft werden.
+ </panel.string>
+ <panel.string name="can_not_resell">
+ Gekauftes Land in dieser Region kann nicht wiederverkauft werden.
+ </panel.string>
+ <panel.string name="can_change">
+ Gekauftes Land in dieser Region kann zusammengelegt und
+geteilt werden.
+ </panel.string>
+ <panel.string name="can_not_change">
+ Gekauftes Land in dieser Region kann nicht zusammengelegt
+und geteilt werden.
+ </panel.string>
+ <text name="estate_section_lbl">
+ Grundstück:
+ </text>
+ <text name="estate_name_lbl">
+ Name:
+ </text>
+ <text name="estate_name_text">
+ Mainland
+ </text>
+ <text name="estate_owner_lbl">
+ Eigentümer:
+ </text>
+ <text name="estate_owner_text">
+ (keiner)
+ </text>
+ <text_editor name="covenant_editor">
+ Für dieses Grundstück fehlt der Vertrag.
+ </text_editor>
+ <text name="covenant_timestamp_text">
+ Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00
+ </text>
+ <text name="region_section_lbl">
+ Region:
+ </text>
+ <text name="region_name_lbl">
+ Name:
+ </text>
+ <text name="region_name_text">
+ leyla
+ </text>
+ <text name="region_landtype_lbl">
+ Typ:
+ </text>
+ <text name="region_landtype_text">
+ Mainland / Homestead
+ </text>
+ <text name="region_maturity_lbl">
+ Einstufung:
+ </text>
+ <text name="region_maturity_text">
+ Adult
+ </text>
+ <text name="resellable_lbl">
+ Wiederverkauf:
+ </text>
+ <text name="resellable_clause">
+ Land in dieser Region kann nicht wiederverkauft werden.
+ </text>
+ <text name="changeable_lbl">
+ Unterteilen:
+ </text>
+ <text name="changeable_clause">
+ Land in dieser Region kann nicht zusammengelegt/geteilt
+werden.
+ </text>
+ </panel>
+ <panel label="Objekte" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] von [MAX] ([AVAILABLE] verfügbar)
+ </panel.string>
+ <panel.string name="objects_deleted_text">
+ [COUNT] von [MAX] ([DELETED] werden gelöscht)
+ </panel.string>
+ <text name="parcel_object_bonus">
+ Objektbonusfaktor in Region: [BONUS]
+ </text>
+ <text name="Simulator primitive usage:">
+ Primitive in Simulator:
+ </text>
+ <text name="objects_available">
+ [COUNT] von [MAX] ([AVAILABLE] verfügbar)
+ </text>
+ <text name="Primitives parcel supports:" width="200">
+ Von Parzelle unterstützte Primitiva:
+ </text>
+ <text left="204" name="object_contrib_text" width="152">
+ [COUNT]
+ </text>
+ <text name="Primitives on parcel:">
+ Primitiva auf Parzelle:
+ </text>
+ <text left="204" name="total_objects_text" width="48">
+ [COUNT]
+ </text>
+ <text left="14" name="Owned by parcel owner:" width="200">
+ Im Eigentum des Parzellenbesitzers:
+ </text>
+ <text left="204" name="owner_objects_text" width="48">
+ [COUNT]
+ </text>
+ <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/>
+ <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
+ <text left="14" name="Set to group:">
+ Der Gruppe zugeordnet:
+ </text>
+ <text left="204" name="group_objects_text" width="48">
+ [COUNT]
+ </text>
+ <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/>
+ <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
+ <text left="14" name="Owned by others:" width="128">
+ Im Eigentum anderer:
+ </text>
+ <text left="204" name="other_objects_text" width="48">
+ [COUNT]
+ </text>
+ <button label="Anzeigen" label_selected="Anzeigen" name="ShowOther" right="-135" width="60"/>
+ <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/>
+ <text left="14" name="Selected / sat upon:" width="140">
+ Ausgewählt/gesessen auf:
+ </text>
+ <text left="204" name="selected_objects_text" width="48">
+ [COUNT]
+ </text>
+ <text left="4" name="Autoreturn" width="380">
+ Objekte anderer Einwohner automatisch zurückgeben (Minuten, 0 für aus):
+ </text>
+ <line_editor name="clean other time" right="-10" width="56"/>
+ <text name="Object Owners:">
+ Objekteigentümer:
+ </text>
+ <button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List"/>
+ <button label="Objekte zurückgeben..." label_selected="Objekte zurückgeben..." name="Return objects..."/>
+ <name_list name="owner list">
+ <name_list.columns label="Typ" name="type"/>
+ <name_list.columns label="Name" name="name"/>
+ <name_list.columns label="Zählen" name="count"/>
+ <name_list.columns label="Aktuellster" name="mostrecent"/>
+ </name_list>
+ </panel>
+ <panel label="Optionen" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ Diese Parzelle in Suchergebnissen anzeigen.
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ Diese Option ist nicht aktiviert, da diese Parzelle nicht größer als 128 qm ist.
+Nur große Parzellen können in der Suche aufgeführt werden.
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ Diese Option ist nicht aktiviert, da Sie die Parzellenoptionen nicht verändern können.
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Mature-Inhalt
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Adult-Inhalt
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ Die Informationen oder Inhalte Ihrer Parzelle sind „Mature“.
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ Die Informationen oder Inhalte Ihrer Parzelle sind „Adult“.
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (keiner)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ Kein Stoßen
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ Kein Stoßen (regional)
+ </panel.string>
+ <text name="allow_label">
+ Anderen Einwohnern gestatten:
+ </text>
+ <check_box label="Terrain bearbeiten" name="edit land check" tool_tip="Falls aktiviert, kann jeder Ihr Land terraformen. Am besten ist es, wenn Sie diese Option deaktiviert lassen. Sie können Ihr eigenes Land jederzeit bearbeiten."/>
+ <check_box label="Fliegen" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/>
+ <text name="allow_label2">
+ Objekte erstellen:
+ </text>
+ <check_box label="Alle Einwohner" name="edit objects check"/>
+ <check_box label="Gruppe" name="edit group objects check"/>
+ <text name="allow_label3">
+ Objekteintritt:
+ </text>
+ <check_box label="Alle Einwohner" name="all object entry check"/>
+ <check_box label="Gruppe" name="group object entry check"/>
+ <text name="allow_label4">
+ Skripts ausführen:
+ </text>
+ <check_box label="Alle Einwohner" name="check other scripts"/>
+ <check_box label="Gruppe" name="check group scripts"/>
+ <text name="land_options_label">
+ Landoptionen:
+ </text>
+ <check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Falls nicht aktiviert, sind Kampfschäden aktiviert."/>
+ <check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Skripte am Stoßen. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/>
+ <check_box label="Ort in Suche anzeigen (30 L$/Woche) unter" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/>
+ <combo_box name="land category with adult">
+ <combo_box.item label="Alle Kategorien" name="item0"/>
+ <combo_box.item label="Lindenort" name="item1"/>
+ <combo_box.item label="Adult" name="item2"/>
+ <combo_box.item label="Kunst &amp; Kultur" name="item3"/>
+ <combo_box.item label="Business" name="item4"/>
+ <combo_box.item label="Bildung" name="item5"/>
+ <combo_box.item label="Spielen" name="item6"/>
+ <combo_box.item label="Treffpunkt" name="item7"/>
+ <combo_box.item label="Anfängergerecht" name="item8"/>
+ <combo_box.item label="Parks und Natur" name="item9"/>
+ <combo_box.item label="Wohngebiet" name="item10"/>
+ <combo_box.item label="Shopping" name="item11"/>
+ <combo_box.item label="Sonstige" name="item12"/>
+ </combo_box>
+ <combo_box left="266" name="land category" width="130">
+ <combo_box.item label="Alle Kategorien" name="item0"/>
+ <combo_box.item label="Lindenort" name="item1"/>
+ <combo_box.item label="Kunst und Kultur" name="item3"/>
+ <combo_box.item label="Business" name="item4"/>
+ <combo_box.item label="Bildung" name="item5"/>
+ <combo_box.item label="Spielen" name="item6"/>
+ <combo_box.item label="Treffpunkt" name="item7"/>
+ <combo_box.item label="Anfängergerecht" name="item8"/>
+ <combo_box.item label="Parks und Natur" name="item9"/>
+ <combo_box.item label="Wohngebiet" name="item10"/>
+ <combo_box.item label="Shopping" name="item11"/>
+ <combo_box.item label="Sonstige" name="item12"/>
+ </combo_box>
+ <check_box label="Mature-Inhalt" name="MatureCheck" tool_tip=""/>
+ <text name="Snapshot:">
+ Foto:
+ </text>
+ <texture_picker label="" name="snapshot_ctrl" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
+ <text name="landing_point">
+ Landepunkt: [LANDING]
+ </text>
+ <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/>
+ <button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen." width="70"/>
+ <text name="Teleport Routing: ">
+ Teleport-Route:
+ </text>
+ <combo_box name="landing type" tool_tip="Teleport-Route -- festlegen, wie Teleports auf Ihrem Land gehandhabt werden sollen.">
+ <combo_box.item label="Blockiert" name="Blocked"/>
+ <combo_box.item label="Landepunkt" name="LandingPoint"/>
+ <combo_box.item label="Überall" name="Anywhere"/>
+ </combo_box>
+ </panel>
+ <panel label="Medien" name="land_media_panel">
+ <text name="with media:">
+ Typ:
+ </text>
+ <combo_box name="media type" tool_tip="Geben Sie einen URL für den Film, die Webseite oder ein anderes Medium ein"/>
+ <text name="at URL:">
+ Start URL:
+ </text>
+ <button label="Einstellen..." label_selected="Einstellen..." name="set_media_url"/>
+ <text name="CurrentURL:">
+ Aktuelle URL:
+ </text>
+ <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url"/>
+ <check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/>
+ <text name="Description:">
+ Inhalt:
+ </text>
+ <line_editor name="url_description" tool_tip="Text, der neben der Abspielen/Laden-Schaltfläche angezeigt wird"/>
+ <text name="Media texture:">
+ Textur
+ersetzen:
+ </text>
+ <texture_picker label="" name="media texture" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
+ <text name="replace_texture_help">
+ Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken.
+
+Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen.
+ </text>
+ <check_box label="Automatisch skalieren" name="media_auto_scale" tool_tip="Aktivieren Sie diese Option, um den Inhalt für diese Parzelle automatisch zu skalieren. Dies ist eventuell langsamer und die Qualität ist schlechter, aber Sie müssen keine weitere Texturskalierung oder -anpassung vornehmen."/>
+ <text name="media_size" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen.">
+ Größe:
+ </text>
+ <spinner name="media_size_width" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen."/>
+ <spinner name="media_size_height" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen."/>
+ <text name="pixels">
+ Pixel
+ </text>
+ <text name="Options:">
+ Optionen:
+ </text>
+ <check_box label="Schleife" name="media_loop" tool_tip="Spielt das Medium in einer Schleife ab. Der Abspielvorgang wird immer wieder von vorne fortgesetzt."/>
+ </panel>
+ <panel label="Audio" name="land_audio_panel">
+ <text name="MusicURL:">
+ Musik-URL:
+ </text>
+ <text name="Sound:">
+ Sound:
+ </text>
+ <check_box label="Gesten- und Objektgeräusche auf diese Parzelle beschränken" name="check sound local"/>
+ <text name="Voice settings:">
+ Voice:
+ </text>
+ <check_box label="Voice aktivieren" name="parcel_enable_voice_channel"/>
+ <check_box label="Voice aktivieren (vom Grundstück eingerichtet)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+ <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/>
+ </panel>
+ <panel label="Zugang" name="land_access_panel">
+ <panel.string name="estate_override">
+ Eine oder mehrere dieser Optionen gelten auf Grundstücksebene
+ </panel.string>
+ <text name="Limit access to this parcel to:">
+ Zugang zu dieser Parzelle
+ </text>
+ <check_box label="Freien Zugang erlauben" name="public_access"/>
+ <text name="Only Allow">
+ Zugang verweigern für:
+ </text>
+ <check_box label="Einwohner, die keine Zahlungsinformationen bei Linden Lab hinterlegt haben" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/>
+ <check_box label="Einwohner, die keine altersgeprüften Erwachsenen sind" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/>
+ <check_box label="Gruppenzugang erlauben: [GROUP]" name="GroupCheck" tool_tip="Gruppe im Register „Allgemein“ festlegen."/>
+ <check_box label="Pässe verkaufen an:" name="PassCheck" tool_tip="Ermöglicht befristeten Zugang zu dieser Parzelle"/>
+ <combo_box name="pass_combo">
+ <combo_box.item label="Jeden" name="Anyone"/>
+ <combo_box.item label="Gruppe" name="Group"/>
+ </combo_box>
+ <spinner label="Preis in L$:" name="PriceSpin"/>
+ <spinner label="Online-Zeit:" name="HoursSpin"/>
+ <text label="Immer erlauben" name="AllowedText">
+ Zulässige Einwohner
+ </text>
+ <name_list name="AccessList" tool_tip="([LISTED] angezeigt, max. [MAX])"/>
+ <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_allowed"/>
+ <button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/>
+ <text label="Verbannen" name="BanCheck">
+ Verbannte Einwohner
+ </text>
+ <name_list name="BannedList" tool_tip="([LISTED] angezeigt, max. [MAX])"/>
+ <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_banned"/>
+ <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_animation_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
index 0d56f1ef9f..33ce72855b 100644
--- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
@@ -1,184 +1,184 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Animation Preview" title="">
- <floater.string name="failed_to_initialize">
- Bewegung konnte nicht initialisiert werden
- </floater.string>
- <floater.string name="anim_too_long">
- Animationsdatei ist [LENGTH] Sekunden lang.
-
-Maximal erlaubt sind [MAX_LENGTH] Sekunden.
- </floater.string>
- <floater.string name="failed_file_read">
- Animationsdatei konnte nicht gelesen werden.
-
-[STATUS]
- </floater.string>
- <floater.string name="E_ST_OK">
- OK
- </floater.string>
- <floater.string name="E_ST_EOF">
- Unvollständige Datei
- </floater.string>
- <floater.string name="E_ST_NO_CONSTRAINT">
- Constraint-Definition kann nicht gelesen werden.
- </floater.string>
- <floater.string name="E_ST_NO_FILE">
- BVH-Datei kann nicht geöffnet werden
- </floater.string>
- <floater.string name="E_ST_NO_HIER">
- Ungültiger HIERARCHY-Titel.
- </floater.string>
- <floater.string name="E_ST_NO_JOINT">
- ROOT oder JOINT nicht gefunden.
- </floater.string>
- <floater.string name="E_ST_NO_NAME">
- JOINT-Name nicht erfasst.
- </floater.string>
- <floater.string name="E_ST_NO_OFFSET">
- VERSATZ nicht gefunden.
- </floater.string>
- <floater.string name="E_ST_NO_CHANNELS">
- CHANNELS nicht gefunden.
- </floater.string>
- <floater.string name="E_ST_NO_ROTATION">
- Kann Rotations-Reihenfolge nicht erfassen.
- </floater.string>
- <floater.string name="E_ST_NO_AXIS">
- Kann Rotations-Achse nicht erfassen.
- </floater.string>
- <floater.string name="E_ST_NO_MOTION">
- MOTION nicht gefunden.
- </floater.string>
- <floater.string name="E_ST_NO_FRAMES">
- Anzahl der Bilder kann nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_FRAME_TIME">
- Bildzeit kann nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_POS">
- Positions-Werte können nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_ROT">
- Kann Rotations-Werte nicht erfassen.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_FILE">
- Datei kann nicht geöffnet werden
- </floater.string>
- <floater.string name="E_ST_NO_XLT_HEADER">
- Übersetzungstitel kann nicht gelesen werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_NAME">
- Übersetzungsnamen können nicht geladen werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_IGNORE">
- Ignorier-Wert kann nicht gelesen werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_RELATIVE">
- Übersetzungs-Wert kann nicht gelesen werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_OUTNAME">
- Outname-Wert kann nicht gelesen werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MATRIX">
- Übersetzungsmatrix kann nicht geladen werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MERGECHILD">
- Mergechild-Name nicht erfasst.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MERGEPARENT">
- Mergeparent-Name nicht erfasst.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_PRIORITY">
- Prioritätswert kann nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_LOOP">
- Loop-Wert kann nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EASEIN">
- Easeln-Wert kann nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EASEOUT">
- easeOut-Wert kann nicht erfasst werden.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_HAND">
- Hand-Morph-Wert nicht erfasst.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EMOTE">
- Emote-Name kann nicht gelesen werden.
- </floater.string>
- <text name="name_label">
- Name:
- </text>
- <line_editor name="name_form"/>
- <text name="description_label">
- Beschreibung:
- </text>
- <spinner label="Priorität" name="priority" tool_tip="Steuert, welche Animationen von dieser Animation überschrieben werden können."/>
- <check_box bottom_delta="-18" label="Schleife" name="loop_check" tool_tip="Erzeugt eine Animationsschleife."/>
- <spinner label="In (%)" name="loop_in_point" tool_tip="Anfang einer Animationsschleife festlegen."/>
- <spinner label="Aus (%)" name="loop_out_point" tool_tip="Ende einer Animationsschleife festlegen."/>
- <text name="hand_label">
- Handhaltung
- </text>
- <combo_box label="" name="hand_pose_combo" tool_tip="Steuert während der Animation die Bewegung der Hände.">
- <combo_box.item label="Dehnen" name="Spread"/>
- <combo_box.item label="Entspannt" name="Relaxed"/>
- <combo_box.item label="Beide zeigen" name="PointBoth"/>
- <combo_box.item label="Faust" name="Fist"/>
- <combo_box.item label="Links entspannt" name="RelaxedLeft"/>
- <combo_box.item label="Nach links zeigen" name="PointLeft"/>
- <combo_box.item label="Linke Faust" name="FistLeft"/>
- <combo_box.item label="Rechts entspannt" name="RelaxedRight"/>
- <combo_box.item label="Nach rechts zeigen" name="PointRight"/>
- <combo_box.item label="Rechte Faust" name="FistRight"/>
- <combo_box.item label="Rechts salutieren" name="SaluteRight"/>
- <combo_box.item label="Tippt" name="Typing"/>
- <combo_box.item label="Friedensrecht" name="PeaceRight"/>
- </combo_box>
- <text name="emote_label">
- Ausdruck
- </text>
- <combo_box label="" name="emote_combo" tool_tip="Steuert Gesichtsregungen während der Animation.">
- <combo_box.item label="Keine]" name="[None]"/>
- <combo_box.item label="Aaaaah" name="Aaaaah"/>
- <combo_box.item label="Ängstlich" name="Afraid"/>
- <combo_box.item label="Verärgert" name="Angry"/>
- <combo_box.item label="Grinst" name="BigSmile"/>
- <combo_box.item label="Gelangweilt" name="Bored"/>
- <combo_box.item label="Weinen" name="Cry"/>
- <combo_box.item label="Verachten" name="Disdain"/>
- <combo_box.item label="Verlegen" name="Embarrassed"/>
- <combo_box.item label="Stirnrunzeln" name="Frown"/>
- <combo_box.item label="Küssen" name="Kiss"/>
- <combo_box.item label="Lachen" name="Laugh"/>
- <combo_box.item label="Bäääh" name="Plllppt"/>
- <combo_box.item label="Zurückgestoßen" name="Repulsed"/>
- <combo_box.item label="Traurig" name="Sad"/>
- <combo_box.item label="Schulterzucken" name="Shrug"/>
- <combo_box.item label="Lächeln" name="Smile"/>
- <combo_box.item label="Überraschung" name="Surprise"/>
- <combo_box.item label="Zwinkern" name="Wink"/>
- <combo_box.item label="Sorgenvoll" name="Worry"/>
- </combo_box>
- <text name="preview_label" width="97">
- Vorschau während:
- </text>
- <combo_box label="" left_delta="107" name="preview_base_anim" tool_tip="Hiermit können Sie das Verhalten Ihres Avatars testen, während Ihr Avatar normale Bewegungen ausführt.">
- <combo_box.item label="Stehend" name="Standing"/>
- <combo_box.item label="Geht" name="Walking"/>
- <combo_box.item label="Sitzt" name="Sitting"/>
- <combo_box.item label="Fliegend" name="Flying"/>
- </combo_box>
- <spinner label="Eingang glätten (s)" label_width="105" name="ease_in_time" tool_tip="Einblendungsgeschwindigkeit von Animationen (in Sekunden)." width="175"/>
- <spinner bottom_delta="-20" label="Ausgang glätten (s)" label_width="105" left="10" name="ease_out_time" tool_tip="Ausblendungsgeschwindigkeit von Animationen (in Sekunden)." width="175"/>
- <button bottom_delta="-32" label="" name="play_btn" tool_tip="Animation stoppen/wiedergeben."/>
- <button label="" name="stop_btn" tool_tip="Animation anhalten"/>
- <slider label="" name="playback_slider"/>
- <text name="bad_animation_text">
- Animationsdatei konnte nicht gelesen werden.
-
-Wir empfehlen exportierte BVH-Dateien aus Poser 4.
- </text>
- <button label="Abbrechen" name="cancel_btn"/>
- <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview" title="">
+ <floater.string name="failed_to_initialize">
+ Bewegung konnte nicht initialisiert werden
+ </floater.string>
+ <floater.string name="anim_too_long">
+ Animationsdatei ist [LENGTH] Sekunden lang.
+
+Maximal erlaubt sind [MAX_LENGTH] Sekunden.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ Animationsdatei konnte nicht gelesen werden.
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ OK
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Unvollständige Datei
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ Constraint-Definition kann nicht gelesen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ BVH-Datei kann nicht geöffnet werden
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ Ungültiger HIERARCHY-Titel.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ ROOT oder JOINT nicht gefunden.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ JOINT-Name nicht erfasst.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ VERSATZ nicht gefunden.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ CHANNELS nicht gefunden.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ Kann Rotations-Reihenfolge nicht erfassen.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ Kann Rotations-Achse nicht erfassen.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ MOTION nicht gefunden.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ Anzahl der Bilder kann nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ Bildzeit kann nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ Positions-Werte können nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ Kann Rotations-Werte nicht erfassen.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ Datei kann nicht geöffnet werden
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Übersetzungstitel kann nicht gelesen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Übersetzungsnamen können nicht geladen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Ignorier-Wert kann nicht gelesen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Übersetzungs-Wert kann nicht gelesen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Outname-Wert kann nicht gelesen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Übersetzungsmatrix kann nicht geladen werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Mergechild-Name nicht erfasst.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Mergeparent-Name nicht erfasst.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ Prioritätswert kann nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ Loop-Wert kann nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ Easeln-Wert kann nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ easeOut-Wert kann nicht erfasst werden.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ Hand-Morph-Wert nicht erfasst.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ Emote-Name kann nicht gelesen werden.
+ </floater.string>
+ <text name="name_label">
+ Name:
+ </text>
+ <line_editor name="name_form"/>
+ <text name="description_label">
+ Beschreibung:
+ </text>
+ <spinner label="Priorität" name="priority" tool_tip="Steuert, welche Animationen von dieser Animation überschrieben werden können."/>
+ <check_box bottom_delta="-18" label="Schleife" name="loop_check" tool_tip="Erzeugt eine Animationsschleife."/>
+ <spinner label="In (%)" name="loop_in_point" tool_tip="Anfang einer Animationsschleife festlegen."/>
+ <spinner label="Aus (%)" name="loop_out_point" tool_tip="Ende einer Animationsschleife festlegen."/>
+ <text name="hand_label">
+ Handhaltung
+ </text>
+ <combo_box label="" name="hand_pose_combo" tool_tip="Steuert während der Animation die Bewegung der Hände.">
+ <combo_box.item label="Dehnen" name="Spread"/>
+ <combo_box.item label="Entspannt" name="Relaxed"/>
+ <combo_box.item label="Beide zeigen" name="PointBoth"/>
+ <combo_box.item label="Faust" name="Fist"/>
+ <combo_box.item label="Links entspannt" name="RelaxedLeft"/>
+ <combo_box.item label="Nach links zeigen" name="PointLeft"/>
+ <combo_box.item label="Linke Faust" name="FistLeft"/>
+ <combo_box.item label="Rechts entspannt" name="RelaxedRight"/>
+ <combo_box.item label="Nach rechts zeigen" name="PointRight"/>
+ <combo_box.item label="Rechte Faust" name="FistRight"/>
+ <combo_box.item label="Rechts salutieren" name="SaluteRight"/>
+ <combo_box.item label="Tippt" name="Typing"/>
+ <combo_box.item label="Friedensrecht" name="PeaceRight"/>
+ </combo_box>
+ <text name="emote_label">
+ Ausdruck
+ </text>
+ <combo_box label="" name="emote_combo" tool_tip="Steuert Gesichtsregungen während der Animation.">
+ <combo_box.item label="Keine]" name="[None]"/>
+ <combo_box.item label="Aaaaah" name="Aaaaah"/>
+ <combo_box.item label="Ängstlich" name="Afraid"/>
+ <combo_box.item label="Verärgert" name="Angry"/>
+ <combo_box.item label="Grinst" name="BigSmile"/>
+ <combo_box.item label="Gelangweilt" name="Bored"/>
+ <combo_box.item label="Weinen" name="Cry"/>
+ <combo_box.item label="Verachten" name="Disdain"/>
+ <combo_box.item label="Verlegen" name="Embarrassed"/>
+ <combo_box.item label="Stirnrunzeln" name="Frown"/>
+ <combo_box.item label="Küssen" name="Kiss"/>
+ <combo_box.item label="Lachen" name="Laugh"/>
+ <combo_box.item label="Bäääh" name="Plllppt"/>
+ <combo_box.item label="Zurückgestoßen" name="Repulsed"/>
+ <combo_box.item label="Traurig" name="Sad"/>
+ <combo_box.item label="Schulterzucken" name="Shrug"/>
+ <combo_box.item label="Lächeln" name="Smile"/>
+ <combo_box.item label="Überraschung" name="Surprise"/>
+ <combo_box.item label="Zwinkern" name="Wink"/>
+ <combo_box.item label="Sorgenvoll" name="Worry"/>
+ </combo_box>
+ <text name="preview_label" width="97">
+ Vorschau während:
+ </text>
+ <combo_box label="" left_delta="107" name="preview_base_anim" tool_tip="Hiermit können Sie das Verhalten Ihres Avatars testen, während Ihr Avatar normale Bewegungen ausführt.">
+ <combo_box.item label="Stehend" name="Standing"/>
+ <combo_box.item label="Geht" name="Walking"/>
+ <combo_box.item label="Sitzt" name="Sitting"/>
+ <combo_box.item label="Fliegend" name="Flying"/>
+ </combo_box>
+ <spinner label="Eingang glätten (s)" label_width="105" name="ease_in_time" tool_tip="Einblendungsgeschwindigkeit von Animationen (in Sekunden)." width="175"/>
+ <spinner bottom_delta="-20" label="Ausgang glätten (s)" label_width="105" left="10" name="ease_out_time" tool_tip="Ausblendungsgeschwindigkeit von Animationen (in Sekunden)." width="175"/>
+ <button bottom_delta="-32" label="" name="play_btn" tool_tip="Animation stoppen/wiedergeben."/>
+ <button label="" name="stop_btn" tool_tip="Animation anhalten"/>
+ <slider label="" name="playback_slider"/>
+ <text name="bad_animation_text">
+ Animationsdatei konnte nicht gelesen werden.
+
+Wir empfehlen exportierte BVH-Dateien aus Poser 4.
+ </text>
+ <button label="Abbrechen" name="cancel_btn"/>
+ <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
index b95b6febd9..a188a9fd9e 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatarpicker" title="EINWOHNER AUSWÄHLEN">
- <tab_container name="ResidentChooserTabs">
- <panel label="Suchen" name="SearchPanel">
- <text name="InstructSearchResidentName">
- Geben Sie einen Teil des Namens einer Person ein:
- </text>
- <line_editor bottom_delta="-36" name="Edit"/>
- <button label="Los" label_selected="Los" name="Find"/>
- <scroll_list bottom_delta="-79" height="74" name="SearchResults"/>
- </panel>
- <panel label="Visitenkarten" name="CallingCardsPanel">
- <text name="InstructSelectCallingCard">
- Wählen Sie eine Visitenkarte:
- </text>
- </panel>
- <panel label="In meiner Nähe" name="NearMePanel">
- <text name="InstructSelectResident">
- Wählen Sie eine Person aus, die sich in der Nähe befindet:
- </text>
- <button font="SansSerifSmall" label="Liste aktualisieren" label_selected="Liste aktualisieren" left_delta="10" name="Refresh" width="105"/>
- <slider bottom_delta="-36" label="Bereich" name="near_me_range"/>
- <text name="meters">
- Meter
- </text>
- <scroll_list bottom_delta="-169" height="159" name="NearMe"/>
- </panel>
- </tab_container>
- <button label="OK" label_selected="OK" name="Select"/>
- <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
- <string name="not_found">
- „[TEXT]“ nicht gefunden
- </string>
- <string name="no_one_near">
- Niemand in der Nähe
- </string>
- <string name="no_results">
- Keine Ergebnisse
- </string>
- <string name="searching">
- Suchen...
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatarpicker" title="EINWOHNER AUSWÄHLEN">
+ <tab_container name="ResidentChooserTabs">
+ <panel label="Suchen" name="SearchPanel">
+ <text name="InstructSearchResidentName">
+ Geben Sie einen Teil des Namens einer Person ein:
+ </text>
+ <line_editor bottom_delta="-36" name="Edit"/>
+ <button label="Los" label_selected="Los" name="Find"/>
+ <scroll_list bottom_delta="-79" height="74" name="SearchResults"/>
+ </panel>
+ <panel label="Visitenkarten" name="CallingCardsPanel">
+ <text name="InstructSelectCallingCard">
+ Wählen Sie eine Visitenkarte:
+ </text>
+ </panel>
+ <panel label="In meiner Nähe" name="NearMePanel">
+ <text name="InstructSelectResident">
+ Wählen Sie eine Person aus, die sich in der Nähe befindet:
+ </text>
+ <button font="SansSerifSmall" label="Liste aktualisieren" label_selected="Liste aktualisieren" left_delta="10" name="Refresh" width="105"/>
+ <slider bottom_delta="-36" label="Bereich" name="near_me_range"/>
+ <text name="meters">
+ Meter
+ </text>
+ <scroll_list bottom_delta="-169" height="159" name="NearMe"/>
+ </panel>
+ </tab_container>
+ <button label="OK" label_selected="OK" name="Select"/>
+ <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
+ <string name="not_found">
+ „[TEXT]“ nicht gefunden
+ </string>
+ <string name="no_one_near">
+ Niemand in der Nähe
+ </string>
+ <string name="no_results">
+ Keine Ergebnisse
+ </string>
+ <string name="searching">
+ Suchen...
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_beacons.xml b/indra/newview/skins/default/xui/de/floater_beacons.xml
index bfa3f6e4c9..f407ba6122 100644
--- a/indra/newview/skins/default/xui/de/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/de/floater_beacons.xml
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="BEACONS">
- <panel name="beacons_panel">
- <text name="label_show">
- Anzeigen:
- </text>
- <check_box label="Beacons" name="beacons"/>
- <check_box label="Glanzlichter" name="highlights"/>
- <text name="beacon_width_label" tool_tip="Beacon-Breite">
- Breite:
- </text>
- <text name="label_objects">
- Für diese Objekte:
- </text>
- <check_box label="Physisch" name="physical"/>
- <check_box label="Skriptobjekte" name="scripted"/>
- <check_box label="Nur berühren" name="touch_only"/>
- <check_box label="Soundquellen" name="sounds"/>
- <check_box label="Partikelquellen" name="particles"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="BEACONS">
+ <panel name="beacons_panel">
+ <text name="label_show">
+ Anzeigen:
+ </text>
+ <check_box label="Beacons" name="beacons"/>
+ <check_box label="Glanzlichter" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="Beacon-Breite">
+ Breite:
+ </text>
+ <text name="label_objects">
+ Für diese Objekte:
+ </text>
+ <check_box label="Physisch" name="physical"/>
+ <check_box label="Skriptobjekte" name="scripted"/>
+ <check_box label="Nur berühren" name="touch_only"/>
+ <check_box label="Soundquellen" name="sounds"/>
+ <check_box label="Partikelquellen" name="particles"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_build_options.xml b/indra/newview/skins/default/xui/de/floater_build_options.xml
index 2f510cd75a..932ea160a9 100644
--- a/indra/newview/skins/default/xui/de/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/de/floater_build_options.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="RASTEROPTIONEN">
- <spinner label="Rastereinheit (Meter)" name="GridResolution"/>
- <spinner label="Rastergröße (Meter)" name="GridDrawSize"/>
- <check_box label="An Untereinheiten ausrichten" name="GridSubUnit"/>
- <check_box label="Querschnitte anzeigen" name="GridCrossSection"/>
- <text name="grid_opacity_label" tool_tip="Rasterdeckkraft">
- Deckkraft:
- </text>
- <slider label="Rasterdeckkraft" name="GridOpacity"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="RASTEROPTIONEN">
+ <spinner label="Rastereinheit (Meter)" name="GridResolution"/>
+ <spinner label="Rastergröße (Meter)" name="GridDrawSize"/>
+ <check_box label="An Untereinheiten ausrichten" name="GridSubUnit"/>
+ <check_box label="Querschnitte anzeigen" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="Rasterdeckkraft">
+ Deckkraft:
+ </text>
+ <slider label="Rasterdeckkraft" name="GridOpacity"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
index 1dceb1ad67..6c0574dee4 100644
--- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
@@ -1,53 +1,53 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="Inhalt-Berechtigungen bearbeiten">
- <floater.string name="nothing_to_modify_text">
- Auswahl enthält keinen Inhalt, der bearbeitet werden kann.
- </floater.string>
- <floater.string name="status_text">
- Berechtigungen werden eingestellt auf [NAME]
- </floater.string>
- <floater.string name="start_text">
- Start: Anforderung auf Änderung der Berechtigung...
- </floater.string>
- <floater.string name="done_text">
- Ende: Anforderung auf Änderung der Berechtigung.
- </floater.string>
- <check_box label="Animation" name="check_animation"/>
- <icon name="icon_animation" tool_tip="Animation"/>
- <check_box label="Körperteile" name="check_bodypart"/>
- <icon name="icon_bodypart" tool_tip="Körperteile"/>
- <check_box label="Kleidung" name="check_clothing"/>
- <icon name="icon_clothing" tool_tip="Kleidung"/>
- <check_box label="Gesten" name="check_gesture"/>
- <icon name="icon_gesture" tool_tip="Gesten"/>
- <check_box label="Notizkarten" name="check_notecard"/>
- <icon name="icon_notecard" tool_tip="Notizkarten"/>
- <check_box label="Objekte" name="check_object"/>
- <icon name="icon_object" tool_tip="Objekte"/>
- <check_box label="Skripts" name="check_script"/>
- <icon name="icon_script" tool_tip="Skripts"/>
- <check_box label="Sounds" name="check_sound"/>
- <icon name="icon_sound" tool_tip="Sounds"/>
- <check_box label="Texturen" name="check_texture"/>
- <button label="√ Alle" label_selected="Alle" name="check_all"/>
- <button label="Löschen" label_selected="Keine" name="check_none"/>
- <text name="newperms">
- Neue Inhalts-Berechtigungen
- </text>
- <text name="GroupLabel">
- Gruppe:
- </text>
- <check_box label="Freigeben" name="share_with_group"/>
- <text name="AnyoneLabel">
- Jeder:
- </text>
- <check_box label="Kopieren" name="everyone_copy"/>
- <text name="NextOwnerLabel">
- Nächster Eigentümer:
- </text>
- <check_box label="Bearbeiten" name="next_owner_modify"/>
- <check_box label="Kopieren" name="next_owner_copy"/>
- <check_box initial_value="true" label="Transferieren" name="next_owner_transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
- <button label="OK" name="apply"/>
- <button label="Abbrechen" name="close"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="Inhalt-Berechtigungen bearbeiten">
+ <floater.string name="nothing_to_modify_text">
+ Auswahl enthält keinen Inhalt, der bearbeitet werden kann.
+ </floater.string>
+ <floater.string name="status_text">
+ Berechtigungen werden eingestellt auf [NAME]
+ </floater.string>
+ <floater.string name="start_text">
+ Start: Anforderung auf Änderung der Berechtigung...
+ </floater.string>
+ <floater.string name="done_text">
+ Ende: Anforderung auf Änderung der Berechtigung.
+ </floater.string>
+ <check_box label="Animation" name="check_animation"/>
+ <icon name="icon_animation" tool_tip="Animation"/>
+ <check_box label="Körperteile" name="check_bodypart"/>
+ <icon name="icon_bodypart" tool_tip="Körperteile"/>
+ <check_box label="Kleidung" name="check_clothing"/>
+ <icon name="icon_clothing" tool_tip="Kleidung"/>
+ <check_box label="Gesten" name="check_gesture"/>
+ <icon name="icon_gesture" tool_tip="Gesten"/>
+ <check_box label="Notizkarten" name="check_notecard"/>
+ <icon name="icon_notecard" tool_tip="Notizkarten"/>
+ <check_box label="Objekte" name="check_object"/>
+ <icon name="icon_object" tool_tip="Objekte"/>
+ <check_box label="Skripts" name="check_script"/>
+ <icon name="icon_script" tool_tip="Skripts"/>
+ <check_box label="Sounds" name="check_sound"/>
+ <icon name="icon_sound" tool_tip="Sounds"/>
+ <check_box label="Texturen" name="check_texture"/>
+ <button label="√ Alle" label_selected="Alle" name="check_all"/>
+ <button label="Löschen" label_selected="Keine" name="check_none"/>
+ <text name="newperms">
+ Neue Inhalts-Berechtigungen
+ </text>
+ <text name="GroupLabel">
+ Gruppe:
+ </text>
+ <check_box label="Freigeben" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ Jeder:
+ </text>
+ <check_box label="Kopieren" name="everyone_copy"/>
+ <text name="NextOwnerLabel">
+ Nächster Eigentümer:
+ </text>
+ <check_box label="Bearbeiten" name="next_owner_modify"/>
+ <check_box label="Kopieren" name="next_owner_copy"/>
+ <check_box initial_value="true" label="Transferieren" name="next_owner_transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/>
+ <button label="OK" name="apply"/>
+ <button label="Abbrechen" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_object.xml b/indra/newview/skins/default/xui/de/floater_buy_object.xml
index b1e4476207..e35212915f 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_object.xml
@@ -1,26 +1,26 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="OBJEKTKOPIE KAUFEN">
- <text name="contents_text">
- Inhalt:
- </text>
- <text name="buy_text">
- [AMOUNT] L$ von [NAME] kaufen?
- </text>
- <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn" width="73"/>
- <button label="Kaufen" label_selected="Kaufen" name="buy_btn"/>
- <text name="title_buy_text">
- Kaufen
- </text>
- <string name="title_buy_copy_text">
- Kopie kaufen von
- </string>
- <text name="no_copy_text">
- (kein Kopieren)
- </text>
- <text name="no_modify_text">
- (kein Bearbeiten)
- </text>
- <text name="no_transfer_text">
- (kein Transferieren)
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="OBJEKTKOPIE KAUFEN">
+ <text name="contents_text">
+ Inhalt:
+ </text>
+ <text name="buy_text">
+ [AMOUNT] L$ von [NAME] kaufen?
+ </text>
+ <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn" width="73"/>
+ <button label="Kaufen" label_selected="Kaufen" name="buy_btn"/>
+ <text name="title_buy_text">
+ Kaufen
+ </text>
+ <string name="title_buy_copy_text">
+ Kopie kaufen von
+ </string>
+ <text name="no_copy_text">
+ (kein Kopieren)
+ </text>
+ <text name="no_modify_text">
+ (kein Bearbeiten)
+ </text>
+ <text name="no_transfer_text">
+ (kein Transferieren)
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml
index a0cf6cbecf..131f077815 100644
--- a/indra/newview/skins/default/xui/de/floater_camera.xml
+++ b/indra/newview/skins/default/xui/de/floater_camera.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- Kamera um Fokus drehen
- </floater.string>
- <floater.string name="zoom_tooltip">
- Kamera auf Fokus zoomen
- </floater.string>
- <floater.string name="move_tooltip">
- Kamera nach oben, unten, links und rechts bewegen
- </floater.string>
- <panel name="controls">
- <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
- <joystick_zoom name="zoom" tool_tip="Kamera auf Fokus zoomen"/>
- <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus herum kreisen"/>
- </panel>
- <panel name="buttons">
- <button label="" name="orbit_btn" tool_tip="Kamera kreisen"/>
- <button label="" name="pan_btn" tool_tip="Kamera schwenken"/>
- <button label="" name="avatarview_btn" tool_tip="Avatarsicht"/>
- <button label="" name="freecamera_btn" tool_tip="Objekt ansehen"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater">
+ <floater.string name="rotate_tooltip">
+ Kamera um Fokus drehen
+ </floater.string>
+ <floater.string name="zoom_tooltip">
+ Kamera auf Fokus zoomen
+ </floater.string>
+ <floater.string name="move_tooltip">
+ Kamera nach oben, unten, links und rechts bewegen
+ </floater.string>
+ <panel name="controls">
+ <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
+ <joystick_zoom name="zoom" tool_tip="Kamera auf Fokus zoomen"/>
+ <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus herum kreisen"/>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="orbit_btn" tool_tip="Kamera kreisen"/>
+ <button label="" name="pan_btn" tool_tip="Kamera schwenken"/>
+ <button label="" name="avatarview_btn" tool_tip="Avatarsicht"/>
+ <button label="" name="freecamera_btn" tool_tip="Objekt ansehen"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_color_picker.xml b/indra/newview/skins/default/xui/de/floater_color_picker.xml
index 4143f634af..9221d1bcf7 100644
--- a/indra/newview/skins/default/xui/de/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/de/floater_color_picker.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="FARBAUSWAHL">
- <text name="r_val_text">
- Rot:
- </text>
- <text name="g_val_text">
- Grün:
- </text>
- <text name="b_val_text">
- Blau:
- </text>
- <text name="h_val_text">
- Farbton:
- </text>
- <text name="s_val_text">
- Sätt.:
- </text>
- <text name="l_val_text">
- Hell.:
- </text>
- <check_box label="Jetzt übernehmen" name="apply_immediate"/>
- <button label="" label_selected="" name="color_pipette"/>
- <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/>
- <button label="OK" label_selected="Auswählen" name="select_btn"/>
- <text name="Current color:">
- Aktuelle Farbe:
- </text>
- <text name="(Drag below to save.)">
- (Nach unten ziehen,
- um zu speichern)
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="FARBAUSWAHL">
+ <text name="r_val_text">
+ Rot:
+ </text>
+ <text name="g_val_text">
+ Grün:
+ </text>
+ <text name="b_val_text">
+ Blau:
+ </text>
+ <text name="h_val_text">
+ Farbton:
+ </text>
+ <text name="s_val_text">
+ Sätt.:
+ </text>
+ <text name="l_val_text">
+ Hell.:
+ </text>
+ <check_box label="Jetzt übernehmen" name="apply_immediate"/>
+ <button label="" label_selected="" name="color_pipette"/>
+ <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/>
+ <button label="OK" label_selected="Auswählen" name="select_btn"/>
+ <text name="Current color:">
+ Aktuelle Farbe:
+ </text>
+ <text name="(Drag below to save.)">
+ (Nach unten ziehen,
+ um zu speichern)
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml
index 34ea18457e..e790420efb 100644
--- a/indra/newview/skins/default/xui/de/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml
@@ -1,102 +1,102 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="godtools floater" title="GOTT-WERKZEUGE">
- <tab_container name="GodTools Tabs">
- <panel label="Raster" name="grid">
- <button label="Alle Benutzer hinauswerfen" label_selected="Alle Benutzer hinauswerfen" name="Kick all users" width="175"/>
- <button label="Sichtbarkeits-Cache dieser Regionskarte leeren" label_selected="Sichtbarkeits-Cache dieser Regionskarte leeren" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
- </panel>
- <panel label="Region" name="region">
- <text name="Sim Name:" width="55">
- Sim-Name:
- </text>
- <check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/>
- <check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ &gt; „Terrain“."/>
- <check_box height="32" label="Zuhause auf Teleport
-zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren, ihr Zuhause auf Zielposition setzen."/>
- <check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
- <check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/>
- <check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/>
- <check_box label="Terraformen blockieren" name="block terraform" tool_tip="Das Terraformen von Land verbieten (Benutzen Sie dies um Leuten das Terraformen ihres Landes zu verbieten)"/>
- <check_box label="Sandkasten" name="is sandbox" tool_tip="Sandkastenregion ein-/ausschalten."/>
- <button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="118"/>
- <button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="118"/>
- <button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="118"/>
- <text name="estate id">
- Grundstücks-ID:
- </text>
- <text name="parent id">
- Parent ID:
- </text>
- <line_editor name="parentestate" tool_tip="Das übergeordnete Grundstück dieser Region"/>
- <text name="Grid Pos: ">
- Raster-Pos.:
- </text>
- <line_editor left_delta="110" name="gridposx" tool_tip="Die X-Rasterposition dieser Region" width="35"/>
- <line_editor left_delta="45" name="gridposy" tool_tip="Die Y-Rasterposition dieser Region" width="35"/>
- <text name="Redirect to Grid: ">
- Auf Raster umleiten:
- </text>
- <line_editor left_delta="110" name="redirectx" width="35"/>
- <line_editor left_delta="45" name="redirecty" width="35"/>
- <text font="SansSerifSmall" name="billable factor text">
- Abrechnungsfaktor:
- </text>
- <text name="land cost text">
- L$ pro qm:
- </text>
- <button label="Aktualisieren" label_selected="Aktualisieren" name="Refresh" tool_tip="Klicken Sie hier, um die obigen Informationen zu aktualisieren."/>
- <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
- <button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="130"/>
- <button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="130"/>
- </panel>
- <panel label="Objekte" name="objects">
- <panel.string name="no_target">
- (kein Ziel)
- </panel.string>
- <text name="Sim Name:" width="55">
- Sim-Name:
- </text>
- <text name="region name">
- Welsh
- </text>
- <check_box label="Skripts
-deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/>
- <check_box label="Kollisionen
-deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/>
- <check_box label="Physik deaktivieren" name="disable physics" tool_tip="Die Physik in dieser Region komplett abschalten"/>
- <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
- <button label="Ziel festlegen" label_selected="Ziel festlegen" name="Set Target" tool_tip="Den Ziel-Avatar für das Löschen von Objekten auswählen."/>
- <text name="target_avatar_name">
- (kein Ziel)
- </text>
- <button label="Geskriptete Objekte des Ziels auf anderen Ländern löschen" label_selected="Geskriptete Objekte des Ziels auf anderen Ländern löschen" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Alle dem Ziel gehörenden geskripteten Objekte auf Land, das dem Ziel nicht gehört, löschen. Objekte (nicht kopierfähig) werden zurückgegeben."/>
- <button label="Geskriptete Objekte des Ziels auf *allen* Ländern löschen" label_selected="Geskriptete Objekte des Ziels auf *allen* Ländern löschen" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Alle dem Ziel gehörenden geskripteten Objekte in dieser Region löschen. Objekte (nicht kopierfähig) werden zurückgegeben."/>
- <button label="*ALLE* Objekte des Ziels löschen" label_selected="*ALLE* Objekte des Ziels löschen" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Alle dem Ziel gehörenden Objekte in dieser Region löschen. Objekte (nicht kopierfähig) werden zurückgegeben."/>
- <button label="Top-Kollisionsobjekte" label_selected="Top-Kollisionsobjekte" name="Get Top Colliders" tool_tip="Zeigt eine Liste der Objekte mit den meisten Callbacks in der nahen Phase an." width="130"/>
- <button label="Top-Skripts" label_selected="Top-Skripts" name="Get Top Scripts" tool_tip="Zeigt eine Liste der Objekte an, die die meiste Zeit über Skripts ausführen." width="130"/>
- <button label="Scripting-Übersicht" label_selected="Scripting-Übersicht" name="Scripts digest" tool_tip="Zeigt eine Liste aller Skripts mit Häufigkeit an." width="130"/>
- </panel>
- <panel label="Anfrage" name="request">
- <text name="Destination:">
- Ziel:
- </text>
- <combo_box name="destination">
- <combo_box.item label="Auswahl" name="item1"/>
- <combo_box.item label="Avatar-Region" name="item2"/>
- </combo_box>
- <text name="Request:">
- Anfrage:
- </text>
- <combo_box name="request">
- <combo_box.item label="Kollisionsobjekte &lt;Schritte&gt;" name="item1"/>
- <combo_box.item label="Skripts &lt;Zähler&gt;,&lt;Optionales Muster&gt;" name="item2"/>
- <combo_box.item label="Objekte &lt;Muster&gt;" name="item3"/>
- <combo_box.item label="lt;asset_id&gt; erstellen" name="item4"/>
- </combo_box>
- <text name="Parameter:">
- Parameter:
- </text>
- <button label="Anfrage" label_selected="Anfrage" name="Make Request"/>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="GOTT-WERKZEUGE">
+ <tab_container name="GodTools Tabs">
+ <panel label="Raster" name="grid">
+ <button label="Alle Benutzer hinauswerfen" label_selected="Alle Benutzer hinauswerfen" name="Kick all users" width="175"/>
+ <button label="Sichtbarkeits-Cache dieser Regionskarte leeren" label_selected="Sichtbarkeits-Cache dieser Regionskarte leeren" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
+ </panel>
+ <panel label="Region" name="region">
+ <text name="Sim Name:" width="55">
+ Sim-Name:
+ </text>
+ <check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/>
+ <check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ &gt; „Terrain“."/>
+ <check_box height="32" label="Zuhause auf Teleport
+zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren, ihr Zuhause auf Zielposition setzen."/>
+ <check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
+ <check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/>
+ <check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/>
+ <check_box label="Terraformen blockieren" name="block terraform" tool_tip="Das Terraformen von Land verbieten (Benutzen Sie dies um Leuten das Terraformen ihres Landes zu verbieten)"/>
+ <check_box label="Sandkasten" name="is sandbox" tool_tip="Sandkastenregion ein-/ausschalten."/>
+ <button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="118"/>
+ <button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="118"/>
+ <button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="118"/>
+ <text name="estate id">
+ Grundstücks-ID:
+ </text>
+ <text name="parent id">
+ Parent ID:
+ </text>
+ <line_editor name="parentestate" tool_tip="Das übergeordnete Grundstück dieser Region"/>
+ <text name="Grid Pos: ">
+ Raster-Pos.:
+ </text>
+ <line_editor left_delta="110" name="gridposx" tool_tip="Die X-Rasterposition dieser Region" width="35"/>
+ <line_editor left_delta="45" name="gridposy" tool_tip="Die Y-Rasterposition dieser Region" width="35"/>
+ <text name="Redirect to Grid: ">
+ Auf Raster umleiten:
+ </text>
+ <line_editor left_delta="110" name="redirectx" width="35"/>
+ <line_editor left_delta="45" name="redirecty" width="35"/>
+ <text font="SansSerifSmall" name="billable factor text">
+ Abrechnungsfaktor:
+ </text>
+ <text name="land cost text">
+ L$ pro qm:
+ </text>
+ <button label="Aktualisieren" label_selected="Aktualisieren" name="Refresh" tool_tip="Klicken Sie hier, um die obigen Informationen zu aktualisieren."/>
+ <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
+ <button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="130"/>
+ <button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="130"/>
+ </panel>
+ <panel label="Objekte" name="objects">
+ <panel.string name="no_target">
+ (kein Ziel)
+ </panel.string>
+ <text name="Sim Name:" width="55">
+ Sim-Name:
+ </text>
+ <text name="region name">
+ Welsh
+ </text>
+ <check_box label="Skripts
+deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/>
+ <check_box label="Kollisionen
+deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/>
+ <check_box label="Physik deaktivieren" name="disable physics" tool_tip="Die Physik in dieser Region komplett abschalten"/>
+ <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
+ <button label="Ziel festlegen" label_selected="Ziel festlegen" name="Set Target" tool_tip="Den Ziel-Avatar für das Löschen von Objekten auswählen."/>
+ <text name="target_avatar_name">
+ (kein Ziel)
+ </text>
+ <button label="Geskriptete Objekte des Ziels auf anderen Ländern löschen" label_selected="Geskriptete Objekte des Ziels auf anderen Ländern löschen" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Alle dem Ziel gehörenden geskripteten Objekte auf Land, das dem Ziel nicht gehört, löschen. Objekte (nicht kopierfähig) werden zurückgegeben."/>
+ <button label="Geskriptete Objekte des Ziels auf *allen* Ländern löschen" label_selected="Geskriptete Objekte des Ziels auf *allen* Ländern löschen" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Alle dem Ziel gehörenden geskripteten Objekte in dieser Region löschen. Objekte (nicht kopierfähig) werden zurückgegeben."/>
+ <button label="*ALLE* Objekte des Ziels löschen" label_selected="*ALLE* Objekte des Ziels löschen" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Alle dem Ziel gehörenden Objekte in dieser Region löschen. Objekte (nicht kopierfähig) werden zurückgegeben."/>
+ <button label="Top-Kollisionsobjekte" label_selected="Top-Kollisionsobjekte" name="Get Top Colliders" tool_tip="Zeigt eine Liste der Objekte mit den meisten Callbacks in der nahen Phase an." width="130"/>
+ <button label="Top-Skripts" label_selected="Top-Skripts" name="Get Top Scripts" tool_tip="Zeigt eine Liste der Objekte an, die die meiste Zeit über Skripts ausführen." width="130"/>
+ <button label="Scripting-Übersicht" label_selected="Scripting-Übersicht" name="Scripts digest" tool_tip="Zeigt eine Liste aller Skripts mit Häufigkeit an." width="130"/>
+ </panel>
+ <panel label="Anfrage" name="request">
+ <text name="Destination:">
+ Ziel:
+ </text>
+ <combo_box name="destination">
+ <combo_box.item label="Auswahl" name="item1"/>
+ <combo_box.item label="Avatar-Region" name="item2"/>
+ </combo_box>
+ <text name="Request:">
+ Anfrage:
+ </text>
+ <combo_box name="request">
+ <combo_box.item label="Kollisionsobjekte &lt;Schritte&gt;" name="item1"/>
+ <combo_box.item label="Skripts &lt;Zähler&gt;,&lt;Optionales Muster&gt;" name="item2"/>
+ <combo_box.item label="Objekte &lt;Muster&gt;" name="item3"/>
+ <combo_box.item label="lt;asset_id&gt; erstellen" name="item4"/>
+ </combo_box>
+ <text name="Parameter:">
+ Parameter:
+ </text>
+ <button label="Anfrage" label_selected="Anfrage" name="Make Request"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
index ba2269012f..2936688254 100644
--- a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="HARDWARE-EINSTELLUNGEN">
- <text name="Filtering:">
- Filtern:
- </text>
- <check_box label="Anisotropische Filterung (langsamer, wenn aktiviert)" name="ani"/>
- <text name="Antialiasing:">
- Antialiasing:
- </text>
- <combo_box label="Antialiasing" name="fsaa">
- <combo_box.item label="Deaktiviert" name="FSAADisabled"/>
- <combo_box.item label="2x" name="2x"/>
- <combo_box.item label="4x" name="4x"/>
- <combo_box.item label="8x" name="8x"/>
- <combo_box.item label="16x" name="16x"/>
- </combo_box>
- <spinner label="Gamma:" name="gamma"/>
- <text name="(brightness, lower is brighter)">
- (0 = Standard-Helligkeit, weniger = heller)
- </text>
- <text name="Enable VBO:">
- VBO aktivieren:
- </text>
- <check_box label="OpenGL Vertex-Buffer-Objekte aktivieren" name="vbo" tool_tip="Wenn Sie über moderne Grafikhardware verfügen, können Sie durch Aktivieren dieser Option die Geschwindigkeit verbessern. Bei alter Hardware sind die VBO oft schlecht implementiert, was zu Abstürzen führen kann, wenn diese Option aktiviert ist."/>
- <slider label="Texturspeicher (MB):" name="GrapicsCardTextureMemory" tool_tip="Speicherplatz, der für Texturen zur Verfügung steht. In der Regel handelt es sich um Grafikkartenspeicher. Ein kleinerer Wert kann die Geschwindigkeit erhöhen, aber auch zu Texturunschärfen führen."/>
- <spinner label="Nebeldistanzverhältnis:" name="fog"/>
- <button label="OK" label_selected="OK" name="OK"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="HARDWARE-EINSTELLUNGEN">
+ <text name="Filtering:">
+ Filtern:
+ </text>
+ <check_box label="Anisotropische Filterung (langsamer, wenn aktiviert)" name="ani"/>
+ <text name="Antialiasing:">
+ Antialiasing:
+ </text>
+ <combo_box label="Antialiasing" name="fsaa">
+ <combo_box.item label="Deaktiviert" name="FSAADisabled"/>
+ <combo_box.item label="2x" name="2x"/>
+ <combo_box.item label="4x" name="4x"/>
+ <combo_box.item label="8x" name="8x"/>
+ <combo_box.item label="16x" name="16x"/>
+ </combo_box>
+ <spinner label="Gamma:" name="gamma"/>
+ <text name="(brightness, lower is brighter)">
+ (0 = Standard-Helligkeit, weniger = heller)
+ </text>
+ <text name="Enable VBO:">
+ VBO aktivieren:
+ </text>
+ <check_box label="OpenGL Vertex-Buffer-Objekte aktivieren" name="vbo" tool_tip="Wenn Sie über moderne Grafikhardware verfügen, können Sie durch Aktivieren dieser Option die Geschwindigkeit verbessern. Bei alter Hardware sind die VBO oft schlecht implementiert, was zu Abstürzen führen kann, wenn diese Option aktiviert ist."/>
+ <slider label="Texturspeicher (MB):" name="GrapicsCardTextureMemory" tool_tip="Speicherplatz, der für Texturen zur Verfügung steht. In der Regel handelt es sich um Grafikkartenspeicher. Ein kleinerer Wert kann die Geschwindigkeit erhöhen, aber auch zu Texturunschärfen führen."/>
+ <spinner label="Nebeldistanzverhältnis:" name="fog"/>
+ <button label="OK" label_selected="OK" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_image_preview.xml b/indra/newview/skins/default/xui/de/floater_image_preview.xml
index 80c71d41f7..7f66234dab 100644
--- a/indra/newview/skins/default/xui/de/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_image_preview.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Image Preview" title="">
- <text name="name_label">
- Name:
- </text>
- <text name="description_label">
- Beschreibung:
- </text>
- <text name="preview_label">
- Bildvorschau als:
- </text>
- <combo_box label="Kleidungstyp" name="clothing_type_combo">
- <combo_box.item label="Bild" name="Image"/>
- <combo_box.item label="Haare" name="Hair"/>
- <combo_box.item label="Kopf (Frau)" name="FemaleHead"/>
- <combo_box.item label="Oberkörper (Frau)" name="FemaleUpperBody"/>
- <combo_box.item label="Unterkörper (Frau)" name="FemaleLowerBody"/>
- <combo_box.item label="Kopf (Mann)" name="MaleHead"/>
- <combo_box.item label="Oberkörper (Mann)" name="MaleUpperBody"/>
- <combo_box.item label="Unterkörper (Mann)" name="MaleLowerBody"/>
- <combo_box.item label="Rock" name="Skirt"/>
- <combo_box.item label="Geformtes Primitiv" name="SculptedPrim"/>
- </combo_box>
- <text name="bad_image_text">
- Bild kann nicht gelesen werden.
-
-Speichern Sie das Bild als 24 Bit Targa (.tga).
- </text>
- <check_box label="Verlustfreie Komprimierung verwenden" name="lossless_check"/>
- <button label="Abbrechen" name="cancel_btn"/>
- <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview" title="">
+ <text name="name_label">
+ Name:
+ </text>
+ <text name="description_label">
+ Beschreibung:
+ </text>
+ <text name="preview_label">
+ Bildvorschau als:
+ </text>
+ <combo_box label="Kleidungstyp" name="clothing_type_combo">
+ <combo_box.item label="Bild" name="Image"/>
+ <combo_box.item label="Haare" name="Hair"/>
+ <combo_box.item label="Kopf (Frau)" name="FemaleHead"/>
+ <combo_box.item label="Oberkörper (Frau)" name="FemaleUpperBody"/>
+ <combo_box.item label="Unterkörper (Frau)" name="FemaleLowerBody"/>
+ <combo_box.item label="Kopf (Mann)" name="MaleHead"/>
+ <combo_box.item label="Oberkörper (Mann)" name="MaleUpperBody"/>
+ <combo_box.item label="Unterkörper (Mann)" name="MaleLowerBody"/>
+ <combo_box.item label="Rock" name="Skirt"/>
+ <combo_box.item label="Geformtes Primitiv" name="SculptedPrim"/>
+ </combo_box>
+ <text name="bad_image_text">
+ Bild kann nicht gelesen werden.
+
+Speichern Sie das Bild als 24 Bit Targa (.tga).
+ </text>
+ <check_box label="Verlustfreie Komprimierung verwenden" name="lossless_check"/>
+ <button label="Abbrechen" name="cancel_btn"/>
+ <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
+</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 b5e8ed0b6f..89771a5289 100644
--- 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,67 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="item properties" title="INVENTAROBJEKT-EIGENSCHAFTEN">
- <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>
- <text name="LabelItemNameTitle">
- Name:
- </text>
- <text name="LabelItemDescTitle">
- Beschreibung:
- </text>
- <text name="LabelCreatorTitle">
- Ersteller:
- </text>
- <text name="LabelCreatorName">
- Nicole Linden
- </text>
- <button label="Profil..." label_selected="" name="BtnCreator"/>
- <text name="LabelOwnerTitle">
- Eigentümer:
- </text>
- <text name="LabelOwnerName">
- Thrax Linden
- </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>
- <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>
- <check_box label="Kopieren" name="CheckEveryoneCopy"/>
- <text name="GroupLabel">
- Gruppe:
- </text>
- <check_box label="Teilen" name="CheckShareWithGroup"/>
- <text name="NextOwnerLabel" width="150">
- Nächster Eigentümer:
- </text>
- <check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
- <check_box label="Kopieren" left_delta="85" name="CheckNextOwnerCopy"/>
- <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/>
- <check_box label="Zum Verkauf" name="CheckPurchase"/>
- <combo_box name="combobox sale copy">
- <combo_box.item label="Kopieren" name="Copy"/>
- <combo_box.item label="Original" name="Original"/>
- </combo_box>
- <spinner label="Preis: L$" name="Edit Cost"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="INVENTAROBJEKT-EIGENSCHAFTEN">
+ <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>
+ <text name="LabelItemNameTitle">
+ Name:
+ </text>
+ <text name="LabelItemDescTitle">
+ Beschreibung:
+ </text>
+ <text name="LabelCreatorTitle">
+ Ersteller:
+ </text>
+ <text name="LabelCreatorName">
+ Nicole Linden
+ </text>
+ <button label="Profil..." label_selected="" name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ Eigentümer:
+ </text>
+ <text name="LabelOwnerName">
+ Thrax Linden
+ </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>
+ <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>
+ <check_box label="Kopieren" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Gruppe:
+ </text>
+ <check_box label="Teilen" name="CheckShareWithGroup"/>
+ <text name="NextOwnerLabel" width="150">
+ Nächster Eigentümer:
+ </text>
+ <check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
+ <check_box label="Kopieren" left_delta="85" name="CheckNextOwnerCopy"/>
+ <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/>
+ <check_box label="Zum Verkauf" name="CheckPurchase"/>
+ <combo_box name="combobox sale copy">
+ <combo_box.item label="Kopieren" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Preis: L$" name="Edit Cost"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_land_holdings.xml b/indra/newview/skins/default/xui/de/floater_land_holdings.xml
index f258dc2f5d..c612f21a5b 100644
--- a/indra/newview/skins/default/xui/de/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/de/floater_land_holdings.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="MEIN LAND">
- <scroll_list name="parcel list">
- <column label="Parzelle" name="name"/>
- <column label="Region" name="location"/>
- <column label="Typ" name="type"/>
- <column label="Gebiet" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zum Mittelpunkt dieses Landes teleportieren."/>
- <button label="Karte" label_selected="Karte" name="Show on Map" tool_tip="Dieses Land auf der Weltkarte anzeigen."/>
- <text name="contrib_label">
- Beiträge zu Ihren Gruppen:
- </text>
- <scroll_list name="grant list">
- <column label="Gruppe" name="group"/>
- <column label="Gebiet" name="area"/>
- </scroll_list>
- <text name="allowed_label">
- Zulässiger Landbesitz bei aktuellem Zahlungsplan:
- </text>
- <text name="allowed_text">
- [AREA] qm
- </text>
- <text name="current_label">
- Aktueller Landbesitz:
- </text>
- <text name="current_text">
- [AREA] qm
- </text>
- <text name="available_label">
- Für Landkäufe verfügbar:
- </text>
- <text name="available_text">
- [AREA] qm
- </text>
- <string name="area_string">
- [AREA] qm
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="MEIN LAND">
+ <scroll_list name="parcel list">
+ <column label="Parzelle" name="name"/>
+ <column label="Region" name="location"/>
+ <column label="Typ" name="type"/>
+ <column label="Gebiet" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zum Mittelpunkt dieses Landes teleportieren."/>
+ <button label="Karte" label_selected="Karte" name="Show on Map" tool_tip="Dieses Land auf der Weltkarte anzeigen."/>
+ <text name="contrib_label">
+ Beiträge zu Ihren Gruppen:
+ </text>
+ <scroll_list name="grant list">
+ <column label="Gruppe" name="group"/>
+ <column label="Gebiet" name="area"/>
+ </scroll_list>
+ <text name="allowed_label">
+ Zulässiger Landbesitz bei aktuellem Zahlungsplan:
+ </text>
+ <text name="allowed_text">
+ [AREA] qm
+ </text>
+ <text name="current_label">
+ Aktueller Landbesitz:
+ </text>
+ <text name="current_text">
+ [AREA] qm
+ </text>
+ <text name="available_label">
+ Für Landkäufe verfügbar:
+ </text>
+ <text name="available_text">
+ [AREA] qm
+ </text>
+ <string name="area_string">
+ [AREA] qm
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
index 947a435f8a..52e6dccaba 100644
--- a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="SKRIPT: NEUES SKRIPT">
- <floater.string name="not_allowed">
- Dieses Skript kann nicht angezeigt oder bearbeitet werden, da als Berechtigung &quot;kein kopieren&quot; festgelegt wurde. Um ein Skript innerhalb eines Objektes anzuzeigen oder zu bearbeiten, benötigen Sie die vollständige Berechtigung.
- </floater.string>
- <floater.string name="script_running">
- Läuft
- </floater.string>
- <floater.string name="Title">
- Skript: [NAME]
- </floater.string>
- <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Reset"/>
- <check_box initial_value="true" label="Läuft" name="running"/>
- <check_box initial_value="true" label="Mono" name="mono"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="SKRIPT: NEUES SKRIPT">
+ <floater.string name="not_allowed">
+ Dieses Skript kann nicht angezeigt oder bearbeitet werden, da als Berechtigung &quot;kein kopieren&quot; festgelegt wurde. Um ein Skript innerhalb eines Objektes anzuzeigen oder zu bearbeiten, benötigen Sie die vollständige Berechtigung.
+ </floater.string>
+ <floater.string name="script_running">
+ Läuft
+ </floater.string>
+ <floater.string name="Title">
+ Skript: [NAME]
+ </floater.string>
+ <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Reset"/>
+ <check_box initial_value="true" label="Läuft" name="running"/>
+ <check_box initial_value="true" label="Mono" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml
index 7373784673..b985d1d187 100644
--- a/indra/newview/skins/default/xui/de/floater_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_map.xml
@@ -1,54 +1,54 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
- <floater.string name="mini_map_north">
- N
- </floater.string>
- <floater.string name="mini_map_east">
- O
- </floater.string>
- <floater.string name="mini_map_west">
- W
- </floater.string>
- <floater.string name="mini_map_south">
- S
- </floater.string>
- <floater.string name="mini_map_southeast">
- SO
- </floater.string>
- <floater.string name="mini_map_northeast">
- NO
- </floater.string>
- <floater.string name="mini_map_southwest">
- SW
- </floater.string>
- <floater.string name="mini_map_northwest">
- NW
- </floater.string>
- <floater.string name="ToolTipMsg">
- [AGENT][REGION](Karte mit Doppelklick öffnen)
- </floater.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="O" name="floater_map_east" text="O">
- O
- </text>
- <text label="W" name="floater_map_west" text="W">
- W
- </text>
- <text label="S" name="floater_map_south" text="S">
- S
- </text>
- <text label="SO" name="floater_map_southeast" text="SO">
- SO
- </text>
- <text label="NO" name="floater_map_northeast" text="NO">
- NO
- </text>
- <text label="SW" name="floater_map_southwest" text="SW">
- SW
- </text>
- <text label="NW" name="floater_map_northwest" text="NW">
- NW
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map">
+ <floater.string name="mini_map_north">
+ N
+ </floater.string>
+ <floater.string name="mini_map_east">
+ O
+ </floater.string>
+ <floater.string name="mini_map_west">
+ W
+ </floater.string>
+ <floater.string name="mini_map_south">
+ S
+ </floater.string>
+ <floater.string name="mini_map_southeast">
+ SO
+ </floater.string>
+ <floater.string name="mini_map_northeast">
+ NO
+ </floater.string>
+ <floater.string name="mini_map_southwest">
+ SW
+ </floater.string>
+ <floater.string name="mini_map_northwest">
+ NW
+ </floater.string>
+ <floater.string name="ToolTipMsg">
+ [AGENT][REGION](Karte mit Doppelklick öffnen)
+ </floater.string>
+ <text label="N" name="floater_map_north" text="N">
+ N
+ </text>
+ <text label="O" name="floater_map_east" text="O">
+ O
+ </text>
+ <text label="W" name="floater_map_west" text="W">
+ W
+ </text>
+ <text label="S" name="floater_map_south" text="S">
+ S
+ </text>
+ <text label="SO" name="floater_map_southeast" text="SO">
+ SO
+ </text>
+ <text label="NO" name="floater_map_northeast" text="NO">
+ NO
+ </text>
+ <text label="SW" name="floater_map_southwest" text="SW">
+ SW
+ </text>
+ <text label="NW" name="floater_map_northwest" text="NW">
+ NW
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml
index 21bf7aa563..1c580aa916 100644
--- a/indra/newview/skins/default/xui/de/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIENBROWSER">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Zurück" name="back"/>
- <button label="Weiter" name="forward"/>
- <button label="Neu laden" name="reload"/>
- <button label="Los" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="zurückspulen" name="rewind"/>
- <button label="anhalten" name="stop"/>
- <button label="vorwärts" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Aktuelle URL an Parzelle senden" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="In meinem Browser öffnen" name="open_browser"/>
- <check_box label="Immer in meinem Browser öffnen" name="open_always"/>
- <button label="Schließen" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="MEDIENBROWSER">
+ <floater.string name="home_page_url">
+ http://www.secondlife.com
+ </floater.string>
+ <floater.string name="support_page_url">
+ http://support.secondlife.com
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button label="Zurück" name="back"/>
+ <button label="Weiter" name="forward"/>
+ <button label="Neu laden" name="reload"/>
+ <button label="Los" name="go"/>
+ </layout_panel>
+ <layout_panel name="time_controls">
+ <button label="zurückspulen" name="rewind"/>
+ <button label="anhalten" name="stop"/>
+ <button label="vorwärts" name="seek"/>
+ </layout_panel>
+ <layout_panel name="parcel_owner_controls">
+ <button label="Aktuelle URL an Parzelle senden" name="assign"/>
+ </layout_panel>
+ <layout_panel name="external_controls">
+ <button label="In meinem Browser öffnen" name="open_browser"/>
+ <check_box label="Immer in meinem Browser öffnen" name="open_always"/>
+ <button label="Schließen" name="close"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
index 72210aa750..bb40d0b85c 100644
--- a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="Speicherverlust simulieren">
- <spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed"/>
- <spinner label="Max. Speicherverlust (MB):" name="max_leak"/>
- <text name="total_leaked_label">
- Aktueller Speicherverlust:[SIZE] KB
- </text>
- <text name="note_label_1">
- [NOTE1]
- </text>
- <text name="note_label_2">
- [NOTE2]
- </text>
- <button label="Start" name="start_btn"/>
- <button label="Stopp" name="stop_btn"/>
- <button label="Freigeben" name="release_btn"/>
- <button label="Schließen" name="close_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="Speicherverlust simulieren">
+ <spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed"/>
+ <spinner label="Max. Speicherverlust (MB):" name="max_leak"/>
+ <text name="total_leaked_label">
+ Aktueller Speicherverlust:[SIZE] KB
+ </text>
+ <text name="note_label_1">
+ [NOTE1]
+ </text>
+ <text name="note_label_2">
+ [NOTE2]
+ </text>
+ <button label="Start" name="start_btn"/>
+ <button label="Stopp" name="stop_btn"/>
+ <button label="Freigeben" name="release_btn"/>
+ <button label="Schließen" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml
index af133b6bd7..03930c8ed6 100644
--- a/indra/newview/skins/default/xui/de/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/de/floater_moveview.xml
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
- <string name="walk_forward_tooltip">
- Vorwärts gehen (Nach-oben-Pfeil oder W drücken)
- </string>
- <string name="walk_back_tooltip">
- Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)
- </string>
- <string name="run_forward_tooltip">
- Vorwärts rennen (Nach-oben-Pfeil oder W drücken)
- </string>
- <string name="run_back_tooltip">
- Rückwärts rennen (Nach-Unten-Pfeil oder S drücken)
- </string>
- <string name="fly_forward_tooltip">
- Vorwärts fliegen (Nach-oben-Pfeil oder W drücken)
- </string>
- <string name="fly_back_tooltip">
- Rückwärts fliegen (Nach-Unten-Pfeil oder S drücken)
- </string>
- <panel name="panel_actions">
- <button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/>
- <button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/>
- <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E&quot; drücken"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C&quot; drücken"/>
- <joystick_turn name="forward btn" tool_tip="Vorwärts gehen (Nach-oben-Pfeil oder W drücken)"/>
- <joystick_turn name="backward btn" tool_tip="Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)"/>
- </panel>
- <panel name="panel_modes">
- <button label="" name="mode_walk_btn" tool_tip="Gehen"/>
- <button label="" name="mode_run_btn" tool_tip="Rennen"/>
- <button label="" name="mode_fly_btn" tool_tip="Fliegen"/>
- <button label="Landen" name="stop_fly_btn" tool_tip="Landen"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater">
+ <string name="walk_forward_tooltip">
+ Vorwärts gehen (Nach-oben-Pfeil oder W drücken)
+ </string>
+ <string name="walk_back_tooltip">
+ Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)
+ </string>
+ <string name="run_forward_tooltip">
+ Vorwärts rennen (Nach-oben-Pfeil oder W drücken)
+ </string>
+ <string name="run_back_tooltip">
+ Rückwärts rennen (Nach-Unten-Pfeil oder S drücken)
+ </string>
+ <string name="fly_forward_tooltip">
+ Vorwärts fliegen (Nach-oben-Pfeil oder W drücken)
+ </string>
+ <string name="fly_back_tooltip">
+ Rückwärts fliegen (Nach-Unten-Pfeil oder S drücken)
+ </string>
+ <panel name="panel_actions">
+ <button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/>
+ <button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E&quot; drücken"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C&quot; drücken"/>
+ <joystick_turn name="forward btn" tool_tip="Vorwärts gehen (Nach-oben-Pfeil oder W drücken)"/>
+ <joystick_turn name="backward btn" tool_tip="Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="Gehen"/>
+ <button label="" name="mode_run_btn" tool_tip="Rennen"/>
+ <button label="" name="mode_fly_btn" tool_tip="Fliegen"/>
+ <button label="Landen" name="stop_fly_btn" tool_tip="Landen"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml
index c224d85ac1..ad7f4a94ab 100644
--- a/indra/newview/skins/default/xui/de/floater_pay.xml
+++ b/indra/newview/skins/default/xui/de/floater_pay.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Give Money" title="">
- <text name="payee_label" width="130">
- Zahlen:
- </text>
- <icon name="icon_person" tool_tip="Person"/>
- <text left="130" name="payee_name">
- [FIRST] [LAST]
- </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="Zahlen" label_selected="Zahlen" name="pay btn"/>
- <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money" title="">
+ <text name="payee_label" width="130">
+ Zahlen:
+ </text>
+ <icon name="icon_person" tool_tip="Person"/>
+ <text left="130" name="payee_name">
+ [FIRST] [LAST]
+ </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="Zahlen" label_selected="Zahlen" name="pay btn"/>
+ <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/>
+</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 32a026f7e8..1bc721aabf 100644
--- 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,29 @@
-<?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">
- [FIRST] [LAST]
- </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$" left="105" name="fastpay 1"/>
- <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
- <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
- <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
- <text name="amount text">
- Oder Betrag auswählen:
- </text>
- <button label="Zahlen" label_selected="Zahlen" name="pay btn"/>
- <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn" width="76"/>
-</floater>
+<?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">
+ [FIRST] [LAST]
+ </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$" left="105" name="fastpay 1"/>
+ <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
+ <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
+ <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
+ <text name="amount text">
+ Oder Betrag auswählen:
+ </text>
+ <button label="Zahlen" label_selected="Zahlen" name="pay btn"/>
+ <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn" width="76"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
index c167427da9..ea2e643601 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_anim">
- <floater.string name="Title">
- Animation: [NAME]
- </floater.string>
- <text name="desc txt">
- Beschreibung:
- </text>
- <line_editor left="98" name="desc" width="189"/>
- <button label="In Welt abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Gibt diese Animation so wieder, dass andere sie sehen können." width="116"/>
- <button label="Lokal wiedergeben" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Gibt diese Animation so wieder, dass nur Sie sie sehen." width="116"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+ <floater.string name="Title">
+ Animation: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Beschreibung:
+ </text>
+ <line_editor left="98" name="desc" width="189"/>
+ <button label="In Welt abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Gibt diese Animation so wieder, dass andere sie sehen können." width="116"/>
+ <button label="Lokal wiedergeben" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Gibt diese Animation so wieder, dass nur Sie sie sehen." width="116"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_classified.xml b/indra/newview/skins/default/xui/de/floater_preview_classified.xml
index e946f08b14..10f78207eb 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_classified.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="classified_preview" title="VERTRAULICHE INFORMATIONEN">
- <floater.string name="Title">
- Anzeige: [NAME]
- </floater.string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="classified_preview" title="VERTRAULICHE INFORMATIONEN">
+ <floater.string name="Title">
+ Anzeige: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_event.xml b/indra/newview/skins/default/xui/de/floater_preview_event.xml
index fffcf7c1cf..44bccc8a06 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_event.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="EVENT-INFORMATIONEN">
- <floater.string name="Title">
- Veranstaltung: [NAME]
- </floater.string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="event_preview" title="EVENT-INFORMATIONEN">
+ <floater.string name="Title">
+ Veranstaltung: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml
index 9fbe8d869e..3b86f4b3de 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="Gesten-Tastaturbefehl"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="Gesten-Tastaturbefehl"/>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml
index 9fbe8d869e..3b86f4b3de 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="Gesten-Tastaturbefehl"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="Gesten-Tastaturbefehl"/>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
index 1887433b61..a02a58ee0e 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="HINWEIS:">
- <floater.string name="no_object">
- Es wurde kein Objekt gefunden, das diese Notiz enthält.
- </floater.string>
- <floater.string name="not_allowed">
- Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte.
- </floater.string>
- <floater.string name="Title">
- Notizkarte: [NAME]
- </floater.string>
- <floater.string label="Speichern" label_selected="Speichern" name="Save">
- Speichern
- </floater.string>
- <text name="desc txt">
- Beschreibung:
- </text>
- <text_editor name="Notecard Editor">
- Wird geladen...
- </text_editor>
- <button label="Speichern" label_selected="Speichern" name="Save"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="HINWEIS:">
+ <floater.string name="no_object">
+ Es wurde kein Objekt gefunden, das diese Notiz enthält.
+ </floater.string>
+ <floater.string name="not_allowed">
+ Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte.
+ </floater.string>
+ <floater.string name="Title">
+ Notizkarte: [NAME]
+ </floater.string>
+ <floater.string label="Speichern" label_selected="Speichern" name="Save">
+ Speichern
+ </floater.string>
+ <text name="desc txt">
+ Beschreibung:
+ </text>
+ <text_editor name="Notecard Editor">
+ Wird geladen...
+ </text_editor>
+ <button label="Speichern" label_selected="Speichern" name="Save"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_sound.xml b/indra/newview/skins/default/xui/de/floater_preview_sound.xml
index 397b417d44..17419548bc 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_sound.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_sound">
- <floater.string name="Title">
- Sound: [NAME]
- </floater.string>
- <text name="desc txt">
- Beschreibung:
- </text>
- <button label="In Welt abspielen" label_selected="In Welt abspielen" name="Sound play btn" tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können."/>
- <button label="Lokal wiedergeben" label_selected="Lokal wiedergeben" name="Sound audition btn" tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören."/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+ <floater.string name="Title">
+ Sound: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Beschreibung:
+ </text>
+ <button label="In Welt abspielen" label_selected="In Welt abspielen" name="Sound play btn" tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können."/>
+ <button label="Lokal wiedergeben" label_selected="Lokal wiedergeben" name="Sound audition btn" tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören."/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
index c33e52dac8..9aa00e7172 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_texture">
- <floater.string name="Title">
- Textur: [NAME]
- </floater.string>
- <floater.string name="Copy">
- In Inventar kopieren
- </floater.string>
- <text name="desc txt">
- Beschreibung:
- </text>
- <button label="Speichern" name="Keep"/>
- <button label="Löschen" name="Discard"/>
- <text name="dimensions">
- [WIDTH]px x [HEIGHT]px
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+ <floater.string name="Title">
+ Textur: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ In Inventar kopieren
+ </floater.string>
+ <text name="desc txt">
+ Beschreibung:
+ </text>
+ <button label="Speichern" name="Keep"/>
+ <button label="Löschen" name="Discard"/>
+ <text name="dimensions">
+ [WIDTH]px x [HEIGHT]px
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 1e28726861..84b80e2f6d 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -1,104 +1,104 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_report_abuse" title="MISSBRAUCH MELDEN">
- <floater.string name="Screenshot">
- Foto
- </floater.string>
- <check_box bottom_delta="-20" label="Dieses Foto verwenden" name="screen_check"/>
- <text name="reporter_title">
- Melder:
- </text>
- <text name="reporter_field">
- Loremipsum Dolorsitamut
- </text>
- <text name="sim_title">
- Region:
- </text>
- <text name="sim_field">
- Name der Region
- </text>
- <text name="pos_title">
- Position:
- </text>
- <text name="pos_field">
- {128.1, 128.1, 15.4}
- </text>
- <text bottom_delta="-38" height="32" name="select_object_label">
- Klicken Sie auf die Schaltfläche, dann auf das entsprechende Objekt:
- </text>
- <button label="" label_selected="" name="pick_btn" tool_tip="Objektauswahl – Wählen Sie ein Objekt als Thema dieses Berichts aus"/>
- <text name="object_name_label">
- Objekt:
- </text>
- <text name="object_name">
- Consetetur Sadipscing
- </text>
- <text name="owner_name_label">
- Eigentümer:
- </text>
- <text name="owner_name">
- Hendrerit Vulputate
- </text>
- <combo_box name="category_combo" tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft">
- <combo_box.item label="Kategorie auswählen" name="Select_category"/>
- <combo_box.item label="Alter&gt; Age-Play" name="Age__Age_play"/>
- <combo_box.item label="Alter&gt; Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
- <combo_box.item label="Alter &gt; Minderjähriger Einwohner außerhalb Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
- <combo_box.item label="Angriff&gt; Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/>
- <combo_box.item label="Angriff&gt; Sichere Region" name="Assault__Safe_area"/>
- <combo_box.item label="Angriff &gt; Sandbox für Waffentest" name="Assault__Weapons_testing_sandbox"/>
- <combo_box.item label="Handel &gt; Produkt nicht geliefert oder Dienstleistung nicht erbracht" name="Commerce__Failure_to_deliver_product_or_service"/>
- <combo_box.item label="Offenlegung &gt; Informationen aus realer Welt" name="Disclosure__Real_world_information"/>
- <combo_box.item label="Offenlegung &gt; Abhören eines Chats aus der Ferne" name="Disclosure__Remotely_monitoring chat"/>
- <combo_box.item label="Offenlegung &gt; Second Life-Informationen/Chat/IMs" name="Disclosure__Second_Life_information_chat_IMs"/>
- <combo_box.item label="Ruhestörung &gt; Unfaire Nutzung von Regionsressourcen" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
- <combo_box.item label="Ruhestörung &gt; Exzessive Nutzung geskripteter Objekte" name="Disturbing_the_peace__Excessive_scripted_objects"/>
- <combo_box.item label="Ruhestörung &gt; Wildes Erzeugen von Objekten" name="Disturbing_the_peace__Object_littering"/>
- <combo_box.item label="Ruhestörung &gt; Ständige Spam-Wiederholung" name="Disturbing_the_peace__Repetitive_spam"/>
- <combo_box.item label="Ruhestörung &gt; Unerwünschte Spam-Werbung" name="Disturbing_the_peace__Unwanted_advert_spam"/>
- <combo_box.item label="Betrug &gt; L$" name="Fraud__L$"/>
- <combo_box.item label="Betrug&gt; Land" name="Fraud__Land"/>
- <combo_box.item label="Betrug &gt; Schneeballsystem oder Kettenbrief" name="Fraud__Pyramid_scheme_or_chain_letter"/>
- <combo_box.item label="Betrug &gt; US$" name="Fraud__US$"/>
- <combo_box.item label="Belästigung &gt; Werbefarmen / visueller Spam" name="Harassment__Advert_farms___visual_spam"/>
- <combo_box.item label="Belästigung &gt; Diffamieren von Einzelpersonen/Gruppen" name="Harassment__Defaming_individuals_or_groups"/>
- <combo_box.item label="Belästigung &gt; Bewegungseinschränkung" name="Harassment__Impeding_movement"/>
- <combo_box.item label="Belästigung &gt; Sexuelle Belästigung" name="Harassment__Sexual_harassment"/>
- <combo_box.item label="Belästigung &gt; Anstiften Dritter zur Missachtung der Nutzungsbedingungen" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
- <combo_box.item label="Belästigung &gt; Beschimpfung" name="Harassment__Verbal_abuse"/>
- <combo_box.item label="Unanständigkeit &gt; Anstößige Inhalte oder Handlungen in der Öffentlichkeit" name="Indecency__Broadly_offensive_content_or_conduct"/>
- <combo_box.item label="Unanständigkeit &gt; Anstößiger Avatarname" name="Indecency__Inappropriate_avatar_name"/>
- <combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in PG-Region" name="Indecency__Mature_content_in_PG_region"/>
- <combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in Mature-Region" name="Indecency__Inappropriate_content_in_Mature_region"/>
- <combo_box.item label="Urheberrechtsverletzung &gt; Entfernen von Inhalten" name="Intellectual_property_infringement_Content_Removal"/>
- <combo_box.item label="Urheberrechtsverletzung &gt; CopyBot oder Berechtigungs-Exploit" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
- <combo_box.item label="Intoleranz" name="Intolerance"/>
- <combo_box.item label="Land &gt; Missbrauch der Sandbox-Ressourcen" name="Land__Abuse_of_sandbox_resources"/>
- <combo_box.item label="Land &gt; Unbefugte Nutzung &gt; Objekte/Texturen" name="Land__Encroachment__Objects_textures"/>
- <combo_box.item label="Land &gt; Unbefugte Nutzung &gt; Partikel" name="Land__Encroachment__Particles"/>
- <combo_box.item label="Land &gt; Unbefugte Nutzung &gt; Bäume/Pflanzen" name="Land__Encroachment__Trees_plants"/>
- <combo_box.item label="Wetten/Glücksspiel" name="Wagering_gambling"/>
- <combo_box.item label="Sonstige" name="Other"/>
- </combo_box>
- <text name="abuser_name_title">
- Name des Beschuldigten:
- </text>
- <button label="Auswählen" label_selected="" name="select_abuser" tool_tip="Den Namen des Beschuldigten aus einer Liste wählen"/>
- <text name="abuser_name_title2">
- Ort des Missbrauchs:
- </text>
- <text name="sum_title">
- Zusammenfassung:
- </text>
- <text name="dscr_title">
- Details:
- </text>
- <text name="bug_aviso">
- Bitte beschreiben Sie so genau wie möglich.
- </text>
- <text_editor bottom_delta="-136" height="130" name="details_edit"/>
- <text bottom_delta="-20" name="incomplete_title">
- Hinweis: Unvollständige Meldungen werden nicht bearbeitet.
- </text>
- <button label="Missbrauch melden" label_selected="Missbrauch melden" name="send_btn"/>
- <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="MISSBRAUCH MELDEN">
+ <floater.string name="Screenshot">
+ Foto
+ </floater.string>
+ <check_box bottom_delta="-20" label="Dieses Foto verwenden" name="screen_check"/>
+ <text name="reporter_title">
+ Melder:
+ </text>
+ <text name="reporter_field">
+ Loremipsum Dolorsitamut
+ </text>
+ <text name="sim_title">
+ Region:
+ </text>
+ <text name="sim_field">
+ Name der Region
+ </text>
+ <text name="pos_title">
+ Position:
+ </text>
+ <text name="pos_field">
+ {128.1, 128.1, 15.4}
+ </text>
+ <text bottom_delta="-38" height="32" name="select_object_label">
+ Klicken Sie auf die Schaltfläche, dann auf das entsprechende Objekt:
+ </text>
+ <button label="" label_selected="" name="pick_btn" tool_tip="Objektauswahl – Wählen Sie ein Objekt als Thema dieses Berichts aus"/>
+ <text name="object_name_label">
+ Objekt:
+ </text>
+ <text name="object_name">
+ Consetetur Sadipscing
+ </text>
+ <text name="owner_name_label">
+ Eigentümer:
+ </text>
+ <text name="owner_name">
+ Hendrerit Vulputate
+ </text>
+ <combo_box name="category_combo" tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft">
+ <combo_box.item label="Kategorie auswählen" name="Select_category"/>
+ <combo_box.item label="Alter&gt; Age-Play" name="Age__Age_play"/>
+ <combo_box.item label="Alter&gt; Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Alter &gt; Minderjähriger Einwohner außerhalb Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Angriff&gt; Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Angriff&gt; Sichere Region" name="Assault__Safe_area"/>
+ <combo_box.item label="Angriff &gt; Sandbox für Waffentest" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Handel &gt; Produkt nicht geliefert oder Dienstleistung nicht erbracht" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="Offenlegung &gt; Informationen aus realer Welt" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="Offenlegung &gt; Abhören eines Chats aus der Ferne" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="Offenlegung &gt; Second Life-Informationen/Chat/IMs" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Ruhestörung &gt; Unfaire Nutzung von Regionsressourcen" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Ruhestörung &gt; Exzessive Nutzung geskripteter Objekte" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Ruhestörung &gt; Wildes Erzeugen von Objekten" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Ruhestörung &gt; Ständige Spam-Wiederholung" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Ruhestörung &gt; Unerwünschte Spam-Werbung" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Betrug &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Betrug&gt; Land" name="Fraud__Land"/>
+ <combo_box.item label="Betrug &gt; Schneeballsystem oder Kettenbrief" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Betrug &gt; US$" name="Fraud__US$"/>
+ <combo_box.item label="Belästigung &gt; Werbefarmen / visueller Spam" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Belästigung &gt; Diffamieren von Einzelpersonen/Gruppen" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Belästigung &gt; Bewegungseinschränkung" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Belästigung &gt; Sexuelle Belästigung" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Belästigung &gt; Anstiften Dritter zur Missachtung der Nutzungsbedingungen" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Belästigung &gt; Beschimpfung" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Unanständigkeit &gt; Anstößige Inhalte oder Handlungen in der Öffentlichkeit" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Unanständigkeit &gt; Anstößiger Avatarname" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in PG-Region" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Unanständigkeit &gt; Unangemessener Inhalt oder unangemessenes Verhalten in Mature-Region" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Urheberrechtsverletzung &gt; Entfernen von Inhalten" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Urheberrechtsverletzung &gt; CopyBot oder Berechtigungs-Exploit" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Intoleranz" name="Intolerance"/>
+ <combo_box.item label="Land &gt; Missbrauch der Sandbox-Ressourcen" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Land &gt; Unbefugte Nutzung &gt; Objekte/Texturen" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Land &gt; Unbefugte Nutzung &gt; Partikel" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Land &gt; Unbefugte Nutzung &gt; Bäume/Pflanzen" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Wetten/Glücksspiel" name="Wagering_gambling"/>
+ <combo_box.item label="Sonstige" name="Other"/>
+ </combo_box>
+ <text name="abuser_name_title">
+ Name des Beschuldigten:
+ </text>
+ <button label="Auswählen" label_selected="" name="select_abuser" tool_tip="Den Namen des Beschuldigten aus einer Liste wählen"/>
+ <text name="abuser_name_title2">
+ Ort des Missbrauchs:
+ </text>
+ <text name="sum_title">
+ Zusammenfassung:
+ </text>
+ <text name="dscr_title">
+ Details:
+ </text>
+ <text name="bug_aviso">
+ Bitte beschreiben Sie so genau wie möglich.
+ </text>
+ <text_editor bottom_delta="-136" height="130" name="details_edit"/>
+ <text bottom_delta="-20" name="incomplete_title">
+ Hinweis: Unvollständige Meldungen werden nicht bearbeitet.
+ </text>
+ <button label="Missbrauch melden" label_selected="Missbrauch melden" name="send_btn"/>
+ <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml
index fc805e879b..ef021ce713 100644
--- a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml
+++ b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script" short_title="[All scripts]" title="[All scripts]"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[All scripts]" title="[All scripts]"/>
diff --git a/indra/newview/skins/default/xui/de/floater_script_preview.xml b/indra/newview/skins/default/xui/de/floater_script_preview.xml
index 1d6def4602..a895a32e14 100644
--- a/indra/newview/skins/default/xui/de/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_script_preview.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview lsl text" title="SKRIPT: ROTATIONSSKRIPT">
- <floater.string name="Title">
- Skript: [NAME]
- </floater.string>
- <text name="desc txt">
- Beschreibung:
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="SKRIPT: ROTATIONSSKRIPT">
+ <floater.string name="Title">
+ Skript: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Beschreibung:
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_script_queue.xml b/indra/newview/skins/default/xui/de/floater_script_queue.xml
index d5dc7a0fd7..4c82aabd47 100644
--- a/indra/newview/skins/default/xui/de/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/de/floater_script_queue.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="RÜCKGÄNGIG">
- <floater.string name="Starting">
- [START] von [COUNT] Artikeln.
- </floater.string>
- <floater.string name="Done">
- Fertig.
- </floater.string>
- <floater.string name="Resetting">
- Wird zurückgesetzt
- </floater.string>
- <floater.string name="Running">
- Läuft
- </floater.string>
- <floater.string name="NotRunning">
- Läuft nicht
- </floater.string>
- <button label="Schließen" label_selected="Schließen" left="215" name="close" width="72"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="RÜCKGÄNGIG">
+ <floater.string name="Starting">
+ [START] von [COUNT] Artikeln.
+ </floater.string>
+ <floater.string name="Done">
+ Fertig.
+ </floater.string>
+ <floater.string name="Resetting">
+ Wird zurückgesetzt
+ </floater.string>
+ <floater.string name="Running">
+ Läuft
+ </floater.string>
+ <floater.string name="NotRunning">
+ Läuft nicht
+ </floater.string>
+ <button label="Schließen" label_selected="Schließen" left="215" name="close" width="72"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml
index 82da881a54..6a5f03c661 100644
--- a/indra/newview/skins/default/xui/de/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sell land" title="LAND VERKAUFEN">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- Parzelle:
- </text>
- <text bottom_delta="-5" height="16" name="info_parcel">
- PARZELLENNAME
- </text>
- <text name="info_size_label">
- Größe:
- </text>
- <text bottom_delta="-21" height="32" name="info_size">
- [AREA] qm
- </text>
- <text bottom_delta="-57" height="28" name="info_action">
- Zum Verkauf
-dieser Parzelle:
- </text>
- <icon bottom_delta="-80" name="step_price"/>
- <text name="price_label">
- Preis festlegen:
- </text>
- <text name="price_text">
- Einen angemessenen Preis auswählen.
- </text>
- <text name="price_ld">
- L$
- </text>
- <text name="price_per_m">
- ([PER_METER] L$ pro Quadratmeter)
- </text>
- <icon height="64" left="0" name="step_sell_to" width="64"/>
- <text bottom_delta="38" left="72" name="sell_to_label" right="-20">
- Land verkaufen an:
- </text>
- <text bottom_delta="-16" height="16" left="72" name="sell_to_text" right="-10">
- Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person
-beschränkt ist.
- </text>
- <combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140">
- <combo_box.item label="select one --" name="--selectone--"/>
- <combo_box.item label="Jeder" name="Anyone"/>
- <combo_box.item label="Bestimmte Person:" name="Specificuser:"/>
- </combo_box>
- <button label="Auswählen..." name="sell_to_select_agent"/>
- <text name="sell_objects_label">
- Die Objekte mit dem Land verkaufen?
- </text>
- <text name="sell_objects_text">
- Die transferierbaren Landeigentümer-Objekte auf der Parzelle
-wechseln den Eigentümer.
- </text>
- <radio_group bottom_delta="-58" name="sell_objects">
- <radio_item label="Nein, Objekte behalten" name="no"/>
- <radio_item label="Ja, Objekte mit Land verkaufen" name="yes"/>
- </radio_group>
- <button label="Objekte anzeigen" name="show_objects" width="116"/>
- <text name="nag_message_label">
- ACHTUNG: Verkäufe sind endgültig.
- </text>
- <button label="Land zum Verkauf freigeben" name="sell_btn" width="180"/>
- <button label="Abbrechen" name="cancel_btn"/>
- </panel>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sell land" title="LAND VERKAUFEN">
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Parzelle:
+ </text>
+ <text bottom_delta="-5" height="16" name="info_parcel">
+ PARZELLENNAME
+ </text>
+ <text name="info_size_label">
+ Größe:
+ </text>
+ <text bottom_delta="-21" height="32" name="info_size">
+ [AREA] qm
+ </text>
+ <text bottom_delta="-57" height="28" name="info_action">
+ Zum Verkauf
+dieser Parzelle:
+ </text>
+ <icon bottom_delta="-80" name="step_price"/>
+ <text name="price_label">
+ Preis festlegen:
+ </text>
+ <text name="price_text">
+ Einen angemessenen Preis auswählen.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <text name="price_per_m">
+ ([PER_METER] L$ pro Quadratmeter)
+ </text>
+ <icon height="64" left="0" name="step_sell_to" width="64"/>
+ <text bottom_delta="38" left="72" name="sell_to_label" right="-20">
+ Land verkaufen an:
+ </text>
+ <text bottom_delta="-16" height="16" left="72" name="sell_to_text" right="-10">
+ Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person
+beschränkt ist.
+ </text>
+ <combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140">
+ <combo_box.item label="select one --" name="--selectone--"/>
+ <combo_box.item label="Jeder" name="Anyone"/>
+ <combo_box.item label="Bestimmte Person:" name="Specificuser:"/>
+ </combo_box>
+ <button label="Auswählen..." name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ Die Objekte mit dem Land verkaufen?
+ </text>
+ <text name="sell_objects_text">
+ Die transferierbaren Landeigentümer-Objekte auf der Parzelle
+wechseln den Eigentümer.
+ </text>
+ <radio_group bottom_delta="-58" name="sell_objects">
+ <radio_item label="Nein, Objekte behalten" name="no"/>
+ <radio_item label="Ja, Objekte mit Land verkaufen" name="yes"/>
+ </radio_group>
+ <button label="Objekte anzeigen" name="show_objects" width="116"/>
+ <text name="nag_message_label">
+ ACHTUNG: Verkäufe sind endgültig.
+ </text>
+ <button label="Land zum Verkauf freigeben" name="sell_btn" width="180"/>
+ <button label="Abbrechen" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_settings_debug.xml b/indra/newview/skins/default/xui/de/floater_settings_debug.xml
index f9a944165f..004e54a339 100644
--- a/indra/newview/skins/default/xui/de/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/de/floater_settings_debug.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="DEBUG-EINSTELLUNGEN">
- <combo_box name="boolean_combo">
- <combo_box.item label="WAHR" name="TRUE"/>
- <combo_box.item label="FALSCH" name="FALSE"/>
- </combo_box>
- <color_swatch label="Farbe" name="val_color_swatch"/>
- <spinner label="x" name="val_spinner_1"/>
- <spinner label="x" name="val_spinner_2"/>
- <spinner label="x" name="val_spinner_3"/>
- <spinner label="x" name="val_spinner_4"/>
- <button label="Standard wiederherstellen" name="default_btn" width="170"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="DEBUG-EINSTELLUNGEN">
+ <combo_box name="boolean_combo">
+ <combo_box.item label="WAHR" name="TRUE"/>
+ <combo_box.item label="FALSCH" name="FALSE"/>
+ </combo_box>
+ <color_swatch label="Farbe" name="val_color_swatch"/>
+ <spinner label="x" name="val_spinner_1"/>
+ <spinner label="x" name="val_spinner_2"/>
+ <spinner label="x" name="val_spinner_3"/>
+ <spinner label="x" name="val_spinner_4"/>
+ <button label="Standard wiederherstellen" name="default_btn" width="170"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml
index 38494faf16..9aa0c028af 100644
--- a/indra/newview/skins/default/xui/de/floater_stats.xml
+++ b/indra/newview/skins/default/xui/de/floater_stats.xml
@@ -1,71 +1,71 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="Statistik">
- <scroll_container name="statistics_scroll">
- <container_view name="statistics_view">
- <stat_view label="Basic" name="basic">
- <stat_bar label="FPS" name="fps"/>
- <stat_bar label="Bandbreite" name="bandwidth"/>
- <stat_bar label="Paketverlust" name="packet_loss"/>
- <stat_bar label="Ping Sim" name="ping"/>
- </stat_view>
- <stat_view label="Erweitert" name="advanced">
- <stat_view label="Darstellung" name="render">
- <stat_bar label="Gezeichnete KTris" name="ktrisframe"/>
- <stat_bar label="Gezeichnete KTris" name="ktrissec"/>
- <stat_bar label="Objektanzahl" name="objs"/>
- <stat_bar label="Neue Objekte" name="newobjs"/>
- </stat_view>
- <stat_view label="Textur" name="texture">
- <stat_bar label="Zählen" name="numimagesstat"/>
- <stat_bar label="Rohanzahl" name="numrawimagesstat"/>
- <stat_bar label="GL Sp" name="gltexmemstat"/>
- <stat_bar label="Formattierter Sp:" name="formattedmemstat"/>
- <stat_bar label="Rohsp" name="rawmemstat"/>
- <stat_bar label="Zugeteilter Sp" name="glboundmemstat"/>
- </stat_view>
- <stat_view label="Netzwerk" name="network">
- <stat_bar label="Paketeingang" name="packetsinstat"/>
- <stat_bar label="Paketausgang" name="packetsoutstat"/>
- <stat_bar label="Objekte" name="objectkbitstat"/>
- <stat_bar label="Textur" name="texturekbitstat"/>
- <stat_bar label="Bestand" name="assetkbitstat"/>
- <stat_bar label="Ebenen" name="layerskbitstat"/>
- <stat_bar label="Tatsächlicher Eingang" name="actualinkbitstat"/>
- <stat_bar label="Tatsächlicher Ausgang" name="actualoutkbitstat"/>
- <stat_bar label="VFS Ausstehende Ops" name="vfspendingoperations"/>
- </stat_view>
- </stat_view>
- <stat_view label="Simulator" name="sim">
- <stat_bar label="Zeitdilation" name="simtimedilation"/>
- <stat_bar label="Sim FPS" name="simfps"/>
- <stat_bar label="Physik FPS" name="simphysicsfps"/>
- <stat_view label="Physikdetails" name="physicsdetail">
- <stat_bar label="Eingerastete Objekte" name="physicspinnedtasks"/>
- <stat_bar label="Niedrig LOD-Objekte" name="physicslodtasks"/>
- <stat_bar label="Zugeordneter Speicher" name="physicsmemoryallocated"/>
- <stat_bar label="Agent Updates/Sek" name="simagentups"/>
- <stat_bar label="Haupt-Agenten" name="simmainagents"/>
- <stat_bar label="Child-Agenten" name="simchildagents"/>
- <stat_bar label="Objekte" name="simobjects"/>
- <stat_bar label="Aktive Objekte" name="simactiveobjects"/>
- <stat_bar label="Aktive Skripts" name="simactivescripts"/>
- <stat_bar label="Skript-Events" name="simscripteps"/>
- <stat_bar label="Paketeingang" name="siminpps"/>
- <stat_bar label="Paketausgang" name="simoutpps"/>
- <stat_bar label="Ausstehende Downloads" name="simpendingdownloads"/>
- <stat_bar label="Ausstehende Uploads" name="simpendinguploads"/>
- <stat_bar label="Gesamtanzahl „Unacked&quot; Bytes" name="simtotalunackedbytes"/>
- </stat_view>
- <stat_view label="Zeit (ms)" name="simperf">
- <stat_bar label="Gesamtzeit Frame" name="simframemsec"/>
- <stat_bar label="Netto-Zeit" name="simnetmsec"/>
- <stat_bar label="Physik-Zeit" name="simsimphysicsmsec"/>
- <stat_bar label="Simulationszeit" name="simsimothermsec"/>
- <stat_bar label="Agent-Zeit" name="simagentmsec"/>
- <stat_bar label="Bilder-Zeit" name="simimagesmsec"/>
- <stat_bar label="Skript-Zeit" name="simscriptmsec"/>
- </stat_view>
- </stat_view>
- </container_view>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="Statistik">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Basic" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="Bandbreite" name="bandwidth"/>
+ <stat_bar label="Paketverlust" name="packet_loss"/>
+ <stat_bar label="Ping Sim" name="ping"/>
+ </stat_view>
+ <stat_view label="Erweitert" name="advanced">
+ <stat_view label="Darstellung" name="render">
+ <stat_bar label="Gezeichnete KTris" name="ktrisframe"/>
+ <stat_bar label="Gezeichnete KTris" name="ktrissec"/>
+ <stat_bar label="Objektanzahl" name="objs"/>
+ <stat_bar label="Neue Objekte" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Textur" name="texture">
+ <stat_bar label="Zählen" name="numimagesstat"/>
+ <stat_bar label="Rohanzahl" name="numrawimagesstat"/>
+ <stat_bar label="GL Sp" name="gltexmemstat"/>
+ <stat_bar label="Formattierter Sp:" name="formattedmemstat"/>
+ <stat_bar label="Rohsp" name="rawmemstat"/>
+ <stat_bar label="Zugeteilter Sp" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Netzwerk" name="network">
+ <stat_bar label="Paketeingang" name="packetsinstat"/>
+ <stat_bar label="Paketausgang" name="packetsoutstat"/>
+ <stat_bar label="Objekte" name="objectkbitstat"/>
+ <stat_bar label="Textur" name="texturekbitstat"/>
+ <stat_bar label="Bestand" name="assetkbitstat"/>
+ <stat_bar label="Ebenen" name="layerskbitstat"/>
+ <stat_bar label="Tatsächlicher Eingang" name="actualinkbitstat"/>
+ <stat_bar label="Tatsächlicher Ausgang" name="actualoutkbitstat"/>
+ <stat_bar label="VFS Ausstehende Ops" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Simulator" name="sim">
+ <stat_bar label="Zeitdilation" name="simtimedilation"/>
+ <stat_bar label="Sim FPS" name="simfps"/>
+ <stat_bar label="Physik FPS" name="simphysicsfps"/>
+ <stat_view label="Physikdetails" name="physicsdetail">
+ <stat_bar label="Eingerastete Objekte" name="physicspinnedtasks"/>
+ <stat_bar label="Niedrig LOD-Objekte" name="physicslodtasks"/>
+ <stat_bar label="Zugeordneter Speicher" name="physicsmemoryallocated"/>
+ <stat_bar label="Agent Updates/Sek" name="simagentups"/>
+ <stat_bar label="Haupt-Agenten" name="simmainagents"/>
+ <stat_bar label="Child-Agenten" name="simchildagents"/>
+ <stat_bar label="Objekte" name="simobjects"/>
+ <stat_bar label="Aktive Objekte" name="simactiveobjects"/>
+ <stat_bar label="Aktive Skripts" name="simactivescripts"/>
+ <stat_bar label="Skript-Events" name="simscripteps"/>
+ <stat_bar label="Paketeingang" name="siminpps"/>
+ <stat_bar label="Paketausgang" name="simoutpps"/>
+ <stat_bar label="Ausstehende Downloads" name="simpendingdownloads"/>
+ <stat_bar label="Ausstehende Uploads" name="simpendinguploads"/>
+ <stat_bar label="Gesamtanzahl „Unacked&quot; Bytes" name="simtotalunackedbytes"/>
+ </stat_view>
+ <stat_view label="Zeit (ms)" name="simperf">
+ <stat_bar label="Gesamtzeit Frame" name="simframemsec"/>
+ <stat_bar label="Netto-Zeit" name="simnetmsec"/>
+ <stat_bar label="Physik-Zeit" name="simsimphysicsmsec"/>
+ <stat_bar label="Simulationszeit" name="simsimothermsec"/>
+ <stat_bar label="Agent-Zeit" name="simagentmsec"/>
+ <stat_bar label="Bilder-Zeit" name="simimagesmsec"/>
+ <stat_bar label="Skript-Zeit" name="simscriptmsec"/>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index b458d922ba..f4d1bb4d54 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -1,480 +1,480 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" short_title="Bau-Werkzeuge" title="">
- <floater.string name="status_rotate">
- An den farbigen Bändern ziehen, um das Objekt zu drehen
- </floater.string>
- <floater.string name="status_scale">
- Klicken und ziehen, um die ausgewählte Seite zu dehnen
- </floater.string>
- <floater.string name="status_move">
- Maus verschiebt, Umschalt-Taste und Maus kopiert
- </floater.string>
- <floater.string name="status_modifyland">
- Klicken und halten, um das Land zu bearbeiten
- </floater.string>
- <floater.string name="status_camera">
- Klicken und ziehen, um Kamera zu bewegen
- </floater.string>
- <floater.string name="status_grab">
- Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg-Umschalt zum Drehen
- </floater.string>
- <floater.string name="status_place">
- Inworld klicken, um zu bauen.
- </floater.string>
- <floater.string name="status_selectland">
- Klicken und ziehen, um Land auszuwählen
- </floater.string>
- <floater.string name="grid_screen_text">
- Bildschirm
- </floater.string>
- <floater.string name="grid_local_text">
- Lokal
- </floater.string>
- <floater.string name="grid_world_text">
- Welt
- </floater.string>
- <floater.string name="grid_reference_text">
- Referenz
- </floater.string>
- <floater.string name="grid_attachment_text">
- Anhang
- </floater.string>
- <button label="" label_selected="" name="button focus" tool_tip="Fokus"/>
- <button label="" label_selected="" name="button move" tool_tip="Verschieben"/>
- <button label="" label_selected="" name="button edit" tool_tip="Bearbeiten"/>
- <button label="" label_selected="" name="button create" tool_tip="Erstellen"/>
- <button label="" label_selected="" name="button land" tool_tip="Land"/>
- <text name="text status">
- Zum Verschieben ziehen, zum Kopieren Umschalttaste-Ziehen
- </text>
- <radio_group name="focus_radio_group">
- <radio_item label="Zoom" name="radio zoom"/>
- <radio_item label="Orbit (Strg)" name="radio orbit"/>
- <radio_item label="Schwenken (Strg-Umschalt)" name="radio pan"/>
- </radio_group>
- <radio_group name="move_radio_group">
- <radio_item label="Verschieben" name="radio move"/>
- <radio_item label="Heben (Strg)" name="radio lift"/>
- <radio_item label="Rotieren (Strg-Umschalt)" name="radio spin"/>
- </radio_group>
- <radio_group name="edit_radio_group">
- <radio_item label="Bewegen" name="radio position"/>
- <radio_item label="Drehen (Strg)" name="radio rotate"/>
- <radio_item label="Dehnen (Strg-Umschalt)" name="radio stretch"/>
- <radio_item label="Textur auswählen" name="radio select face"/>
- </radio_group>
- <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
- <check_box label="Beide Seiten dehnen" name="checkbox uniform"/>
- <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures"/>
- <check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid"/>
- <combo_box name="combobox grid mode">
- <combo_box.item label="Welt-Lineal" name="World"/>
- <combo_box.item label="Lokal-Lineal" name="Local"/>
- <combo_box.item label="Referenz-Lineal" name="Reference"/>
- </combo_box>
- <button label="Optionen..." label_selected="Optionen..." name="Options..." tool_tip="Grid-Optionen einstellen"/>
- <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/>
- <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
- <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/>
- <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraeder"/>
- <button label="" label_selected="" name="ToolCylinder" tool_tip="Zylinder"/>
- <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halbzylinder"/>
- <button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/>
- <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halbkegel"/>
- <button label="" label_selected="" name="ToolSphere" tool_tip="Kugel"/>
- <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halbkugel"/>
- <button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/>
- <button label="" label_selected="" name="ToolTube" tool_tip="Rohr"/>
- <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/>
- <button label="" label_selected="" name="ToolTree" tool_tip="Baum"/>
- <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/>
- <check_box label="Ausgewähltes Werkzeug beibehalten" name="checkbox sticky"/>
- <check_box label="Auswahl kopieren" name="checkbox copy selection"/>
- <check_box initial_value="true" label="Kopie zentrieren" name="checkbox copy centers"/>
- <check_box label="Kopie drehen" name="checkbox copy rotates"/>
- <radio_group name="land_radio_group">
- <radio_item label="Land auswählen" name="radio select land"/>
- <radio_item label="Einebnen" name="radio flatten"/>
- <radio_item label="Anheben" name="radio raise"/>
- <radio_item label="Absenken" name="radio lower"/>
- <radio_item label="Glätten" name="radio smooth"/>
- <radio_item label="Aufrauen" name="radio noise"/>
- <radio_item label="Zurücksetzen" name="radio revert"/>
- </radio_group>
- <text name="Bulldozer:">
- Planierraupe:
- </text>
- <text name="Dozer Size:">
- Größe
- </text>
- <text name="Strength:">
- Stärke
- </text>
- <button label="Übernehmen" label_selected="Übernehmen" name="button apply to selection" tool_tip="Ausgewähltes Land ändern"/>
- <text name="obj_count">
- Objekte: [COUNT]
- </text>
- <text name="prim_count">
- Primitive: [COUNT]
- </text>
- <tab_container name="Object Info Tabs">
- <panel label="Allgemein" name="General">
- <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 ändern
- </panel.string>
- <panel.string name="text modify info 2">
- Sie können diese Objekte ändern
- </panel.string>
- <panel.string name="text modify info 3">
- Sie können dieses Objekt nicht ändern
- </panel.string>
- <panel.string name="text modify info 4">
- Sie können diese Objekte nicht ändern
- </panel.string>
- <panel.string name="text modify warning">
- Gesamtes Objekt wählen, um Berechtigungen festzulegen.
- </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>
- <text name="Name:">
- Name:
- </text>
- <text name="Description:">
- Beschreibung:
- </text>
- <text name="Creator:">
- Ersteller:
- </text>
- <text name="Creator Name">
- Thrax Linden
- </text>
- <text name="Owner:">
- Eigentümer:
- </text>
- <text name="Owner Name">
- Thrax Linden
- </text>
- <text name="Group:">
- Gruppe:
- </text>
- <button label="Festlegen..." label_selected="Festlegen..." 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."/>
- <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="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 sitzen" name="Sitonobject"/>
- <combo_box.item label="Objekt kaufen" name="Buyobject"/>
- <combo_box.item label="Objekt bezahlen" name="Payobject"/>
- <combo_box.item label="Öffnen" name="Open"/>
- </combo_box>
- <check_box label="Zum Verkauf:" name="checkbox for sale"/>
- <combo_box name="sale type">
- <combo_box.item label="Kopieren" 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"/>
- <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/>
- <panel name="perms_build">
- <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"/>
- <text name="Next owner can:">
- Nächster Eigentümer:
- </text>
- <check_box label="Ändern" 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"/>
- <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>
- <panel label="Objekt" name="Object">
- <check_box label="Gesperrt" name="checkbox locked" tool_tip="Verhindert, dass Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden."/>
- <check_box label="Physisch" name="Physical Checkbox Ctrl" tool_tip="Gestattet, das Objekt geschoben und von Schwerkraft beeinflusst wird"/>
- <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Verursacht, dass Objekt 1 Minute nach Erstellung gelöscht wird."/>
- <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert"/>
- <text name="label position">
- Position (Meter)
- </text>
- <spinner label="X" name="Pos X"/>
- <spinner label="Y" name="Pos Y"/>
- <spinner label="Z" name="Pos Z"/>
- <text name="label size">
- Größe (Meter)
- </text>
- <spinner label="X" name="Scale X"/>
- <spinner label="Y" name="Scale Y"/>
- <spinner label="Z" name="Scale Z"/>
- <text name="label rotation">
- Rotation (Grad)
- </text>
- <spinner label="X" name="Rot X"/>
- <spinner label="Y" name="Rot Y"/>
- <spinner label="Z" name="Rot Z"/>
- <combo_box name="comboBaseType">
- <combo_box.item label="Quader" name="Box"/>
- <combo_box.item label="Zylinder" name="Cylinder"/>
- <combo_box.item label="Prisma" name="Prism"/>
- <combo_box.item label="Kugel" name="Sphere"/>
- <combo_box.item label="Torus" name="Torus"/>
- <combo_box.item label="Rohr" name="Tube"/>
- <combo_box.item label="Ring" name="Ring"/>
- <combo_box.item label="Geformt" name="Sculpted"/>
- </combo_box>
- <combo_box name="material">
- <combo_box.item label="Stein" name="Stone"/>
- <combo_box.item label="Metall" name="Metal"/>
- <combo_box.item label="Glas" name="Glass"/>
- <combo_box.item label="Holz" name="Wood"/>
- <combo_box.item label="Fleisch" name="Flesh"/>
- <combo_box.item label="Kunststoff" name="Plastic"/>
- <combo_box.item label="Gummi" name="Rubber"/>
- </combo_box>
- <text name="text cut">
- Pfadschnitt (Anfang/Ende)
- </text>
- <spinner label="B" name="cut begin"/>
- <spinner label="E" name="cut end"/>
- <text name="text hollow">
- Hohl
- </text>
- <text name="text skew">
- Versatz
- </text>
- <spinner name="Scale 1"/>
- <spinner name="Skew"/>
- <text name="Hollow Shape">
- Hohlform
- </text>
- <combo_box name="hole">
- <combo_box.item label="Standard" name="Default"/>
- <combo_box.item label="Kreis" name="Circle"/>
- <combo_box.item label="Quadrat" name="Square"/>
- <combo_box.item label="Dreieck" name="Triangle"/>
- </combo_box>
- <text name="text twist">
- Torsion (Anfang/Ende)
- </text>
- <spinner label="B" name="Twist Begin"/>
- <spinner label="E" name="Twist End"/>
- <text name="scale_taper">
- Verjüngung
- </text>
- <text name="scale_hole">
- Lochgröße
- </text>
- <spinner label="X" name="Taper Scale X"/>
- <spinner label="Y" name="Taper Scale Y"/>
- <text name="text topshear">
- Verscherung
- </text>
- <spinner label="X" name="Shear X"/>
- <spinner label="Y" name="Shear Y"/>
- <text name="advanced_cut">
- Profilschnitt (Anfang/Ende)
- </text>
- <text name="advanced_dimple">
- Vertiefung (Anfang/Ende)
- </text>
- <text name="advanced_slice">
- Abschneiden (Anfang/Ende)
- </text>
- <spinner label="B" name="Path Limit Begin"/>
- <spinner label="E" name="Path Limit End"/>
- <text name="text taper2">
- Verjüngung
- </text>
- <spinner label="X" name="Taper X"/>
- <spinner label="Y" name="Taper Y"/>
- <text name="text radius delta">
- Radius
- </text>
- <text name="text revolutions">
- Umdrehungen
- </text>
- <spinner name="Radius Offset"/>
- <texture_picker label="Textur für gestaltetes Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
- <check_box label="Spiegeln" name="sculpt mirror control" tool_tip="Geformtes Primitiv entlang der X-Achse spiegeln."/>
- <check_box label="Wenden" name="sculpt invert control" tool_tip="Dreht die Normalen des geformten Primitivs von innen nach außen."/>
- <text name="label sculpt type">
- Naht
- </text>
- <combo_box name="sculpt type control">
- <combo_box.item label="(keiner)" name="None"/>
- <combo_box.item label="Kugel" name="Sphere"/>
- <combo_box.item label="Torus" name="Torus"/>
- <combo_box.item label="Fläche" name="Plane"/>
- <combo_box.item label="Zylinder" name="Cylinder"/>
- </combo_box>
- </panel>
- <panel label="Eigenschaften" name="Features">
- <text name="select_single">
- Wählen Sie nur einen einzelnen Baustein aus, um Eigenschaften zu bearbeiten.
- </text>
- <text name="edit_object">
- Objekteigenschaften bearbeiten:
- </text>
- <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)"/>
- <spinner label="Weichheit" name="FlexNumSections"/>
- <spinner label="Schwerkraft" name="FlexGravity"/>
- <spinner label="Ziehen" name="FlexFriction"/>
- <spinner label="Wind" name="FlexWind"/>
- <spinner label="Spannung" name="FlexTension"/>
- <spinner label="Erzwingen X" name="FlexForceX"/>
- <spinner label="Erzwingen Y" name="FlexForceY"/>
- <spinner label="Erzwingen Z" name="FlexForceZ"/>
- <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/>
- <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/>
- <spinner label="Intensität" name="Light Intensity"/>
- <spinner label="Radius" name="Light Radius"/>
- <spinner label="Abnehmend" name="Light Falloff"/>
- </panel>
- <panel label="Textur" name="Texture">
- <panel.string name="string repeats per meter">
- Kacheln pro Meter
- </panel.string>
- <panel.string name="string repeats per face">
- Wiederholungen pro Fläche
- </panel.string>
- <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/>
- <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/>
- <text name="color trans">
- Transparenz %
- </text>
- <text name="glow label">
- Leuchten
- </text>
- <check_box label="Ganz hell" name="checkbox fullbright"/>
- <text name="tex gen">
- Zuordnung
- </text>
- <combo_box name="combobox texgen">
- <combo_box.item label="Standard" name="Default"/>
- <combo_box.item label="Eben" name="Planar"/>
- </combo_box>
- <text name="label shininess">
- Glanz
- </text>
- <combo_box name="combobox shininess">
- <combo_box.item label="Kein" name="None"/>
- <combo_box.item label="Niedrig" name="Low"/>
- <combo_box.item label="Mittel" name="Medium"/>
- <combo_box.item label="Hoch" name="High"/>
- </combo_box>
- <text name="label bumpiness">
- Holprigkeit
- </text>
- <combo_box name="combobox bumpiness">
- <combo_box.item label="Keine" name="None"/>
- <combo_box.item label="Helligkeit" name="Brightness"/>
- <combo_box.item label="Dunkelheit" name="Darkness"/>
- <combo_box.item label="Holzmaserung" name="woodgrain"/>
- <combo_box.item label="Rinde" name="bark"/>
- <combo_box.item label="Ziegel" name="bricks"/>
- <combo_box.item label="Karo" name="checker"/>
- <combo_box.item label="Beton" name="concrete"/>
- <combo_box.item label="verkrustete Fliesen" name="crustytile"/>
- <combo_box.item label="Steinplatten" name="cutstone"/>
- <combo_box.item label="Scheiben" name="discs"/>
- <combo_box.item label="Kies" name="gravel"/>
- <combo_box.item label="Petrischale" name="petridish"/>
- <combo_box.item label="Verkleidung" name="siding"/>
- <combo_box.item label="Steinfliesen" name="stonetile"/>
- <combo_box.item label="Stuck" name="stucco"/>
- <combo_box.item label="Saugen" name="suction"/>
- <combo_box.item label="gewoben" name="weave"/>
- </combo_box>
- <text name="tex scale">
- Wiederholungen
- </text>
- <spinner label="Horizontal (U)" name="TexScaleU"/>
- <check_box label="Umkehren" name="checkbox flip s"/>
- <spinner label="Vertikal (V)" name="TexScaleV"/>
- <check_box label="Umkehren" name="checkbox flip t"/>
- <button label="Übernehmen" label_selected="Übernehmen" name="button apply"/>
- <text name="tex offset">
- Texture-Versatz
- </text>
- <spinner label="Horizontal (U)" name="TexOffsetU"/>
- <spinner label="Vertikal (V)" name="TexOffsetV"/>
- </panel>
- <panel label="Inhalt" name="Contents">
- <button label="Neues Skript" label_selected="Neues Skript" name="button new script"/>
- <button label="Berechtigungen" name="button permissions"/>
- </panel>
- </tab_container>
- <panel name="land info panel">
- <text name="label_parcel_info">
- Parzelleninformation
- </text>
- <text name="label_area_price">
- Preis: L$ [PRICE] für [AREA] m²
- </text>
- <text name="label_area">
- Fläche: [AREA] m²
- </text>
- <button label="Info zu Land..." label_selected="Info zu Land..." name="button about land"/>
- <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Parzellen nach Eigentümer farbig kennzeichnen:
-
-Grün = Ihr Land
-Blau = Das Land Ihrer Gruppe
-Rot = Im Eigentum anderer
-Geld = Zum Verkauf
-Lila = Zur Auktion
-Grau = Öffentlich"/>
- <text name="label_parcel_modify">
- Parzelle ändern
- </text>
- <button label="Unterteilen" label_selected="Unterteilen" name="button subdivide land"/>
- <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land"/>
- <text name="label_parcel_trans">
- Land-Transaktionen
- </text>
- <button label="Land kaufen" label_selected="Land kaufen" name="button buy land"/>
- <button label="Land aufgeben" label_selected="Land aufgeben" name="button abandon land"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="Bau-Werkzeuge" title="">
+ <floater.string name="status_rotate">
+ An den farbigen Bändern ziehen, um das Objekt zu drehen
+ </floater.string>
+ <floater.string name="status_scale">
+ Klicken und ziehen, um die ausgewählte Seite zu dehnen
+ </floater.string>
+ <floater.string name="status_move">
+ Maus verschiebt, Umschalt-Taste und Maus kopiert
+ </floater.string>
+ <floater.string name="status_modifyland">
+ Klicken und halten, um das Land zu bearbeiten
+ </floater.string>
+ <floater.string name="status_camera">
+ Klicken und ziehen, um Kamera zu bewegen
+ </floater.string>
+ <floater.string name="status_grab">
+ Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg-Umschalt zum Drehen
+ </floater.string>
+ <floater.string name="status_place">
+ Inworld klicken, um zu bauen.
+ </floater.string>
+ <floater.string name="status_selectland">
+ Klicken und ziehen, um Land auszuwählen
+ </floater.string>
+ <floater.string name="grid_screen_text">
+ Bildschirm
+ </floater.string>
+ <floater.string name="grid_local_text">
+ Lokal
+ </floater.string>
+ <floater.string name="grid_world_text">
+ Welt
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ Referenz
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ Anhang
+ </floater.string>
+ <button label="" label_selected="" name="button focus" tool_tip="Fokus"/>
+ <button label="" label_selected="" name="button move" tool_tip="Verschieben"/>
+ <button label="" label_selected="" name="button edit" tool_tip="Bearbeiten"/>
+ <button label="" label_selected="" name="button create" tool_tip="Erstellen"/>
+ <button label="" label_selected="" name="button land" tool_tip="Land"/>
+ <text name="text status">
+ Zum Verschieben ziehen, zum Kopieren Umschalttaste-Ziehen
+ </text>
+ <radio_group name="focus_radio_group">
+ <radio_item label="Zoom" name="radio zoom"/>
+ <radio_item label="Orbit (Strg)" name="radio orbit"/>
+ <radio_item label="Schwenken (Strg-Umschalt)" name="radio pan"/>
+ </radio_group>
+ <radio_group name="move_radio_group">
+ <radio_item label="Verschieben" name="radio move"/>
+ <radio_item label="Heben (Strg)" name="radio lift"/>
+ <radio_item label="Rotieren (Strg-Umschalt)" name="radio spin"/>
+ </radio_group>
+ <radio_group name="edit_radio_group">
+ <radio_item label="Bewegen" name="radio position"/>
+ <radio_item label="Drehen (Strg)" name="radio rotate"/>
+ <radio_item label="Dehnen (Strg-Umschalt)" name="radio stretch"/>
+ <radio_item label="Textur auswählen" name="radio select face"/>
+ </radio_group>
+ <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
+ <check_box label="Beide Seiten dehnen" name="checkbox uniform"/>
+ <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid"/>
+ <combo_box name="combobox grid mode">
+ <combo_box.item label="Welt-Lineal" name="World"/>
+ <combo_box.item label="Lokal-Lineal" name="Local"/>
+ <combo_box.item label="Referenz-Lineal" name="Reference"/>
+ </combo_box>
+ <button label="Optionen..." label_selected="Optionen..." name="Options..." tool_tip="Grid-Optionen einstellen"/>
+ <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/>
+ <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
+ <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/>
+ <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetraeder"/>
+ <button label="" label_selected="" name="ToolCylinder" tool_tip="Zylinder"/>
+ <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halbzylinder"/>
+ <button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/>
+ <button label="" label_selected="" name="ToolHemiCone" tool_tip="Halbkegel"/>
+ <button label="" label_selected="" name="ToolSphere" tool_tip="Kugel"/>
+ <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halbkugel"/>
+ <button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/>
+ <button label="" label_selected="" name="ToolTube" tool_tip="Rohr"/>
+ <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/>
+ <button label="" label_selected="" name="ToolTree" tool_tip="Baum"/>
+ <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/>
+ <check_box label="Ausgewähltes Werkzeug beibehalten" name="checkbox sticky"/>
+ <check_box label="Auswahl kopieren" name="checkbox copy selection"/>
+ <check_box initial_value="true" label="Kopie zentrieren" name="checkbox copy centers"/>
+ <check_box label="Kopie drehen" name="checkbox copy rotates"/>
+ <radio_group name="land_radio_group">
+ <radio_item label="Land auswählen" name="radio select land"/>
+ <radio_item label="Einebnen" name="radio flatten"/>
+ <radio_item label="Anheben" name="radio raise"/>
+ <radio_item label="Absenken" name="radio lower"/>
+ <radio_item label="Glätten" name="radio smooth"/>
+ <radio_item label="Aufrauen" name="radio noise"/>
+ <radio_item label="Zurücksetzen" name="radio revert"/>
+ </radio_group>
+ <text name="Bulldozer:">
+ Planierraupe:
+ </text>
+ <text name="Dozer Size:">
+ Größe
+ </text>
+ <text name="Strength:">
+ Stärke
+ </text>
+ <button label="Übernehmen" label_selected="Übernehmen" name="button apply to selection" tool_tip="Ausgewähltes Land ändern"/>
+ <text name="obj_count">
+ Objekte: [COUNT]
+ </text>
+ <text name="prim_count">
+ Primitive: [COUNT]
+ </text>
+ <tab_container name="Object Info Tabs">
+ <panel label="Allgemein" name="General">
+ <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 ändern
+ </panel.string>
+ <panel.string name="text modify info 2">
+ Sie können diese Objekte ändern
+ </panel.string>
+ <panel.string name="text modify info 3">
+ Sie können dieses Objekt nicht ändern
+ </panel.string>
+ <panel.string name="text modify info 4">
+ Sie können diese Objekte nicht ändern
+ </panel.string>
+ <panel.string name="text modify warning">
+ Gesamtes Objekt wählen, um Berechtigungen festzulegen.
+ </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>
+ <text name="Name:">
+ Name:
+ </text>
+ <text name="Description:">
+ Beschreibung:
+ </text>
+ <text name="Creator:">
+ Ersteller:
+ </text>
+ <text name="Creator Name">
+ Thrax Linden
+ </text>
+ <text name="Owner:">
+ Eigentümer:
+ </text>
+ <text name="Owner Name">
+ Thrax Linden
+ </text>
+ <text name="Group:">
+ Gruppe:
+ </text>
+ <button label="Festlegen..." label_selected="Festlegen..." 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."/>
+ <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="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 sitzen" name="Sitonobject"/>
+ <combo_box.item label="Objekt kaufen" name="Buyobject"/>
+ <combo_box.item label="Objekt bezahlen" name="Payobject"/>
+ <combo_box.item label="Öffnen" name="Open"/>
+ </combo_box>
+ <check_box label="Zum Verkauf:" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <combo_box.item label="Kopieren" 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"/>
+ <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/>
+ <panel name="perms_build">
+ <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"/>
+ <text name="Next owner can:">
+ Nächster Eigentümer:
+ </text>
+ <check_box label="Ändern" 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"/>
+ <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>
+ <panel label="Objekt" name="Object">
+ <check_box label="Gesperrt" name="checkbox locked" tool_tip="Verhindert, dass Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden."/>
+ <check_box label="Physisch" name="Physical Checkbox Ctrl" tool_tip="Gestattet, das Objekt geschoben und von Schwerkraft beeinflusst wird"/>
+ <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Verursacht, dass Objekt 1 Minute nach Erstellung gelöscht wird."/>
+ <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert"/>
+ <text name="label position">
+ Position (Meter)
+ </text>
+ <spinner label="X" name="Pos X"/>
+ <spinner label="Y" name="Pos Y"/>
+ <spinner label="Z" name="Pos Z"/>
+ <text name="label size">
+ Größe (Meter)
+ </text>
+ <spinner label="X" name="Scale X"/>
+ <spinner label="Y" name="Scale Y"/>
+ <spinner label="Z" name="Scale Z"/>
+ <text name="label rotation">
+ Rotation (Grad)
+ </text>
+ <spinner label="X" name="Rot X"/>
+ <spinner label="Y" name="Rot Y"/>
+ <spinner label="Z" name="Rot Z"/>
+ <combo_box name="comboBaseType">
+ <combo_box.item label="Quader" name="Box"/>
+ <combo_box.item label="Zylinder" name="Cylinder"/>
+ <combo_box.item label="Prisma" name="Prism"/>
+ <combo_box.item label="Kugel" name="Sphere"/>
+ <combo_box.item label="Torus" name="Torus"/>
+ <combo_box.item label="Rohr" name="Tube"/>
+ <combo_box.item label="Ring" name="Ring"/>
+ <combo_box.item label="Geformt" name="Sculpted"/>
+ </combo_box>
+ <combo_box name="material">
+ <combo_box.item label="Stein" name="Stone"/>
+ <combo_box.item label="Metall" name="Metal"/>
+ <combo_box.item label="Glas" name="Glass"/>
+ <combo_box.item label="Holz" name="Wood"/>
+ <combo_box.item label="Fleisch" name="Flesh"/>
+ <combo_box.item label="Kunststoff" name="Plastic"/>
+ <combo_box.item label="Gummi" name="Rubber"/>
+ </combo_box>
+ <text name="text cut">
+ Pfadschnitt (Anfang/Ende)
+ </text>
+ <spinner label="B" name="cut begin"/>
+ <spinner label="E" name="cut end"/>
+ <text name="text hollow">
+ Hohl
+ </text>
+ <text name="text skew">
+ Versatz
+ </text>
+ <spinner name="Scale 1"/>
+ <spinner name="Skew"/>
+ <text name="Hollow Shape">
+ Hohlform
+ </text>
+ <combo_box name="hole">
+ <combo_box.item label="Standard" name="Default"/>
+ <combo_box.item label="Kreis" name="Circle"/>
+ <combo_box.item label="Quadrat" name="Square"/>
+ <combo_box.item label="Dreieck" name="Triangle"/>
+ </combo_box>
+ <text name="text twist">
+ Torsion (Anfang/Ende)
+ </text>
+ <spinner label="B" name="Twist Begin"/>
+ <spinner label="E" name="Twist End"/>
+ <text name="scale_taper">
+ Verjüngung
+ </text>
+ <text name="scale_hole">
+ Lochgröße
+ </text>
+ <spinner label="X" name="Taper Scale X"/>
+ <spinner label="Y" name="Taper Scale Y"/>
+ <text name="text topshear">
+ Verscherung
+ </text>
+ <spinner label="X" name="Shear X"/>
+ <spinner label="Y" name="Shear Y"/>
+ <text name="advanced_cut">
+ Profilschnitt (Anfang/Ende)
+ </text>
+ <text name="advanced_dimple">
+ Vertiefung (Anfang/Ende)
+ </text>
+ <text name="advanced_slice">
+ Abschneiden (Anfang/Ende)
+ </text>
+ <spinner label="B" name="Path Limit Begin"/>
+ <spinner label="E" name="Path Limit End"/>
+ <text name="text taper2">
+ Verjüngung
+ </text>
+ <spinner label="X" name="Taper X"/>
+ <spinner label="Y" name="Taper Y"/>
+ <text name="text radius delta">
+ Radius
+ </text>
+ <text name="text revolutions">
+ Umdrehungen
+ </text>
+ <spinner name="Radius Offset"/>
+ <texture_picker label="Textur für gestaltetes Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
+ <check_box label="Spiegeln" name="sculpt mirror control" tool_tip="Geformtes Primitiv entlang der X-Achse spiegeln."/>
+ <check_box label="Wenden" name="sculpt invert control" tool_tip="Dreht die Normalen des geformten Primitivs von innen nach außen."/>
+ <text name="label sculpt type">
+ Naht
+ </text>
+ <combo_box name="sculpt type control">
+ <combo_box.item label="(keiner)" name="None"/>
+ <combo_box.item label="Kugel" name="Sphere"/>
+ <combo_box.item label="Torus" name="Torus"/>
+ <combo_box.item label="Fläche" name="Plane"/>
+ <combo_box.item label="Zylinder" name="Cylinder"/>
+ </combo_box>
+ </panel>
+ <panel label="Eigenschaften" name="Features">
+ <text name="select_single">
+ Wählen Sie nur einen einzelnen Baustein aus, um Eigenschaften zu bearbeiten.
+ </text>
+ <text name="edit_object">
+ Objekteigenschaften bearbeiten:
+ </text>
+ <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)"/>
+ <spinner label="Weichheit" name="FlexNumSections"/>
+ <spinner label="Schwerkraft" name="FlexGravity"/>
+ <spinner label="Ziehen" name="FlexFriction"/>
+ <spinner label="Wind" name="FlexWind"/>
+ <spinner label="Spannung" name="FlexTension"/>
+ <spinner label="Erzwingen X" name="FlexForceX"/>
+ <spinner label="Erzwingen Y" name="FlexForceY"/>
+ <spinner label="Erzwingen Z" name="FlexForceZ"/>
+ <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/>
+ <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/>
+ <spinner label="Intensität" name="Light Intensity"/>
+ <spinner label="Radius" name="Light Radius"/>
+ <spinner label="Abnehmend" name="Light Falloff"/>
+ </panel>
+ <panel label="Textur" name="Texture">
+ <panel.string name="string repeats per meter">
+ Kacheln pro Meter
+ </panel.string>
+ <panel.string name="string repeats per face">
+ Wiederholungen pro Fläche
+ </panel.string>
+ <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/>
+ <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/>
+ <text name="color trans">
+ Transparenz %
+ </text>
+ <text name="glow label">
+ Leuchten
+ </text>
+ <check_box label="Ganz hell" name="checkbox fullbright"/>
+ <text name="tex gen">
+ Zuordnung
+ </text>
+ <combo_box name="combobox texgen">
+ <combo_box.item label="Standard" name="Default"/>
+ <combo_box.item label="Eben" name="Planar"/>
+ </combo_box>
+ <text name="label shininess">
+ Glanz
+ </text>
+ <combo_box name="combobox shininess">
+ <combo_box.item label="Kein" name="None"/>
+ <combo_box.item label="Niedrig" name="Low"/>
+ <combo_box.item label="Mittel" name="Medium"/>
+ <combo_box.item label="Hoch" name="High"/>
+ </combo_box>
+ <text name="label bumpiness">
+ Holprigkeit
+ </text>
+ <combo_box name="combobox bumpiness">
+ <combo_box.item label="Keine" name="None"/>
+ <combo_box.item label="Helligkeit" name="Brightness"/>
+ <combo_box.item label="Dunkelheit" name="Darkness"/>
+ <combo_box.item label="Holzmaserung" name="woodgrain"/>
+ <combo_box.item label="Rinde" name="bark"/>
+ <combo_box.item label="Ziegel" name="bricks"/>
+ <combo_box.item label="Karo" name="checker"/>
+ <combo_box.item label="Beton" name="concrete"/>
+ <combo_box.item label="verkrustete Fliesen" name="crustytile"/>
+ <combo_box.item label="Steinplatten" name="cutstone"/>
+ <combo_box.item label="Scheiben" name="discs"/>
+ <combo_box.item label="Kies" name="gravel"/>
+ <combo_box.item label="Petrischale" name="petridish"/>
+ <combo_box.item label="Verkleidung" name="siding"/>
+ <combo_box.item label="Steinfliesen" name="stonetile"/>
+ <combo_box.item label="Stuck" name="stucco"/>
+ <combo_box.item label="Saugen" name="suction"/>
+ <combo_box.item label="gewoben" name="weave"/>
+ </combo_box>
+ <text name="tex scale">
+ Wiederholungen
+ </text>
+ <spinner label="Horizontal (U)" name="TexScaleU"/>
+ <check_box label="Umkehren" name="checkbox flip s"/>
+ <spinner label="Vertikal (V)" name="TexScaleV"/>
+ <check_box label="Umkehren" name="checkbox flip t"/>
+ <button label="Übernehmen" label_selected="Übernehmen" name="button apply"/>
+ <text name="tex offset">
+ Texture-Versatz
+ </text>
+ <spinner label="Horizontal (U)" name="TexOffsetU"/>
+ <spinner label="Vertikal (V)" name="TexOffsetV"/>
+ </panel>
+ <panel label="Inhalt" name="Contents">
+ <button label="Neues Skript" label_selected="Neues Skript" name="button new script"/>
+ <button label="Berechtigungen" name="button permissions"/>
+ </panel>
+ </tab_container>
+ <panel name="land info panel">
+ <text name="label_parcel_info">
+ Parzelleninformation
+ </text>
+ <text name="label_area_price">
+ Preis: L$ [PRICE] für [AREA] m²
+ </text>
+ <text name="label_area">
+ Fläche: [AREA] m²
+ </text>
+ <button label="Info zu Land..." label_selected="Info zu Land..." name="button about land"/>
+ <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Parzellen nach Eigentümer farbig kennzeichnen:
+
+Grün = Ihr Land
+Blau = Das Land Ihrer Gruppe
+Rot = Im Eigentum anderer
+Geld = Zum Verkauf
+Lila = Zur Auktion
+Grau = Öffentlich"/>
+ <text name="label_parcel_modify">
+ Parzelle ändern
+ </text>
+ <button label="Unterteilen" label_selected="Unterteilen" name="button subdivide land"/>
+ <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land"/>
+ <text name="label_parcel_trans">
+ Land-Transaktionen
+ </text>
+ <button label="Land kaufen" label_selected="Land kaufen" name="button buy land"/>
+ <button label="Land aufgeben" label_selected="Land aufgeben" name="button abandon land"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml
index d2d6d20270..58e0498b05 100644
--- a/indra/newview/skins/default/xui/de/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [ACCTTYPE], [PAYMENTINFO]
-Profil: [SL_PROFILE]
- </string>
- <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
- <button label="Freund hinzufügen" name="add_friend_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_avatar">
+ <string name="Subtitle">
+ [AGE]
+ </string>
+ <string name="Details">
+ [ACCTTYPE], [PAYMENTINFO]
+Profil: [SL_PROFILE]
+ </string>
+ <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
+ <button label="Freund hinzufügen" name="add_friend_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
index ae9a70024a..b1e119c66a 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Profil anzeigen..." name="Show Profile"/>
- <menu_item_call label="IM senden..." name="Send IM"/>
- <menu_item_call label="Freund hinzufügen..." name="Add Friend"/>
- <menu_item_call label="Freund entfernen..." name="Remove Friend"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+ <menu_item_call label="Profil anzeigen..." name="Show Profile"/>
+ <menu_item_call label="IM senden..." name="Send IM"/>
+ <menu_item_call label="Freund hinzufügen..." name="Add Friend"/>
+ <menu_item_call label="Freund entfernen..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_favorites.xml b/indra/newview/skins/default/xui/de/menu_favorites.xml
index b73010e7b5..0d0491d2eb 100644
--- a/indra/newview/skins/default/xui/de/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/de/menu_favorites.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Teleportieren" name="Teleport To Landmark"/>
- <menu_item_call label="Landmarken anzeigen/bearbeiten" name="Landmark Open"/>
- <menu_item_call label="SLurl kopieren" name="Copy slurl"/>
- <menu_item_call label="Auf Karte zeigen" name="Show On Map"/>
- <menu_item_call label="Kopieren" name="Landmark Copy"/>
- <menu_item_call label="Einfügen" name="Landmark Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Teleportieren" name="Teleport To Landmark"/>
+ <menu_item_call label="Landmarken anzeigen/bearbeiten" name="Landmark Open"/>
+ <menu_item_call label="SLurl kopieren" name="Copy slurl"/>
+ <menu_item_call label="Auf Karte zeigen" name="Show On Map"/>
+ <menu_item_call label="Kopieren" name="Landmark Copy"/>
+ <menu_item_call label="Einfügen" name="Landmark Paste"/>
+ <menu_item_call label="Löschen" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_group_plus.xml b/indra/newview/skins/default/xui/de/menu_group_plus.xml
index f90fcb0451..583ee793be 100644
--- a/indra/newview/skins/default/xui/de/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/de/menu_group_plus.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Werden Sie Mitglied..." name="item_join"/>
- <menu_item_call label="Neue Gruppe..." name="item_new"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+ <menu_item_call label="Werden Sie Mitglied..." name="item_join"/>
+ <menu_item_call label="Neue Gruppe..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index 67250fc732..7b4335a430 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -1,76 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Kaufen" name="Task Buy"/>
- <menu_item_call label="Öffnen" name="Task Open"/>
- <menu_item_call label="Wiedergeben/Abspielen" name="Task Play"/>
- <menu_item_call label="Eigenschaften" name="Task Properties"/>
- <menu_item_call label="Umbenennen" name="Task Rename"/>
- <menu_item_call label="Löschen" name="Task Remove"/>
- <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/>
- <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
- <menu_item_call label="Neuer Ordner" name="New Folder"/>
- <menu_item_call label="Neues Skript" name="New Script"/>
- <menu_item_call label="Neue Notiz" name="New Note"/>
- <menu_item_call label="Neue Geste" name="New Gesture"/>
- <menu label="Neue Kleider" name="New Clothes">
- <menu_item_call label="Neues Hemd" name="New Shirt"/>
- <menu_item_call label="Neue Hose" name="New Pants"/>
- <menu_item_call label="Neue Schuhe" name="New Shoes"/>
- <menu_item_call label="Neue Socken" name="New Socks"/>
- <menu_item_call label="Neue Jacke" name="New Jacket"/>
- <menu_item_call label="Neuer Rock" name="New Skirt"/>
- <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
- <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
- <menu_item_call label="Neue Unterhose" name="New Underpants"/>
- </menu>
- <menu label="Neue Körperteile" name="New Body Parts">
- <menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
- <menu_item_call label="Neue Haut" name="New Skin"/>
- <menu_item_call label="Neues Haar" name="New Hair"/>
- <menu_item_call label="Neue Augen" name="New Eyes"/>
- </menu>
- <menu label="Typ ändern" name="Change Type">
- <menu_item_call label="Standard" name="Default"/>
- <menu_item_call label="Handschuhe" name="Gloves"/>
- <menu_item_call label="Jacke" name="Jacket"/>
- <menu_item_call label="Hose" name="Pants"/>
- <menu_item_call label="Form" name="Shape"/>
- <menu_item_call label="Schuhe" name="Shoes"/>
- <menu_item_call label="Hemd" name="Shirt"/>
- <menu_item_call label="Rock" name="Skirt"/>
- <menu_item_call label="Unterhose" name="Underpants"/>
- <menu_item_call label="Unterhemd" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleportieren" name="Landmark Open"/>
- <menu_item_call label="Öffnen" name="Animation Open"/>
- <menu_item_call label="Öffnen" name="Sound Open"/>
- <menu_item_call label="Objekt löschen" name="Purge Item"/>
- <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
- <menu_item_call label="Öffnen" name="Open"/>
- <menu_item_call label="Eigenschaften" name="Properties"/>
- <menu_item_call label="Umbenennen" name="Rename"/>
- <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Objekte abnehmen" name="Take Off Items"/>
- <menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit"/>
- <menu_item_call label="Outfit ersetzen" name="Replace Outfit"/>
- <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
- <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
- <menu_item_call label="In Welt abspielen" name="Animation Play"/>
- <menu_item_call label="Lokal wiedergeben" name="Animation Audition"/>
- <menu_item_call label="Instant Message senden" name="Send Instant Message"/>
- <menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/>
- <menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/>
- <menu_item_call label="Aktivieren" name="Activate"/>
- <menu_item_call label="Deaktivieren" name="Deactivate"/>
- <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/>
- <menu_item_call label="Anziehen" name="Object Wear"/>
- <menu label="Anhängen an" name="Attach To"/>
- <menu label="An HUD hängen" name="Attach To HUD"/>
- <menu_item_call label="Bearbeiten" name="Wearable Edit"/>
- <menu_item_call label="Anziehen" name="Wearable Wear"/>
- <menu_item_call label="Ausziehen" name="Take Off"/>
- <menu_item_call label="--keine Optionen--" name="--no options--"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Kaufen" name="Task Buy"/>
+ <menu_item_call label="Öffnen" name="Task Open"/>
+ <menu_item_call label="Wiedergeben/Abspielen" name="Task Play"/>
+ <menu_item_call label="Eigenschaften" name="Task Properties"/>
+ <menu_item_call label="Umbenennen" name="Task Rename"/>
+ <menu_item_call label="Löschen" name="Task Remove"/>
+ <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/>
+ <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
+ <menu_item_call label="Neuer Ordner" name="New Folder"/>
+ <menu_item_call label="Neues Skript" name="New Script"/>
+ <menu_item_call label="Neue Notiz" name="New Note"/>
+ <menu_item_call label="Neue Geste" name="New Gesture"/>
+ <menu label="Neue Kleider" name="New Clothes">
+ <menu_item_call label="Neues Hemd" name="New Shirt"/>
+ <menu_item_call label="Neue Hose" name="New Pants"/>
+ <menu_item_call label="Neue Schuhe" name="New Shoes"/>
+ <menu_item_call label="Neue Socken" name="New Socks"/>
+ <menu_item_call label="Neue Jacke" name="New Jacket"/>
+ <menu_item_call label="Neuer Rock" name="New Skirt"/>
+ <menu_item_call label="Neue Handschuhe" name="New Gloves"/>
+ <menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
+ <menu_item_call label="Neue Unterhose" name="New Underpants"/>
+ </menu>
+ <menu label="Neue Körperteile" name="New Body Parts">
+ <menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
+ <menu_item_call label="Neue Haut" name="New Skin"/>
+ <menu_item_call label="Neues Haar" name="New Hair"/>
+ <menu_item_call label="Neue Augen" name="New Eyes"/>
+ </menu>
+ <menu label="Typ ändern" name="Change Type">
+ <menu_item_call label="Standard" name="Default"/>
+ <menu_item_call label="Handschuhe" name="Gloves"/>
+ <menu_item_call label="Jacke" name="Jacket"/>
+ <menu_item_call label="Hose" name="Pants"/>
+ <menu_item_call label="Form" name="Shape"/>
+ <menu_item_call label="Schuhe" name="Shoes"/>
+ <menu_item_call label="Hemd" name="Shirt"/>
+ <menu_item_call label="Rock" name="Skirt"/>
+ <menu_item_call label="Unterhose" name="Underpants"/>
+ <menu_item_call label="Unterhemd" name="Undershirt"/>
+ </menu>
+ <menu_item_call label="Teleportieren" name="Landmark Open"/>
+ <menu_item_call label="Öffnen" name="Animation Open"/>
+ <menu_item_call label="Öffnen" name="Sound Open"/>
+ <menu_item_call label="Objekt löschen" name="Purge Item"/>
+ <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
+ <menu_item_call label="Öffnen" name="Open"/>
+ <menu_item_call label="Eigenschaften" name="Properties"/>
+ <menu_item_call label="Umbenennen" name="Rename"/>
+ <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/>
+ <menu_item_call label="Kopieren" name="Copy"/>
+ <menu_item_call label="Einfügen" name="Paste"/>
+ <menu_item_call label="Löschen" name="Delete"/>
+ <menu_item_call label="Objekte abnehmen" name="Take Off Items"/>
+ <menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit"/>
+ <menu_item_call label="Outfit ersetzen" name="Replace Outfit"/>
+ <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
+ <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
+ <menu_item_call label="In Welt abspielen" name="Animation Play"/>
+ <menu_item_call label="Lokal wiedergeben" name="Animation Audition"/>
+ <menu_item_call label="Instant Message senden" name="Send Instant Message"/>
+ <menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/>
+ <menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/>
+ <menu_item_call label="Aktivieren" name="Activate"/>
+ <menu_item_call label="Deaktivieren" name="Deactivate"/>
+ <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/>
+ <menu_item_call label="Anziehen" name="Object Wear"/>
+ <menu label="Anhängen an" name="Attach To"/>
+ <menu label="An HUD hängen" name="Attach To HUD"/>
+ <menu_item_call label="Bearbeiten" name="Wearable Edit"/>
+ <menu_item_call label="Anziehen" name="Wearable Wear"/>
+ <menu_item_call label="Ausziehen" name="Take Off"/>
+ <menu_item_call label="--keine Optionen--" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_landmark.xml b/indra/newview/skins/default/xui/de/menu_landmark.xml
index 40b5b67079..b100ee11d7 100644
--- a/indra/newview/skins/default/xui/de/menu_landmark.xml
+++ b/indra/newview/skins/default/xui/de/menu_landmark.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="SLurl kopieren" name="copy"/>
- <menu_item_call label="Löschen" name="delete"/>
- <menu_item_call label="Auswahl erstellen" name="pick"/>
-</toggleable_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+ <menu_item_call label="SLurl kopieren" name="copy"/>
+ <menu_item_call label="Löschen" name="delete"/>
+ <menu_item_call label="Auswahl erstellen" name="pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_mini_map.xml b/indra/newview/skins/default/xui/de/menu_mini_map.xml
index 840e7c41b2..a3179b42f8 100644
--- a/indra/newview/skins/default/xui/de/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/de/menu_mini_map.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="popup">
- <menu_item_call label="Zoom Nah" name="Zoom Close"/>
- <menu_item_call label="Zoom Mittel" name="Zoom Medium"/>
- <menu_item_call label="Zoom Weit" name="Zoom Far"/>
- <menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/>
- <menu_item_call label="Weltkarte" name="World Map"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="popup">
+ <menu_item_call label="Zoom Nah" name="Zoom Close"/>
+ <menu_item_call label="Zoom Mittel" name="Zoom Medium"/>
+ <menu_item_call label="Zoom Weit" name="Zoom Far"/>
+ <menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/>
+ <menu_item_call label="Weltkarte" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_navbar.xml b/indra/newview/skins/default/xui/de/menu_navbar.xml
index 677de7c116..6af01ddcc5 100644
--- a/indra/newview/skins/default/xui/de/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/de/menu_navbar.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
- <menu_item_call label="Landmarke" name="Landmark"/>
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Löschen" name="Delete"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+ <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
+ <menu_item_call label="Landmarke" name="Landmark"/>
+ <menu_item_call label="Ausschneiden" name="Cut"/>
+ <menu_item_call label="Kopieren" name="Copy"/>
+ <menu_item_call label="Einfügen" name="Paste"/>
+ <menu_item_call label="Löschen" name="Delete"/>
+ <menu_item_call label="Alle auswählen" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_picks.xml b/indra/newview/skins/default/xui/de/menu_picks.xml
index 102dd4cc5d..9aec4c83b0 100644
--- a/indra/newview/skins/default/xui/de/menu_picks.xml
+++ b/indra/newview/skins/default/xui/de/menu_picks.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Info" name="pick_info"/>
- <menu_item_call label="Bearbeiten" name="pick_edit"/>
- <menu_item_call label="Teleportieren" name="pick_teleport"/>
- <menu_item_call label="Karte" name="pick_map"/>
- <menu_item_call label="Löschen" name="pick_delete"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+ <menu_item_call label="Info" name="pick_info"/>
+ <menu_item_call label="Bearbeiten" name="pick_edit"/>
+ <menu_item_call label="Teleportieren" name="pick_teleport"/>
+ <menu_item_call label="Karte" name="pick_map"/>
+ <menu_item_call label="Löschen" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_place.xml b/indra/newview/skins/default/xui/de/menu_place.xml
index 36cb3377c1..d9c85f5b92 100644
--- a/indra/newview/skins/default/xui/de/menu_place.xml
+++ b/indra/newview/skins/default/xui/de/menu_place.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Eine Landmarke setzen" name="landmark"/>
- <menu_item_call label="Auswahl erstellen" name="pick"/>
- <menu_item_call label="Pass kaufen" name="pass"/>
- <menu_item_call label="Bearbeiten" name="edit"/>
-</toggleable_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+ <menu_item_call label="Eine Landmarke setzen" name="landmark"/>
+ <menu_item_call label="Auswahl erstellen" name="pick"/>
+ <menu_item_call label="Pass kaufen" name="pass"/>
+ <menu_item_call label="Bearbeiten" name="edit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_slurl.xml b/indra/newview/skins/default/xui/de/menu_slurl.xml
index b379c1ca6a..b2ec017f9f 100644
--- a/indra/newview/skins/default/xui/de/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/de/menu_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="URL-Info" name="about_url"/>
- <menu_item_call label="Zu URL teleportieren" name="teleport_to_url"/>
- <menu_item_call label="Karte" name="show_on_map"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="URL-Info" name="about_url"/>
+ <menu_item_call label="Zu URL teleportieren" name="teleport_to_url"/>
+ <menu_item_call label="Karte" name="show_on_map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml
index e9effe0bf2..9a808088fb 100644
--- a/indra/newview/skins/default/xui/de/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_agent.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
- <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Einwohnerprofil anzeigen" name="show_agent"/>
+ <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
+ <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_group.xml b/indra/newview/skins/default/xui/de/menu_url_group.xml
index 78051fe726..6bd86414bc 100644
--- a/indra/newview/skins/default/xui/de/menu_url_group.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_group.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Gruppeninformation anzeigen" name="show_group"/>
- <menu_item_call label="Gruppe in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Gruppeninformation anzeigen" name="show_group"/>
+ <menu_item_call label="Gruppe in Zwischenablage kopieren" name="url_copy_label"/>
+ <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_http.xml b/indra/newview/skins/default/xui/de/menu_url_http.xml
index ae4aaad480..30eb1668a5 100644
--- a/indra/newview/skins/default/xui/de/menu_url_http.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_http.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Webseite öffnen" name="url_open"/>
- <menu_item_call label="Im internen Browser öffnen" name="url_open_internal"/>
- <menu_item_call label="Im externen Browser öffnen" name="url_open_external"/>
- <menu_item_call label="URL in Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Webseite öffnen" name="url_open"/>
+ <menu_item_call label="Im internen Browser öffnen" name="url_open_internal"/>
+ <menu_item_call label="Im externen Browser öffnen" name="url_open_external"/>
+ <menu_item_call label="URL in Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
index 8bb1822405..11f242b540 100644
--- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
- <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
- <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Objektinformationen anzeigen" name="show_object"/>
+ <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/>
+ <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/>
+ <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_parcel.xml b/indra/newview/skins/default/xui/de/menu_url_parcel.xml
index b3117c8fbe..707079f8cc 100644
--- a/indra/newview/skins/default/xui/de/menu_url_parcel.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_parcel.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Parzelleninformationen anzeigen" name="show_parcel"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Parzelleninformationen anzeigen" name="show_parcel"/>
+ <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_slurl.xml b/indra/newview/skins/default/xui/de/menu_url_slurl.xml
index b4d15b2c3d..9b6417456c 100644
--- a/indra/newview/skins/default/xui/de/menu_url_slurl.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ortsinformationen anzeigen" name="show_place"/>
- <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Ortsinformationen anzeigen" name="show_place"/>
+ <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
+ <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_url_teleport.xml b/indra/newview/skins/default/xui/de/menu_url_teleport.xml
index 254807295f..306977574c 100644
--- a/indra/newview/skins/default/xui/de/menu_url_teleport.xml
+++ b/indra/newview/skins/default/xui/de/menu_url_teleport.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="An diesen Standort teleportieren" name="teleport"/>
- <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="An diesen Standort teleportieren" name="teleport"/>
+ <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 94bb7582c3..7e3a6aaa93 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -1,2563 +1,2563 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Nicht mehr anzeigen
- </global>
- <global name="alwayschoose">
- Diese Option immer auswählen
- </global>
- <global name="implicitclosebutton">
- Schließen
- </global>
- <template name="okbutton">
- <form>
- <button name="OK" text="$yestext"/>
- </form>
- </template>
- <template name="okignore"/>
- <template name="okcancelbuttons">
- <form>
- <button name="Cancel" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore"/>
- <template name="okhelpbuttons">
- <form>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Unbekannter Warnhinweis" name="MissingAlert">
- Ihre Version von [APP_NAME] kann den gerade empfangenen Warnhinweis nicht anzeigen. Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben.
-
-Fehlerdetails: Der Warnhinweis &apos;[_NAME]&apos; wurde in notifications.xml nicht gefunden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Floater-Fehler: Folgende Steuerelemente wurden nicht gefunden:
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Derzeit ist kein Tutorial verfügbar.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
- </notification>
- <notification name="BadInstallation">
- Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version des Viewers herunter. http://get.secondlife.com
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Eine Verbindung zum [SECOND_LIFE_GRID] konnte nicht hergestellt werden.
- &apos;[DIAGNOSTIC]&apos;
-Bitte vergewissern Sie sich, dass Ihre Internetverbindung funktioniert.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Meldungsvorlage [PATH] nicht gefunden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Änderung an aktueller Kleidung/Körperteil speichern?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
- </notification>
- <notification name="CompileQueueSaveText">
- Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="CompileQueueSaveBytecode">
- Eine kompiliertes Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="WriteAnimationFail">
- Fehler beim Schreiben von Animationsdaten. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- Eine Auktions-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Es kann nur jeweils der Inhalt von einem Objekt angezeigt werden.
-Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Änderung an Kleidung/Körperteilen speichern?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/>
- </notification>
- <notification name="GrantModifyRights">
- Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis.
-Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis.
-Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRights">
- Möchten Sie [FIRST_NAME] [LAST_NAME] die Änderungsrechte entziehen?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Möchten Sie den ausgewählten Einwohnern die Änderungsrechte entziehen?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Gruppe konnte nicht erstellt werden.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Änderungen verwerfen" yestext="Änderungen übernehmen"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Geben Sie einen Betreff für die Gruppenmitteilung ein.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Sie sind im Begriff, Gruppenmitgliedern die Rolle [ROLE_NAME] zuzuweisen.
-Diese Rolle kann Mitgliedern nicht mehr entzogen werden.
-Sie müssen die Rolle selbst niederlegen.
-Möchten Sie fortfahren?
- <usetemplate ignoretext="Bestätigen, bevor ich einen neuen Gruppeneigentümer hinzufüge" name="okcancelignore" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen.
-
- *ACHTUNG*
- Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst -
- und allen anderen Mitgliedern – Rollen zuweisen, die mehr Rechte
- beinhalten als sie derzeit haben, und damit nahezu
- Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit
- verleihen.
-
-Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen.
-
- *ACHTUNG*
- Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst -
- und allen anderen Mitgliedern – alle Fähigkeiten zuweisen und
- damit fast Eigentümerrechte erreichen.
-
-Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- Der Beitritt zu dieser Gruppe kostet [COST] L$.
-Fortfahren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Beitreten"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Der Beitritt zu dieser Gruppe kostet [COST] L$.
-Sie haben nicht genug L$, um dieser Gruppe beizutreten.
- </notification>
- <notification name="CreateGroupCost">
- Die Gründung dieser Gruppe kostet 100 L$.
-Gruppen müssen mehr als ein Mitglied haben oder sie werden gelöscht.
-Bitte laden Sie innerhalb von 48 Stunden Mitglieder in Ihre Gruppe ein.
- <usetemplate canceltext="Abbrechen" name="okcancelbuttons" notext="Abbrechen" yestext="Gruppe für 100 L$ erstellen"/>
- </notification>
- <notification name="LandBuyPass">
- Sie können dieses Land („[PARCEL_NAME]“) für [COST] L$
-[TIME] Stunden lang betreten. Pass kaufen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- Der Verkaufspreis muss beim allgemeinen Verkauf über 0 L$ liegen.
-Wählen Sie eine bestimmte Person aus, wenn Sie für 0 L$ verkaufen.
- </notification>
- <notification name="ConfirmLandSaleChange">
- Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben.
-Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- ACHTUNG: Wenn Sie auf „An jeden verkaufen“ klicken, kann jeder in [SECOND_LIFE] Ihr Land kaufen, auch Einwohner in anderen Regionen.
-
-Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben.
-Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Möchten Sie alle Ihre Objekte auf dieser Parzelle, die der Gruppe „[NAME]“ gehören, zurück in das jeweilige Inventar ihrer vorherigen Eigentümer transferieren?
-
-*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
-
-Objekte: [N]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Möchten Sie alle Objekte auf dieser Parzelle, die dem Einwohner „[NAME]“ gehören, in das jeweilige Inventar ihrer Eigentümer transferieren?
-
-Objekte: [N]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Möchten Sie alle Objekte auf dieser Parzelle, die Ihnen gehören, zurück in Ihr Inventar transferieren?
-
-Objekte: [N]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Möchten Sie alle Objekte auf dieser Parzelle, die NICHT Ihnen gehören, in das Inventar ihrer Eigentümer transferieren?
-Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben.
-
-*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
-
-Objekte: [N]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Möchten Sie alle Objekte auf dieser Parzelle, die NICHT [NAME] gehören, in das Inventar ihrer Eigentümer transferieren?
-Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben.
-
-*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
-
-Objekte: [N]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Möchten Sie alle aufgeführten Objekte ihren Eigentümern zurückgeben?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Möchten Sie alle Objekte in dieser Region deaktivieren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Objekte auf dieser Parzelle, die von der Gruppe [NAME] nicht gemeinsam genutzt werden, an ihre Eigentümer zurückgeben?
-
-Objekte: [N]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Skriptdeaktivierung nicht möglich.
-Für die gesamte Region ist Schaden aktiviert.
-Damit Waffen funktionieren, müssen Skripts erlaubt sein.
- </notification>
- <notification name="MustBeInParcel">
- Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen.
- </notification>
- <notification name="PromptRecipientEmail">
- Bitte geben Sie für den/die Empfänger eine gültige Email-Adresse ein.
- </notification>
- <notification name="PromptSelfEmail">
- Geben Sie Ihre E-Mail-Adresse ein.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Foto mit Standardbetreff bzw. -nachricht als E-Mail versenden?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Fehler beim Verarbeiten der Fotodaten
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Fehler beim Erstellen des Fotos!
- </notification>
- <notification name="ErrorUploadingPostcard">
- Ein Foto konnte aus folgendem Grund nicht gesendet werden: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- Ein Report-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- Bevor Sie sich in [SECOND_LIFE] anmelden können, müssen Sie den Nutzungsbedingungen zustimmen.
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Outfit konnte nicht angezogen werden.
-Der Outfit-Ordner enthält keine Kleidung, Körperteile oder Anhänge.
- </notification>
- <notification name="CannotWearTrash">
- Kleider oder Körperteile im Papierkorb können nicht getragen werden
- </notification>
- <notification name="CannotWearInfoNotComplete">
- Sie können das Objekt nicht anziehen, weil es noch nicht geladen wurde. Warten Sie kurz und versuchen Sie es dann noch einmal.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Hoppla! Da fehlt noch etwas.
-Geben Sie bitte den Vor- und den Nachnamen Ihres Avatars ein.
-
-Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten Sie jetzt ein Benutzerkonto anlegen?
- <url name="url">
- https://join.secondlife.com/index.php?lang=de-DE
- </url>
- <usetemplate name="okcancelbuttons" notext="Erneut versuchen" yestext="Neues Benutzerkonto anlegen"/>
- </notification>
- <notification name="AddClassified">
- Anzeigen erscheinen für eine Woche unter „Anzeigen“ im Suchverzeichnis. Füllen Sie Ihre Anzeige aus und klicken Sie auf „Veröffentlichen...“, um sie zum Verzeichnis hinzuzufügen. Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf „Veröffentlichen“ klicken. Wenn Sie mehr bezahlen oder ein Benutzer nach Ihren Suchbegriffen sucht, erscheint Ihre Anzeige weiter oben in der Liste.
- <usetemplate ignoretext="So wird eine neue Anzeige erstellt" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="DeleteClassified">
- Anzeige „[NAME]“ löschen?
-Gebühren werden nicht rückerstattet.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ClassifiedSave">
- Änderung an Anzeige [NAME] speichern?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Auswahl [PICK] löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Zur [SECOND_LIFE] Events-Webseite?
- <url name="url">
- http://de.secondlife.com/events/
- </url>
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Wählen Sie ein Angebot zur Ansicht.
- </notification>
- <notification name="SelectHistoryItemToView">
- Wählen Sie ein Element zur Ansicht.
- </notification>
- <notification name="ResetShowNextTimeDialogs">
- Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="SkipShowNextTimeDialogs">
- Möchten Sie alle Popups, die übersprungen werden können, deaktivieren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="CacheWillClear">
- Der Cache wird nach einem Neustart von [APP_NAME] geleert.
- </notification>
- <notification name="CacheWillBeMoved">
- Der Cache wird nach einem Neustart von [APP_NAME] verschoben.
-Hinweis: Der Cache wird dabei gelöscht/geleert.
- </notification>
- <notification name="ChangeConnectionPort">
- Die Port-Einstellungen werden nach einem Neustart von [APP_NAME] wirksam.
- </notification>
- <notification name="ChangeSkin">
- Die neue Benutzeroberfläche wird nach einem Neustart von [APP_NAME] angewendet.
- </notification>
- <notification name="GoToAuctionPage">
- Zur [SECOND_LIFE]-Webseite, um Auktionen anzuzeigen oder ein Gebot abzugeben?
- <url name="url">
- http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
- </url>
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Änderungen speichern?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- Speichern der Geste fehlgeschlagen.
-Die Geste besteht aus zu vielen Schritten.
-Löschen Sie einige Schritte und versuchen Sie es erneut.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- Speichern der Geste fehlgeschlagen. Warten Sie kurz und versuchen Sie es dann noch einmal.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Geste konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden.
-Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
- </notification>
- <notification name="GestureSaveFailedReason">
- Eine Geste konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Geste bitte später.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- Notizkarte konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden.
-Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
- </notification>
- <notification name="SaveNotecardFailReason">
- Eine Notizkarte konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Notizkarte bitte später.
- </notification>
- <notification name="ScriptCannotUndo">
- Es konnten nicht alle Änderungen in Ihrer Skriptversion rückgängig gemacht werden.
-Möchten Sie die letzte gespeicherte Version vom Server laden?
-(**Warnung** Dieser Vorgang kann nicht rückgängig gemacht werden.)
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- Ein Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Skript konnte nicht gespeichert werden, weil das zugehörige Objekt nicht gefunden wurde.
-Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
- </notification>
- <notification name="SaveBytecodeFailReason">
- Ein kompiliertes Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später.
- </notification>
- <notification name="StartRegionEmpty">
- Sie haben keine Start-Region festgelegt.
-Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Heimatort“ als Startposition aus.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- Skript konnte nicht gestartet oder beendet werden, weil das zugehörige Objekt nicht gefunden wurde.
-Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
- </notification>
- <notification name="CannotDownloadFile">
- Dateidownload nicht möglich
- </notification>
- <notification name="CannotWriteFile">
- Datei [[FILE]] kann nicht geschrieben werden
- </notification>
- <notification name="UnsupportedHardware">
- Achtung: Ihr System erfüllt nicht die Mindestanforderungen von [APP_NAME]. Dies kann eine schlechte Darstellungsleistung in [APP_NAME] zur Folge haben. Bei nicht unterstützten Systemkonfigurationen kann Ihnen unsere [SUPPORT_SITE] leider nicht helfen.
-
-MINDESTANF.
-Die Seite [_URL] für weitere Informationen öffnen?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=de
- </url>
- <usetemplate ignoretext="Meine Hardware wird nicht unterstützt" name="okcancelignore" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="UnknownGPU">
- Ihr System verwendet eine uns zurzeit unbekannte Grafikkarte.
-Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde. [APP_NAME] wird wahrscheinlich korrekt ausgeführt werden, jedoch sollten Sie Ihre Grafikeinstellungen anpassen, um eine bessere Darstellung zu erzielen.
-(Einstellungen &gt; Grafik).
- <form name="form">
- <ignore name="ignore" text="Meine Grafikkarte konnte nicht identifiziert werden."/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] ist bei der Initialisierung der Grafiktreiber abgestürzt.
-Die Grafikqualität wird auf eine niedrige Stufe zurückgesetzt, um einige typische Treiberfehler zu vermeiden.
-Einige Grafikfunktionen werden ausgeschaltet.
-Wir empfehlen die Aktualisierung Ihrer Grafikkartentreiber.
-Sie können die Grafikqualität unter „Einstellungen“ &gt; „Grafik“ wieder erhöhen.
- </notification>
- <notification name="RegionNoTerraforming">
- Die Region [REGION] erlaubt kein Terraforming.
- </notification>
- <notification name="CannotCopyWarning">
- Sie sind nicht berechtigt, dieses Objekt zu kopieren und verlieren es aus Ihrem Inventar, wenn Sie es weggeben. Möchten Sie dieses Objekt anbieten?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="CannotGiveItem">
- Inventarobjekt kann nicht übergeben werden.
- </notification>
- <notification name="TransactionCancelled">
- Transaktion abgebrochen.
- </notification>
- <notification name="TooManyItems">
- Es können maximal 42 Objekte auf einmal in das Inventar transferiert werden.
- </notification>
- <notification name="NoItems">
- Sie sind nicht berechtigt, die ausgewählten Objekte zu kopieren.
- </notification>
- <notification name="CannotCopyCountItems">
- Sie sind nicht berechtigt, [COUNT] der ausgewählten Objekte zu kopieren. Diese Objekte werden aus Ihrem Inventar gelöscht.
-Möchten Sie diese Objekte weggeben?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="CannotGiveCategory">
- Sie sind nicht berechtigt, den ausgewählten Ordner zu kopieren.
- </notification>
- <notification name="FreezeAvatar">
- Diesen Avatar einfrieren?
-Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren.
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Auftauen" yestext="Einfrieren"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- [AVATAR_NAME] einfrieren?
-Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren.
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Auftauen" yestext="Einfrieren"/>
- </notification>
- <notification name="EjectAvatarFullname">
- [AVATAR_NAME] von Ihrem Land werfen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Ausschließen und Verbannen" yestext="Ausschließen"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- Diesen Avatar aus Ihrem Land werfen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- [AVATAR_NAME] aus Ihrem Land werfen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/>
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- FEHLER: Zu viele Objekte ausgewählt.
- </notification>
- <notification name="AcquireErrorObjectSpan">
- FEHLER: Die Objekte überspannen mehrere Regionen.
-Verschieben Sie alle betreffenden Objekte in dieselbe Region.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-[_URL] für Informationen zum Kauf von L$ öffnen?
- <url name="url">
- http://de.secondlife.com/app/currency/
- </url>
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Verknüpfung dieser [COUNT] Objekte nicht möglich.
-Sie können maximal [MAX] Objekte verknüpfen.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- Sie können nur vollständige Objektsätze verknüpfen und Sie müssen mehr als ein Objekt auswählen.
- </notification>
- <notification name="CannotLinkModify">
- Verknüpfung nicht möglich, da Sie nicht alle Objekte bearbeiten dürfen.
-
-Stellen Sie sicher, dass kein Objekt gesperrt ist und alle Objekte Ihnen gehören.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Verknüpfung nicht möglich, da nicht alle Objekte denselben Eigentümer haben.
-
-Stellen Sie sicher, dass alle ausgewählten Objekte Ihnen gehören.
- </notification>
- <notification name="NoFileExtension">
- Kein Dateityp für Datei: „[FILE]“
-
-Vergewissern Sie sich, dass die Datei den richtigen Dateityp hat.
- </notification>
- <notification name="InvalidFileExtension">
- Ungültige Datei-Endung [EXTENSION]
-Erwartet wurde [VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Sounddatei konnte nicht hochgeladen werden:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Die Datei ist anscheinend keine RIFF WAVE-Datei:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Die Datei ist anscheinend keine PCM WAVE-Audiodatei:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Die Datei hat eine ungültige Anzahl Tonkanäle (muss Mono oder Stereo sein):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Die Sample-Rate dieser Datei wird nicht unterstützt (muss 44,1 K sein):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Die Word-Größe dieser Datei wird nicht unterstützt (muss 8 oder 16 Bit sein):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- „Daten“-Chunk in WAV-Header nicht gefunden:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Audiodatei ist zu lang (max. 10 Sekunden):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- Problem mit Datei [FILE]:
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Temporäre komprimierte Sounddatei konnte nicht geöffnet werden: [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Unbekannter Vorbis-Kodierungsfehler in: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Datei konnte nicht kodiert werden: [FILE]
- </notification>
- <notification name="CorruptResourceFile">
- Ressourcendatei beschädigt: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Unbekannte Linden-Ressourcenversion in Datei: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Ausgabedatei konnte nicht erstellt werden: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- Der Mehrfach-Upload von Animationsdateien wird zurzeit von [APP_NAME] nicht unterstützt.
- </notification>
- <notification name="CannotUploadReason">
- Datei [FILE] kann aus folgendem Grund nicht hochgeladen werden: [REASON]
-Bitte versuchen Sie es erneut.
- </notification>
- <notification name="LandmarkCreated">
- „[LANDMARK_NAME]“ wurde zum Ordner „[FOLDER_NAME]“ hinzugefügt.
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- „Rekompilieren“ nicht möglich.
-Objekt mit Skript wählen.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- „Rekompilieren“ nicht möglich.
-
-Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- „Zurücksetzen“ nicht möglich.
-
-Wählen Sie Objekte mit Skripts.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- „Zurücksetzen“ nicht möglich.
-
-Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- „Ausführen“ von Skripts nicht möglich.
-
-Wählen Sie Objekte mit Skripts.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- „Deaktivieren“ von Skripts nicht möglich.
-
-Wählen Sie Objekte mit Skripts.
- </notification>
- <notification name="NoFrontmostFloater">
- Kein vorderster Floater zum Speichern.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- Ihre Suchanfrage wurde geändert.
-Zu kurze Begriffe wurden entfernt.
-
-Ihre Suchanfrage: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Ihre Suchbegriffe sind zu kurz.
-Es wurde keine Suche durchgeführt.
- </notification>
- <notification name="CouldNotTeleportReason">
- Teleport fehlgeschlagen.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen sich zum Wechsel der Region eventuell neu anmelden.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal.
-Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an.
- </notification>
- <notification name="nolandmark_tport">
- Das System konnte das Landmarken-Ziel nicht finden.
- </notification>
- <notification name="timeout_tport">
- Das System konnte keine Teleport-Verbindung herstellen.
-Versuchen Sie es später noch einmal.
- </notification>
- <notification name="noaccess_tport">
- Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
- </notification>
- <notification name="missing_attach_tport">
- Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen.
- </notification>
- <notification name="too_many_uploads_tport">
- Die Asset-Warteschlange in dieser Region ist zurzeit überlastet.
-Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region.
- </notification>
- <notification name="expired_tport">
- Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
- </notification>
- <notification name="expired_region_handoff">
- Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
- </notification>
- <notification name="no_host">
- Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut.
- </notification>
- <notification name="no_inventory_host">
- Das Inventarsystem ist zurzeit nicht verfügbar.
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- Landeigentümer kann nicht festgelegt werden:
-Keine Parzelle ausgewählt.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Inhaltsidentifizierung nicht möglich:
-Keine Parzelle ausgewählt.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Inhaltsidentifizierung nicht möglich:
-Keine Region ausgewählt.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Land kann nicht aufgegeben werden:
-Keine Parzelle ausgewählt.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Land kann nicht aufgegeben werden:
-Region nicht gefunden.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Land kann nicht gekauft werden:
-Keine Parzelle ausgewählt.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Land kann nicht gekauft werden:
-Kann die Region nicht finden, in der sich dieses Land befindet.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Das Fenster „Land kaufen“ kann erst geschlossen werden, nachdem [APP_NAME] den Transaktionspreis geschätzt hat.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Land kann nicht übertragen werden:
-Keine Parzelle ausgewählt.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Land kann nicht übertragen werden:
-Keine Gruppe ausgewählt.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Land kann nicht übertragen werden:
-Kann die Region nicht finden, in der sich dieses Land befindet.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Land kann nicht übertragen werden:
-Mehrere Parzellen ausgewählt.
-
-Wählen Sie eine einzelne Parzelle.
- </notification>
- <notification name="ParcelCanPlayMedia">
- Dieser Ort kann Streaming-Medien abspielen.
-Streaming-Medien erfordern eine schnelle Internet-Verbindung.
-
-Streaming-Medien abspielen, wenn verfügbar?
-(Sie können diese Option später unter „Einstellungen“ &gt; „Audio &amp; Video“ ändern.)
- <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/>
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Land kann nicht übertragen werden:
-Warte auf Server für Eigentümerinformationen.
-
-Bitte versuchen Sie es erneut.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Land kann nicht übertragen werden:
-Die Region [REGION] erlaubt keine Landübertragung.
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Land kann nicht aufgegeben werden:
-Server muss Parzelleninformation aktualisieren.
-
-Versuchen Sie es in einigen Sekunden erneut.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Land kann nicht aufgegeben werden:
-Die ausgewählten Parzellen gehören Ihnen nicht.
-
-Wählen Sie eine einzelne Parzelle.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Land kann nicht aufgegeben werden:
-Ihnen fehlt die Berechtigung zur Freigabe dieser Parzelle.
-Parzellen, die Ihnen gehören, werden grün dargestellt.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Land kann nicht aufgegeben werden:
-Kann die Region nicht finden, in der sich dieses Land befindet.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Land kann nicht aufgegeben werden:
-Die Region [REGION] erlaubt keine Landübertragung.
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Land kann nicht aufgegeben werden:
-Zum Freigeben müssen Sie eine ganze Parzelle auswählen.
-
-Wählen Sie eine ganze Parzelle oder teilen Sie Ihre Parzelle.
- </notification>
- <notification name="ReleaseLandWarning">
- Sie sind im Begriff, [AREA] qm Land aufzugeben.
-Wenn Sie diese Parzelle aufgeben, wird sie ohne L$-Erstattung von Ihrem Landbesitz entfernt.
-
-Dieses Land aufgeben?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Land kann nicht aufgeteilt werden:
-
-Keine Parzellen ausgewählt.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Land kann nicht aufgeteilt werden:
-
-Sie haben eine ganze Parzelle ausgewählt.
-Wählen Sie einen Parzellenabschnitt aus.
- </notification>
- <notification name="LandDivideWarning">
- Wenn Sie dieses Land teilen, wird diese Parzelle in zwei geteilt, jede mit ihren eigenen Einstellungen. Einige dieser Einstellungen werden aufgrund dieses Vorgangs zurückgesetzt.
-
-Land teilen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Land kann nicht aufgeteilt werden:
-Kann die Region nicht finden, in der sich dieses Land befindet.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Land kann nicht zusammengelegt werden:
-Kann die Region nicht finden, in der sich dieses Land befindet.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Land kann nicht zusammengelegt werden:
-Keine Parzellen ausgewählt.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Land kann nicht zusammengelegt werden:
-Sie haben nur eine Parzelle ausgewählt.
-
-Wählen Sie Land auf beiden Parzellen aus.
- </notification>
- <notification name="CannotJoinLandSelection">
- Land kann nicht zusammengelegt werden:
-Sie müssen mehrere Parzellen auswählen.
-
-Wählen Sie Land auf beiden Parzellen aus.
- </notification>
- <notification name="JoinLandWarning">
- Beim Zusammenlegen entsteht aus den vom Auswahlrechteck
-erfassten Parzellen eine große Parzelle.
-Sie müssen der neuen Parzelle einen Namen geben und ihre Optionen festlegen.
-
-Land zusammenlegen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- Um das Objekt kopieren oder anzeigen zu können, müssen Sie zuerst diese Notizkarte speichern. Notizkarte speichern?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Dieses Objekt in Ihr Inventar kopieren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Kopieren"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Auflösung konnte nicht auf [RESX] x [RESY] gesetzt werden
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Fehler: Nicht definierte Gräser: [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Fehler: Nicht definierte Bäume: [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- „[NAME]“ konnte nicht in Kleidungsdatei gespeichert werden. Geben Sie Speicherplatz auf dem Computer frei und speichern Sie das Kleidungsstück erneut.
- </notification>
- <notification name="CannotSaveToAssetStore">
- [NAME] kann nicht in Zentral-Asset-Speicher geladen werden.
-Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen Minuten noch einmal an und speichern Sie es erneut.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Sie wurden von [SECOND_LIFE] abgemeldet:
- [MESSAGE]
-Klicken Sie auf „IM &amp; Chat anzeigen“, um vorhandene Nachrichten und Chat weiterhin anzuzeigen. Klicken Sie andernfalls auf „Beenden“, um [APP_NAME] sofort zu beenden.
- <usetemplate name="okcancelbuttons" notext="Beenden" yestext="IM &amp; Chat anzeigen"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Landkauf für Gruppe nicht möglich:
-Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
- </notification>
- <notification label="Freund hinzufügen" name="AddFriend">
- Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen.
-
-[NAME] Freundschaft anbieten?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification label="Freund hinzufügen" name="AddFriendWithMessage">
- Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen.
-
-[NAME] Freundschaft anbieten?
- <form name="form">
- <input name="message">
- Wollen wir Freunde sein?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Möchten Sie [FIRST_NAME] [LAST_NAME] aus Ihrer Freundesliste entfernen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Möchten Sie mehrere Freunde aus Ihrer Freundesliste entfernen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Möchten Sie alle geskripteten Objekte von
-** [AVATAR_NAME] **
-auf allen anderen Ländern in diesem Sim löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Möchten Sie ALLE geskripteten Objekte von
-** [AVATAR_NAME] **
-auf ALLEN LÄNDERN in diesem Sim LÖSCHEN?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Möchten Sie ALLE Objekte (einschließlich geskriptete) von
-** [AVATAR_NAME] **
-auf ALLEN LÄNDERN in diesem Sim LÖSCHEN?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- Geben Sie einen Namen für die Anzeige ein.
- </notification>
- <notification name="MinClassifiedPrice">
- Der Mindestbetrag für die Listung ist [MIN_PRICE] L$.
-
-Geben sie einen höheren Betrag ein.
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Mindestens ein ausgewähltes Objekt ist gesperrt.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Mindestens ein ausgewähltes Objekt kann nicht kopiert werden.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Mindestens eines der ausgewählten Objekt gehört nicht Ihnen.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Mindestens ein Objekt ist gesperrt.
-Mindestens ein Objekt kann nicht kopiert werden.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Mindestens ein Objekt ist gesperrt.
-Mindestens ein Objekt gehört nicht Ihnen.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Mindestens ein Objekt kann nicht kopiert werden.
-Mindestens ein Objekt gehört nicht Ihnen.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Mindestens ein Objekt ist gesperrt.
-Mindestens ein Objekt kann nicht kopiert werden.
-Mindestens ein Objekt gehört nicht Ihnen.
-
-Möchten Sie diese Objekte löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Mindestens ein Objekt ist gesperrt.
-
-Möchten Sie diese Objekte nehmen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen.
-Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer angewandt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren.
-
-Möchten Sie diese Objekte nehmen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Mindestens ein Objekt ist gesperrt.
-Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen.
-Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer abgefragt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren.
-Die aktuelle Auswahl können Sie jedoch aufnehmen.
-
-Möchten Sie diese Objekte nehmen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Landkauf nicht möglich, da die Auswahl mehrere Regionen umfasst.
-
-Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut.
- </notification>
- <notification name="DeedLandToGroup">
- Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt.
-Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt.
-
-Der Gruppe „[GROUP_NAME]“
- [AREA] m² Land schenken?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt.
-Die Schenkung beinhaltet eine Landübertragung an die Gruppe von „[FIRST_NAME] [LAST_NAME]“.
-Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt.
-
-Der Gruppe „[GROUP_NAME]“
- [AREA] m² Land schenken?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Es wurden sichere Anzeige-Einstellungen gewählt, da die Option -safe verwendet wurde.
- </notification>
- <notification name="DisplaySetToRecommended">
- Es wurden die für Ihre Systemkonfiguration empfohlenen Anzeige-Einstellungen gewählt.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- </notification>
- <notification name="AvatarMovedDesired">
- Ihr gewünschter Zielort ist zurzeit nicht verfügbar.
-Sie wurden zur nächstgelegenen Region teleportiert.
- </notification>
- <notification name="AvatarMovedLast">
- Ihr letzter Standort ist zurzeit nicht verfügbar.
-Sie wurden zur nächstgelegenen Region teleportiert.
- </notification>
- <notification name="AvatarMovedHome">
- Ihr Heimatort ist zurzeit nicht verfügbar.
-Sie wurden zur nächstgelegenen Region teleportiert.
-Sie müssen eventuell einen neuen Heimatort festlegen.
- </notification>
- <notification name="ClothingLoading">
- Ihre Kleidung wird noch heruntergeladen.
-Sie können [SECOND_LIFE] normal verwenden. Andere Benutzer können Sie korrekt dargestellt sehen.
- <form name="form">
- <ignore name="ignore" text="Das Herunterladen der Kleidung dauert lange"/>
- </form>
- </notification>
- <notification name="FirstRun">
- Die Installation von [APP_NAME] ist abgeschlossen.
-
-Wenn Sie [SECOND_LIFE] das erste Mal verwenden, müssen Sie ein Konto anlegen, bevor Sie sich anmelden können.
-Möchten Sie auf www.secondlife.com ein Konto erstellen?
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Neues Konto..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Es gibt Probleme mit der Verbindung. Möglicherweise besteht ein Problem mit Ihrer Internetverbindung oder dem [SECOND_LIFE_GRID].
-
-Überprüfen Sie Ihre Internetverbindung und versuchen Sie es dann erneut, oder klicken Sie auf Hilfe, um zu [SUPPORT_SITE] zu gelangen, oder klicken Sie auf Teleportieren, um nach Hause zu teleportieren.
- <url name="url">
- http://de.secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Hilfe"/>
- <button name="Teleport" text="Teleportieren"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Ihr Avatar erscheint jeden Moment.
-
-Benutzen Sie die Pfeiltasten, um sich fortzubewegen.
-Drücken Sie F1 für Hilfe oder für weitere Informationen über [SECOND_LIFE].
-Bitte wählen Sie einen männlichen oder weiblichen Avatar.
-Sie können sich später noch umentscheiden.
- <usetemplate name="okcancelbuttons" notext="Weiblich" yestext="Männlich"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] [PRICE] L$ Sie haben nicht genügend L$, um diese Aktion auszuführen.
- </notification>
- <notification name="GrantedModifyRights">
- [FIRST_NAME] [LAST_NAME] hat Ihnen die Erlaubnis erteilt, ihre/seine Objekte zu bearbeiten.
- </notification>
- <notification name="RevokedModifyRights">
- Ihnen wurden die Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME] entzogen.
- </notification>
- <notification name="FlushMapVisibilityCaches">
- Der Kartencache dieser Region wird geleert.
-Diese Aktion ist nur beim Debugging sinnvoll.
-(Auf dem Produktionssystem warten Sie einfach 5 Minuten. Die Karten werden nach erneuter Anmeldung automatisch aktualisiert.)
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Sie können jeweils nur ein Objekt kaufen. Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Es kann nur jeweils der Inhalt von einem Objekt kopiert werden.
-Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Alle Einwohner in dieser Region nach Hause teleportieren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Möchten Sie wirklich alle Objekte zurückgeben, die [USER_NAME] gehören?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Die Regionstexturen konnten nicht festgelegt werden:
-Die Terraintextur [TEXTURE_NUM] hat eine ungültige Bit-Tiefe [TEXTURE_BIT_DEPTH].
-
-Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“.
- </notification>
- <notification name="InvalidTerrainSize">
- Die Regionstexturen konnten nicht festgelegt werden:
-Die Terraintextur [TEXTURE_NUM] ist mit [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] zu groß.
-
-Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“.
- </notification>
- <notification name="RawUploadStarted">
- Hochladen gestartet. Je nach Verbindungsgeschwindigkeit kann der Vorgang bis zu 2 Minuten dauern.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Möchten Sie das aktuelle Terrain formen, es zum Mittelpunkt der oberen und unteren Terraingrenzen und zum Standard des „Zurücksetzen“-Tools machen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- Es sind maximal [MAX_AGENTS] zulässige Einwohner erlaubt.
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- Es sind maximal [MAX_BANNED] verbannte Einwohner erlaubt.
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- Fehler beim Versuch, [NUM_ADDED] Agenten hinzuzufügen:
-Überschreitet den Grenzwert [MAX_AGENTS] [LIST_TYPE] um [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- Es sind maximal [MAX_GROUPS] zulässige Gruppen erlaubt.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Formen"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- Es sind maximal [MAX_MANAGER] verbannte Einwohner erlaub.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Der Eigentümer des Grundstücks kann nicht zur Liste der „Verbannten Einwohner“ hinzugefügt werden.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Das Aussehen lässt sich erst ändern, wenn Kleider und Form/Gestalt geladen sind.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- Der Name der Anzeige muss mit einem Buchstaben von A bis Z oder einer Ziffer beginnen. Satzzeichen sind nicht erlaubt.
- </notification>
- <notification name="CantSetBuyObject">
- „Objekt kaufen“ nicht möglich, da das Objekt nicht zum Verkauf freigegeben ist.
-Geben Sie das Objekt zum Verkauf frei und versuchen Sie es erneut.
- </notification>
- <notification name="FinishedRawDownload">
- Raw-Terrain-Datei wurde heruntergeladen nach:
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- Eine neue Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können.
- <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadWindows">
- Eine aktualisierte Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- Eine aktualisierte Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- Eine neue Version von [SUPPORT_SITE] ist verfügbar.
-[MESSAGE]
-Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können.
- <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadLinux">
- Eine neue Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- Eine neue Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadMacMandatory">
- Eine neue Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können.
-
-In Ihren Anwendungsordner herunterladen?
- <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadMac">
- Eine aktualisierte Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
-
-In Ihren Anwendungsordner herunterladen?
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- Eine aktualisierte Version von [APP_NAME] ist verfügbar.
-[MESSAGE]
-Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
-
-In Ihren Anwendungsordner herunterladen?
- <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
- </notification>
- <notification name="DeedObjectToGroup">
- Bei Übertragung dieses Objekts erhält die Gruppe:
-* An das Objekt bezahlte L$
- <usetemplate ignoretext="Bestätigen, bevor ich ein Objekt an eine Gruppe übertrage" name="okcancelignore" notext="Abbrechen" yestext="Übertragung"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Möchten Sie Ihren Internetbrowser öffnen, um diesen Inhalt anzuzeigen?
- <usetemplate ignoretext="Meinen Browser starten, um eine Webseite anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- de.secondlife.com öffnen, um Ihr Konto zu verwalten?
- <usetemplate ignoretext="Meinen Browser starten, um mein Konto zu verwalten" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Informieren Sie sich im [SECOND_LIFE] Wiki, wie man Sicherheitsprobleme richtig meldet.
- <usetemplate ignoretext="Meinen Browser starten, um anzuzeigen, wie ein Sicherheitsproblem gemeldet werden soll" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Besuchen Sie das [SECOND_LIFE] QA-Wiki.
- <usetemplate ignoretext="Meinen Browser starten, um das QA-Wiki anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Im [SECOND_LIFE] Allgemeine-Fragen-Tracker können Sie Fehler und andere Probleme melden.
- <usetemplate ignoretext="Meinen Browser starten, um die Datenbank für Fehler und Verbesserungsvorschläge anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Im offiziellen Linden-Blog finden Sie die neuesten Nachrichten und Informationen.
- <usetemplate ignoretext="Meinen Browser starten, um das Blog anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Möchten Sie den Scripting Guide öffnen?
- <usetemplate ignoretext="Meinen Browser starten, um den Scripting Guide anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Möchten Sie das LSL-Portal besuchen?
- <usetemplate ignoretext="Meinen Browser starten, um das LSL-Portal anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
- </notification>
- <notification name="ReturnToOwner">
- Möchten Sie die ausgewählten Objekte an ihre Eigentümer zurückgeben? Transferierbare übertragene Objekte werden ihren früheren Eigentümern zurückgegeben.
-
-*WARNUNG* Nicht transferierbare übertragene Objekte werden dabei gelöscht!
- <usetemplate ignoretext="Bestätigen, bevor Objekte an Ihre Eigentümer zurückgegeben werden" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- Sie sind Mitglied der Gruppe [GROUP].
-Diese Gruppe verlassen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/>
- </notification>
- <notification name="MuteLinden">
- Lindens können nicht stummgeschaltet werden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Eine Parzelle, die bereits zum Verkauf freigegeben ist, kann nicht versteigert werden. Deaktivieren Sie den Landverkauf, wenn Sie das Land zur Versteigerung freigeben möchten.
- </notification>
- <notification label="Objekt nach Name stummschalten fehlgeschlagen" name="MuteByNameFailed">
- Dieser Name ist bereits stummgeschaltet.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Diese Aktion ist zwar erlaubt, aber beim Löschen von Inhalten wird das Objekt beschädigt. Möchten Sie dieses Element löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Sie können gerade keine Visitenkarte übergeben. Warten Sie kurz und versuchen Sie es dann noch einmal.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- Beschäftigt-Modus ist aktiviert.
-Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachrichten) erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden abgelehnt. Alle Inventar-Angebote werden in Ihren Papierkorb geschoben.
- <usetemplate ignoretext="Ich ändere meinen Status zu Beschäftigt" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab.
-[NAME] hat Sie eingeladen, einer Gruppe beizutreten.
-[INVITE]
- <usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/>
- </notification>
- <notification name="KickUser">
- Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen?
- <form name="form">
- <input name="message">
- Sie wurden von einem Administrator abgemeldet.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Beim Hinauswerfen aller Personen vom Grid welche Meldung anzeigen?
- <form name="form">
- <input name="message">
- Sie wurden von einem Administrator abgemeldet.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Beim Einfrieren dieses Benutzers welche Meldung anzeigen?
- <form name="form">
- <input name="message">
- Sie wurden eingefroren. Bewegen oder Chatten ist nicht mehr möglich. Ein Administrator wird sich über IM an Sie wenden
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Beim Auftauen dieses Benutzers welche Meldung anzeigen?
- <form name="form">
- <input name="message">
- Sie sind nicht mehr eingefroren.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="OfferTeleport">
- Teleport an Ihre Position mit der folgenden Meldung anbieten?
- <form name="form">
- <input name="message">
- Triff mich in [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Benutzer an Ihrem Standort herbeirufen?
- <form name="form">
- <input name="message">
- Triff mich in [REGION]
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Möchten Sie sich wirklich teleportieren?
- <usetemplate ignoretext="Bestätigen, dass ich zu einer Landmarke teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/>
- </notification>
- <notification name="TeleportToPick">
- Nach [PICK] teleportieren?
- <usetemplate ignoretext="Bestätigen, dass ich zu einer Position in Auswahl teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/>
- </notification>
- <notification label="Nachricht an alle auf diesem Grundstück" name="MessageEstate">
- Geben Sie eine kurze Nachricht ein, die an jede Person auf Ihrem Grundstück gesendet wird.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification label="Linden-Grundstück ändern" name="ChangeLindenEstate">
- Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
-
-Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet.
-
-Fortfahren?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification label="Zugang zu Linden-Grundstück ändern" name="ChangeLindenAccess">
- Sie sind im Begriff, die Zugangsliste für ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
-
-Dies ist GEFÄHRLICH und sollte nur erfolgen, um Objekte/L$ per Hack in und aus dem Raster zu entfernen.
-Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belastet.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateAllowedAgentAdd">
- Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateAllowedAgentRemove">
- Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Erlaubnisliste entfernen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateAllowedGroupAdd">
- Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Gruppen-Erlaubnisliste hinzufügen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateAllowedGroupRemove">
- Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Gruppen-Erlaubnisliste entfernen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateBannedAgentAdd">
- Zugang nur für dieses Grundstück oder für [ALL_ESTATES] verweigern?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateBannedAgentRemove">
- Einwohner nur für dieses Grundstück oder für alle [ALL_ESTATES] von der Bannliste entfernen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateManagerAdd">
- Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] festlegen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Grundstück wählen" name="EstateManagerRemove">
- Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] entfernen?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
- </notification>
- <notification label="Rauswurf bestätigen" name="EstateKickUser">
- Benutzer [EVIL_USER] von diesem Grundstück werfen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Möchten Sie den Grundstücksvertrag wirklich ändern?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind.
-
-Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten.
-
-Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten?
- <url name="url">
- http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB)
- </url>
- <usetemplate ignoretext="Ich kann diese Region aufgrund der Alterseinstufung nicht betreten" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Aufgrund Ihrer Alterseinstufung dürfen Sie diese Region nicht betreten.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Sie dürfen diese Region aufgrund der Einstellung Ihrer Alterseinstufung nicht betreten.
-
-Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten &gt; Einstellungen... &gt; Allgemein.
- <form name="form">
- <button name="OK" text="Einstellung ändern"/>
- <button name="Cancel" text="Schließen"/>
- <ignore name="ignore" text="Meine Alterseinstufung lässt nicht zu, dass ich eine Region betrete."/>
- </form>
- </notification>
- <notification name="LandClaimAccessBlocked">
- Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind.
-
-Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land.
-
-Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten?
- <url name="url">
- http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB)
- </url>
- <usetemplate ignoretext="Ich habe aufgrund der Alterseinstufung keinen Anspruch auf dieses Land" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- Sie haben aufgrund der Einstellung Ihrer Alterseinstufung keinen Anspruch auf dieses Land.
-
-Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten &gt; Einstellungen... &gt; Allgemein.
- <usetemplate ignoretext="Meine Alterseinstufung lässt nicht zu, dass ich auf Land Anspruch erhebe" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind.
-
-Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen.
-
-Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten?
- <url name="url">
- http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB)
- </url>
- <usetemplate ignoretext="Ich kann aufgrund der Alterseinstufung dieses Land nicht kaufen" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- Sie können aufgrund Ihrer Einstellung für Alterseinstufung dieses Land nicht kaufen.
-
-Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten &gt; Einstellungen... &gt; Allgemein.
- <usetemplate ignoretext="Meine Alterseinstufung lässt nicht zu, dass ich Land kaufe" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- &quot;Zu viele Prims wurden ausgewählt. Bitte wählen Sie höchstens [MAX_PRIM_COUNT] Prims aus und versuchen Sie es erneut.&quot;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Problem beim Import des Grundstückvertrags.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Es gibt Probleme beim Hinzufügen eines neuen Grundstücksverwalters. Bei mindestens einem Grundstück ist die Verwalterliste voll.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Problem beim Hinzufügen zu dieser Grundstücksliste. Bei mindestens einem Grundstück ist die Liste voll.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Notizkarten-Asset konnte nicht geladen werden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Unzureichende Rechte, um die mit der angeforderten Asset-ID verbundene Notizkarte anzuzeigen.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- Asset-ID für Notizkarte fehlt in Datenbank.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Hinweis: Anzeigengebühren werden nicht zurückerstattet.
-
-Anzeige für [AMOUNT] L$ veröffentlichen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Enthält diese Anzeige Mature-Inhalte?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="SetGroupMature">
- Beschäftigt sich diese Gruppe mit Mature-Inhalten?
- <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification label="Neustart bestätigen" name="ConfirmRestart">
- Möchten Sie diese Region in 2 Minuten neu starten?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification label="Nachricht an alle in dieser Region" name="MessageRegion">
- Geben Sie eine kurze Nachricht ein, die an jede Person in dieser Region gesendet wird.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification label="Alterseinstufung der Region ändern" name="RegionMaturityChange">
- Die Alterseinstufung dieser Region wurde aktualisiert.
-Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt.
- </notification>
- <notification label="Falsche Voice-Version" name="VoiceVersionMismatch">
- Diese Version von [APP_NAME] mit dem Voice-Chat-Feature in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie [APP_NAME] aktualisieren.
- </notification>
- <notification label="Objekte können nicht gekauft werden" name="BuyObjectOneOwner">
- Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden.
-Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
- </notification>
- <notification label="Inhalte können nicht gekauft werden" name="BuyContentsOneOnly">
- Inhalte können jeweils nur für ein Objekt gekauft werden.
-Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
- </notification>
- <notification label="Inhalte können nicht gekauft werden" name="BuyContentsOneOwner">
- Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden.
-Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
- </notification>
- <notification name="BuyOriginal">
- Von [OWNER] Originalobjekt für [PRICE] L$ kaufen?
-Sie werden der Eigentümer dieses Objekts.
-Sie können das Objekt:
- Bearbeiten: [MODIFYPERM]
- Kopieren: [COPYPERM]
- Verkaufen oder weggeben: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Originalobjekt für [PRICE] L$ kaufen?
-Sie werden der Eigentümer dieses Objekts.
-Sie können das Objekt:
- Bearbeiten: [MODIFYPERM]
- Kopieren: [COPYPERM]
- Verkaufen oder weggeben: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Von [OWNER] Kopie für [PRICE] L$ kaufen?
-Das Objekt wird in Ihr Inventar kopiert.
-Sie können das Objekt:
- Bearbeiten: [MODIFYPERM]
- Kopieren: [COPYPERM]
- Verkaufen oder weggeben: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Kopie für [PRICE] L$ kaufen?
-Das Objekt wird in Ihr Inventar kopiert.
-Sie können das Objekt:
- Bearbeiten: [MODIFYPERM]
- Kopieren: [COPYPERM]
- Verkaufen oder weggeben: [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Von [OWNER] Inhalte für [PRICE] L$ kaufen?
-Die Inhalte werden in Ihr Inventar kopiert.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Inhalte für [PRICE] L$ kaufen?
-Die Inhalte werden in Ihr Inventar kopiert.
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Transaktion:
-[ACTION]
-
-Möchten Sie diesen Kauf fortsetzen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Transaktion:
-[ACTION]
-
-Möchten Sie diesen Kauf fortsetzen?
-Geben Sie Ihr Kennwort erneut ein und klicken Sie auf OK.
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Hinweis:
-Sie haben die Position dieser Auswahl aktualisiert, aber die anderen Daten behalten ihre ursprünglichen Werte.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt.
-Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben.
-
-Inventarobjekt(e) verschieben?
- <usetemplate ignoretext="Warnhinweis anzeigen, bevor ich nicht kopierbare Artikel aus einem Objekt verschiebe" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt. Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben.
-Da es sich um ein geskriptetes Objekt handelt, geht die Skriptfunktion beim Verschieben in das Inventar möglicherweise verloren.
-
-Inventarobjekt(e) verschieben?
- <usetemplate ignoretext="Warnhinweis anzeigen, bevor ich nicht-kopierbare Artikel verschiebe, die ein geskriptetes Objekt beschädigen können" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Achtung: Die Klickaktion „Objekt bezahlen&quot; wurde eingestellt. Diese funktioniert jedoch nicht, wenn ein Skript mit einer Geldtransaktion () hinzugefügt wird.
- <form name="form">
- <ignore name="ignore" text="I habe die Aktion „Objekt bezahlen&quot; eingestellt, während ich ein Objekt gebaut habe, dass kein Geld()-Skript enthält."/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt.
- </notification>
- <notification name="WebLaunchAccountHistory">
- de.secondlife.com öffnen, um Ihre Konto-Statistik anzuzeigen?
- <usetemplate ignoretext="Meinen Browser starten, um meine Konto-Statistik anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
- </notification>
- <notification name="ConfirmQuit">
- Wirklich beenden?
- <usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Verwenden Sie dieses Tool, um Verletzungen der Servicebedingungen und Community-Standards zu melden. Siehe:
-
-http://secondlife.com/corporate/tos.php
-http://secondlife.com/corporate/cs.php
-
-Alle gemeldeten Verletzungen der Servicebedingungen und Community-Standards werden geprüft und geklärt Sie können den Prozess im Incident Report (Vorfallsbericht) verfolgen:
-
-http://secondlife.com/support/incidentreport.php
- </notification>
- <notification name="HelpReportAbuseEmailEO">
- WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab.
--
-Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet. Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind.
-(Den Vertrag können Sie unter „Welt“ &gt; „Land-Info“ einsehen.)
--
-Das Resultat, das sich aus dieser Meldung ergibt, betrifft nur diese Region; der Einwohnerzugang zu anderen Bereichen von [SECOND_LIFE] ist davon nicht betroffen. Nur Linden Lab kann den Zugang zu [SECOND_LIFE] beschränken.
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Wählen Sie eine Missbrauchskategorie aus.
-Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Geben Sie den Namen des Täters ein.
-Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Bitte geben Sie den Ort an, an dem der Missbrauch stattgefunden hat.
-Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Bitte geben Sie eine Zusammenfassung des Vorfalls ein.
-Eine genaue Zusammenfassung hilft uns, Fälle von Missbrauch zu ahnden.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Bitte geben Sie eine ausführliche Beschreibung des Vorfalls ein.
-Eine möglichst genaue Beschreibung mit Namen und Einzelheiten hilft uns, Fälle von Missbrauch zu ahnden.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Sehr geehrte(r) Einwohner(in),
-
-Sie melden eine Urheberrechtsverletzung. Sind Sie wirklich sicher, dass Sie eine Verletzung des Urheberrechts melden möchten?
-
-1. Missbrauch melden. Wenn Sie der Meinung sind, ein Einwohner nutzt das Berechtigungssystem von [SECOND_LIFE] auf unerlaubte Weise zu seinem Vorteil aus, indem er zum Beispiel einen CopyBot oder ähnliche Kopiertools verwendet und damit eine Urheberrechtsverletzung begeht, können Sie diesen Missbrauch melden. Das Missbrauchsteam untersucht etwaige Verstöße gegen die [SECOND_LIFE] Community Standards oder die Nutzungsbedingungen und verhängt entsprechende Strafen. Das Missbrauchsteam ist jedoch nicht dafür zuständig, Inhalte aus der [SECOND_LIFE]-Welt zu entfernen und reagiert auch nicht auf entsprechende Anfragen.
-
-2. Der DMCA oder das Entfernen von Inhalten. Sie können das Entfernen von Inhalten aus [SECOND_LIFE] beantragen. Dazu MÜSSEN Sie eine Urheberrechtsverletzung gemäß den in unserer DMCA-Richtlinie unter http://secondlife.com/corporate/dmca.php dargelegten Anweisungen einreichen.
-
-Wenn Sie mit der Missbrauchmeldung jetzt fortfahren möchten, schließen Sie bitte dieses Fenster und senden Sie Ihren Bericht ein. Möglicherweise müssen Sie Kategorie „CopyBot oder Berechtigungs-Exploit“ auswählen.
-
-Vielen Dank,
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- Die folgenden erforderlichen Komponenten fehlen in [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Vorhandenen Anhang ersetzen" name="ReplaceAttachment">
- An dieser Körperstelle ist bereits ein Objekt angebracht.
-Möchten Sie es mit dem ausgewählten Objekt ersetzen?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Einen bestehenden Anhang mit dem ausgewählten Artikel ersetzen"/>
- <button ignore="Automatisch ersetzen" name="Yes" text="OK"/>
- <button ignore="Nie ersetzen" name="No" text="Abbrechen"/>
- </form>
- </notification>
- <notification label="Beschäftigt-Modus-Warnung" name="BusyModePay">
- Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können.
-
-Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Modus Beschäftigt bin."/>
- <button ignore="Beschäftigt-Modus immer deaktivieren" name="Yes" text="OK"/>
- <button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Sind Sie sicher, dass Sie den Inhalt Ihres Papierkorbs löschen möchten?
- <usetemplate ignoretext="Bestätigen, bevor der Ordner Papierkorb im Inventar geleert wird" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Sind Sie sicher, dass Sie Ihren Reise-, Internet- und Suchverlauf löschen möchten?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Sind Sie sicher, dass Sie Ihre Cookies löschen möchten?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Die Liste mit gespeicherten URLs wirklich löschen?
- <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Sind Sie sicher, dass Sie den Inhalt Ihres Ordners Fundbüro löschen möchten?
- <usetemplate ignoretext="Bestätigen, bevor der Ordner Fundbüro im Inventar geleert wird" name="okcancelignore" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="CopySLURL">
- Die folgende SLurl wurde in die Zwischenablage kopiert:
- [SLURL]
-
-Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dieser Position zu ermöglichen. Oder versuchen Sie es selbst: kopieren Sie die SLurl in die Adressleiste eines Webbrowsers.
- <form name="form">
- <ignore name="ignore" text="Slurl wurde in meine Zwischenablage kopiert"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- Die gespeicherte Voreinstellung überschreiben?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- [SKY] löschen?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="WLNoEditDefault">
- Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden.
- </notification>
- <notification name="WLMissingSky">
- Diese Tageszyklusdatei verweist auf eine fehlende Himmel-Datei: [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben?
- <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="NewSkyPreset">
- Wählen Sie einen Namen für den neuen Himmel.
- <form name="form">
- <input name="message">
- Neue Voreinstellung
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- Voreinstellung bereits vorhanden!
- </notification>
- <notification name="NewWaterPreset">
- Wählen Sie einen Namen für die neue Wasservoreinstellung.
- <form name="form">
- <input name="message">
- Neue Voreinstellung
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- Voreinstellung bereits vorhanden!
- </notification>
- <notification name="WaterNoEditDefault">
- Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Neue Chat-Sitzung mit [RECIPIENT] konnte nicht gestartet werden.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- Ihre Chat-Sitzung mit [NAME] muss beendet werden.
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Sie können kein Objekt kaufen, während es angehängt ist.
- </notification>
- <notification label="Info zur Abfrage der Abbucherlaubnis" name="DebitPermissionDetails">
- Wenn Sie dieser Anfrage zustimmen, erhält das Skript die Erlaubnis, regelmäßig Linden-Dollar (L$) von Ihrem Konto abzubuchen. Diese Erlaubnis kann nur zurückgezogen werden, wenn der Eigentümer das Objekt löscht oder die Skripts in dem Objekt zurücksetzt.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Möchten Sie das neu erstellte Kleidungsstück automatisch anziehen?
- <usetemplate ignoretext="Die Kleidung, die während dem Bearbeiten meines Aussehens erstellt wird, sofort anziehen" name="okcancelignore" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="NotAgeVerified">
- Sie müssen altersüberprüft sein, um diesen Bereich betreten zu können. Möchten Sie auf der [SECOND_LIFE]-Webseite Ihr Alter verifizieren lassen?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=de
- </url>
- <usetemplate ignoretext="Ich habe mein Alter nicht verifizieren lassen" name="okcancelignore" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Um diesen Bereich besuchen zu können, müssen Ihre Zahlungsinformationen gespeichert sein. Möchten Sie diese Einstellung auf der [SECOND_LIFE]-Webseite einrichten?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=de
- </url>
- <usetemplate ignoretext="Meine Zahlungsinformation ist nicht gespeichert" name="okcancelignore" notext="Nein" yestext="Ja"/>
- </notification>
- <notification name="MissingString">
- Der String „[STRING_NAME]“ fehlt in strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Abgebrochen
- </notification>
- <notification name="CancelledSit">
- Sitzen beendet
- </notification>
- <notification name="CancelledAttach">
- Anhängen abgebrochen
- </notification>
- <notification name="ReplacedMissingWearable">
- Fehlende(s) Kleidung/Körperteil mit Standard ersetzt.
- </notification>
- <notification name="GroupNotice">
- Betreff: [SUBJECT], Nachricht: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [FIRST] [LAST] ist online
- </notification>
- <notification name="FriendOffline">
- [FIRST] [LAST] ist offline
- </notification>
- <notification name="AddSelfFriend">
- Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- In-Welt- und Website-Fotos werden hochgeladen...
-(Dauert ca. 5 Minuten.)
- </notification>
- <notification name="UploadPayment">
- Sie haben für das Hochladen [AMOUNT] L$ bezahlt.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Das Website-Foto wurde hochgeladen.
- </notification>
- <notification name="UploadSnapshotDone">
- In-Welt-Foto hochgeladen
- </notification>
- <notification name="TerrainDownloaded">
- Terrain.raw heruntergeladen
- </notification>
- <notification name="GestureMissing">
- Geste [NAME] fehlt in Datenbank.
- </notification>
- <notification name="UnableToLoadGesture">
- Geste [NAME] konnte nicht geladen werden.
-Bitte versuchen Sie es erneut.
- </notification>
- <notification name="LandmarkMissing">
- Landmarke fehlt in Datenbank.
- </notification>
- <notification name="UnableToLoadLandmark">
- Landmarke konnte nicht geladen werden. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="CapsKeyOn">
- Die Umschalttaste ist aktiv.
-Dies kann die Eingabe Ihres Passworts beeinflussen.
- </notification>
- <notification name="NotecardMissing">
- Notizkarte fehlt in Datenbank.
- </notification>
- <notification name="NotecardNoPermissions">
- Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte.
- </notification>
- <notification name="RezItemNoPermissions">
- Keine Berechtigung zum Rezzen von Objekten.
- </notification>
- <notification name="UnableToLoadNotecard">
- Notizkarten-Asset konnte nicht geladen werden.
- </notification>
- <notification name="ScriptMissing">
- Skript fehlt in Datenbank.
- </notification>
- <notification name="ScriptNoPermissions">
- Unzureichende Rechte zur Anzeige des Skripts.
- </notification>
- <notification name="UnableToLoadScript">
- Skript konnte nicht geladen werden. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="IncompleteInventory">
- Die von Ihnen angebotenen Inhalte sind noch nicht vollständig lokal verfügbar. Warten Sie kurz und wiederholen Sie dann das Angebot.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Geschützte Kategorien können nicht geändert werden.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Geschützte Kategorien können nicht entfernt werden.
- </notification>
- <notification name="OfferedCard">
- Sie haben [FIRST] [LAST] eine Visitenkarte angeboten.
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Kauf nicht möglich. Objektdaten werden noch geladen.
-Bitte versuchen Sie es erneut.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Verknüpfung nicht möglich. Objektdaten werden noch geladen.
-Bitte versuchen Sie es erneut.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Sie können nur von einem Eigentümer auf einmal Objekte kaufen.
-Wählen Sie ein einzelnes Objekt aus.
- </notification>
- <notification name="ObjectNotForSale">
- Dieses Objekt wird nicht verkauft.
- </notification>
- <notification name="EnteringGodMode">
- Gott-Modus aktiviert, Level [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Gott-Modus wird nun de-aktiviert, Level [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Ihnen fehlt die Berechtigung zum Kopieren.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] hat Ihr Inventarangebot akzeptiert.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] hat Ihr Inventarangebot abgelehnt.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Ihre Visitenkarte wurde akzeptiert.
- </notification>
- <notification name="CallingCardDeclined">
- Ihre Visitenkarte wurde abgelehnt.
- </notification>
- <notification name="TeleportToLandmark">
- Jetzt, nachdem Sie das Mainland erreicht haben, können Sie sich an Positionen wie „[NAME]“ teleportieren, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Landmarken“ auswählen.
-Klicken Sie eine Landmarke doppelt an und wählen Sie „Teleportieren“, um an diesen Ort zu gelangen.
- </notification>
- <notification name="TeleportToPerson">
- Jetzt, nachdem Sie das Mainland erreicht haben, können Sie mit Einwohnern wie „[NAME]“ Kontakt aufnehmen, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Visitenkarten“ auswählen.
-Klicken Sie die Karte doppelt an, wählen Sie „Instant Message“ und geben Sie eine Nachricht ein.
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Land kann nicht über Servergrenzen hinweg ausgewählt werden.
-Wählen Sie eine kleinere Landfläche.
- </notification>
- <notification name="SearchWordBanned">
- Einige Begriffe in Ihrer Suchanfrage wurden ausgeschlossen, aufgrund von in den Community Standards definierten Inhaltsbeschränkungen.
- </notification>
- <notification name="NoContentToSearch">
- Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (PG, Mature oder Adult).
- </notification>
- <notification name="GroupVote">
- [NAME] hat eine Abstimmung vorgeschlagen über:
-[MESSAGE]
- <form name="form">
- <button name="VoteNow" text="Abstimmen"/>
- <button name="Later" text="Später"/>
- </form>
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Event-Benachrichtigung:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Teleport" text="Teleportieren"/>
- <button name="Description" text="Beschreibung"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Alle Objekte auf dieser Parzelle, die an den Käufer der Parzelle übertragen werden, sind jetzt markiert.
-
-* Übertragene Bäume und Gräser sind nicht markiert.
- <form name="form">
- <button name="Done" text="Fertig"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Gesten mit demselben Trigger wurden deaktiviert:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Apple QuickTime ist auf Ihrem System anscheinend nicht installiert.
-Laden Sie QuickTime von der QuickTime-Webseite (http://www.apple.com/de/quicktime) herunter, um auf Parzellen, die diese Funktion unterstützen, Streaming-Inhalte wiederzugeben.
- </notification>
- <notification name="NoPlugin">
- Es wurde kein Medien-Plugin gefunden, das &quot;[MIME_TYPE]&quot; ausführen kann. Medien dieses Dateityps sind nicht verfügbar.
- </notification>
- <notification name="MediaPluginFailed">
- Bei folgendem Plugin ist ein Fehler aufgetreten:
- [PLUGIN]
-
-Bitte installieren Sie das Plugin erneut. Falls weiterhin Problem auftreten, kontaktieren Sie bitte den Hersteller.
- <form name="form">
- <ignore name="ignore" text="Ein Plugin kann nicht ausgeführt werden"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- Ihre Objekte auf der ausgewählten Parzelle wurden in Ihr Inventar transferiert.
- </notification>
- <notification name="OtherObjectsReturned">
- Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert.
- </notification>
- <notification name="OtherObjectsReturned2">
- Die Objekte von [FIRST] [LAST] auf dieser
-Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben.
- </notification>
- <notification name="GroupObjectsReturned">
- Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert.
-Transferierbare übertragene Objekte wurden an ihre früheren Eigentümer zurückgegeben.
-Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Alle Objekte auf der ausgewählten Parzelle, die NICHT Ihnen gehören, wurden ihren Eigentümern zurückgegeben.
- </notification>
- <notification name="NotSafe">
- Auf diesem Land ist Schaden aktiviert.
-Verletzungen sind möglich. Wenn Sie sterben, werden Sie zu Ihrem Heimatstandort teleportiert.
- </notification>
- <notification name="NoFly">
- In diesem Bereich ist das Fliegen deaktiviert.
-Fliegen ist hier nicht möglich.
- </notification>
- <notification name="PushRestricted">
- In diesem Bereich ist Stoßen nicht erlaubt.
-Sie können keine anderen Personen stoßen, außer Ihnen gehört das Land.
- </notification>
- <notification name="NoVoice">
- In diesem Bereich ist Voice deaktiviert. Sie werden niemanden sprechen hören.
- </notification>
- <notification name="NoBuild">
- In diesem Bereich ist das Bauen deaktiviert. Sie können keine Objekte bauen oder rezzen.
- </notification>
- <notification name="ScriptsStopped">
- Ein Administrator hat die Skriptausführung in dieser Region vorübergehend deaktiviert.
- </notification>
- <notification name="ScriptsNotRunning">
- In dieser Region werden keine Skipts ausgeführt.
- </notification>
- <notification name="NoOutsideScripts">
- Auf diesem Land sind externe Skripts deaktiviert
-
-Hier funktionieren nur Skripts, die dem Landeigentümer gehören.
- </notification>
- <notification name="ClaimPublicLand">
- Öffentliches Land kann nur in der Region in Besitz genommen werden, in der Sie sich befinden.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. Sie müssen eventuell eine Altersüberprüfung vornehmen und/oder den aktuellsten Viewer installieren.
-
-Bitte besuchen Sie unsere Knowledgebase, um mehr Details über Zugang zu Regionen mit dieser Alterseinstufung zu erhalten.
- </notification>
- <notification name="URBannedFromRegion">
- Sie dürfen diese Region nicht betreten.
- </notification>
- <notification name="NoTeenGridAccess">
- Ihr Konto kann keine Verbindung zu dieser Teen Grid-Region herstellen.
- </notification>
- <notification name="ImproperPaymentStatus">
- Die für den Zutritt zu dieser Region erforderlichen Zahlungsinformationen liegen nicht vor.
- </notification>
- <notification name="MustGetAgeParcel">
- Sie müssen alterüberprüft sein, um diese Parzelle betreten zu können.
- </notification>
- <notification name="NoDestRegion">
- Keine Zielregion gefunden.
- </notification>
- <notification name="NotAllowedInDest">
- Der Zutritt wurde Ihnen verweigert.
- </notification>
- <notification name="RegionParcelBan">
- Diese Parzelle ist abgesperrt und kann nicht überquert werden. Versuchen Sie einen anderen Weg.
- </notification>
- <notification name="TelehubRedirect">
- Sie wurden zu einem Telehub umgeleitet.
- </notification>
- <notification name="CouldntTPCloser">
- Ein Teleport näher am Ziel ist leider nicht möglich.
- </notification>
- <notification name="TPCancelled">
- Teleport abgebrochen.
- </notification>
- <notification name="FullRegionTryAgain">
- Die Region, die Sie betreten möchten, ist im Moment voll.
-Versuchen Sie es in einigen Minuten erneut.
- </notification>
- <notification name="GeneralFailure">
- Allgemeiner Fehler.
- </notification>
- <notification name="RoutedWrongRegion">
- In falsche Region umgeleitet. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="NoValidAgentID">
- Keine gültige Agent ID.
- </notification>
- <notification name="NoValidSession">
- Keine gültige Sitzungs-ID.
- </notification>
- <notification name="NoValidCircuit">
- Kein gültiger Verbindungscode.
- </notification>
- <notification name="NoValidTimestamp">
- Kein gültiger Zeitstempel.
- </notification>
- <notification name="NoPendingConnection">
- Verbindung kann nicht hergestellt werden.
- </notification>
- <notification name="InternalUsherError">
- Interner Fehler beim Versuch, Verbindung mit Agent Usher herzustellen.
- </notification>
- <notification name="NoGoodTPDestination">
- In dieser Region konnte kein gültiges Teleportziel gefunden werden.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Interner Fehler bei Teleport.
- </notification>
- <notification name="NoValidLanding">
- Ein gültiger Landpunkt konnte nicht gefunden werden.
- </notification>
- <notification name="NoValidParcel">
- Es konnte keine gültige Parzelle gefunden werden.
- </notification>
- <notification name="ObjectGiveItem">
- Das Objekt [OBJECTFROMNAME] von [FIRST] [LAST] hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]).
- <form name="form">
- <button name="Keep" text="Behalten"/>
- <button name="Discard" text="Verwerfen"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="ObjectGiveItemUnknownUser">
- Das Objekt [OBJECTFROMNAME] von (unbekannt) hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]).
- <form name="form">
- <button name="Keep" text="Behalten"/>
- <button name="Discard" text="Verwerfen"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME] hat Ihnen ein [OBJECTTYPE] namens „[OBJECTNAME]“ gegeben.
- <form name="form">
- <button name="Keep" text="Behalten"/>
- <button name="Discard" text="Verwerfen"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Beitreten"/>
- <button name="Decline" text="Ablehnen"/>
- <button name="Info" text="Info"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME] hat angeboten, Sie zu ihrem/seinem Standort zu teleportieren:
-
-[MESSAGE]
- <form name="form">
- <button name="Teleport" text="Teleportieren"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Später"/>
- <button name="GoNow..." text="Jetzt gehen..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME] bietet Ihnen die Freundschaft an.
-
-[MESSAGE]
-
-(Standardmäßig werden Sie gegenseitig ihren Online-Status sehen können.)
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- </form>
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME] bietet Ihnen die Freundschaft an.
-
-(Sie werden dadurch den gegenseitigen Online-Status sehen können.)
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] hat Ihr Freundschaftsangebot akzeptiert.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] hat Ihr Freundschaftsangebot abgelehnt.
- </notification>
- <notification name="OfferCallingCard">
- [FIRST] [LAST] bietet Ihnen eine Visitenkarte an.
-Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen.
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- Region wird in [MINUTES] Minuten neu gestartet.
-Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
- </notification>
- <notification name="RegionRestartSeconds">
- Diese Region wird in [SECONDS] neu gestartet.
-Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
- </notification>
- <notification name="LoadWebPage">
- Webseite [URL] laden?
-
-[MESSAGE]
-
-Von Objekt: [OBJECTNAME], Eigentümer: [NAME]?
- <form name="form">
- <button name="Gotopage" text="Zur Seite"/>
- <button name="Cancel" text="Abbrechen"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- [TYPE] nicht in Datenbank.
- </notification>
- <notification name="FailedToFindWearable">
- [TYPE] namens [DESC] nicht in Datenbank.
- </notification>
- <notification name="InvalidWearable">
- Dieser Artikel verwendet eine Funktion, die Ihr Viewer nicht unterstützt. Bitte aktualisieren Sie Ihre Version von [APP_NAME], um diesen Artikel anziehen zu können.
- </notification>
- <notification name="ScriptQuestion">
- Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte:
-
-[QUESTIONS]
-Ist das OK?
- <form name="form">
- <button name="Yes" text="Ja"/>
- <button name="No" text="Nein"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Ein Objekt namens „[OBJECTNAME]“ des Eigentümers „[NAME]“ möchte:
-
-[QUESTIONS]
-Wenn Sie diesem Objekt und seinem Ersteller nicht vertrauen, sollten Sie diese Anfrage ablehnen.
-
-Anfrage gestatten?
- <form name="form">
- <button name="Grant" text="Gewähren"/>
- <button name="Deny" text="Verweigern"/>
- <button name="Details" text="Info..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [FIRST] [LAST]s „[TITLE]“
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorieren"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]s „[TITLE]“
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorieren"/>
- </form>
- </notification>
- <notification name="FirstBalanceIncrease">
- Sie haben gerade [AMOUNT] L$ erhalten.
-Ihr Kontostand wird oben rechts angezeigt.
- </notification>
- <notification name="FirstBalanceDecrease">
- Sie haben gerade [AMOUNT] L$ bezahlt.
-Ihr Kontostand wird oben rechts angezeigt.
- </notification>
- <notification name="FirstSit">
- Sie sitzen.
-Verwenden Sie die Pfeiltasten (oder AWSD-Tasten), um sich umzusehen.
-Um aufzustehen, klicken Sie auf die Schaltfläche „Aufstehen“.
- </notification>
- <notification name="FirstMap">
- Klicken Sie auf die Karte und bewegen Sie die Maus, um sich auf der Karte umzusehen.
-Mit Doppelklick können Sie teleportieren.
-Nutzen Sie die Optionen rechts, um Objekte, Einwohner oder Events anzuzeigen und einen anderen Hintergrund auszuwählen.
- </notification>
- <notification name="FirstBuild">
- Sie haben die Bauwerkzeuge geöffnet. Jedes Objekt, dass Sie sehen wurde mit diesen Werkzeugen gebaut.
- </notification>
- <notification name="FirstTeleport">
- Sie können nur zu bestimmten Bereichen in dieser Region teleportieren. Der Pfeil deutet zu Ihrem Ziel hin. Klicken Sie auf den Pfeil, um diesen auszublenden.
- </notification>
- <notification name="FirstOverrideKeys">
- Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert.
-Probieren Sie die Pfeil- oder WASD-Tasten aus.
-Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden.
-Drücken Sie dazu „M“.
- </notification>
- <notification name="FirstAppearance">
- Sie bearbeiten gerade Ihr Aussehen.
-Verwenden Sie die Pfeiltasten, um sich umzusehen.
-Klicken Sie auf „Alles speichern“, wenn Sie fertig sind.
- </notification>
- <notification name="FirstInventory">
- Dies ist Ihr Inventar. Es enthält Objekte, die Ihnen gehören.
-
-* Um etwas anzuziehen, ziehen Sie es mit der Maus auf Ihren Avatar.
-* Um etwas inworld zu rezzen, ziehen Sie das Objekt auf den Boden.
-* Zum Lesen einer Notizkarte klicken Sie sie doppelt an.
- </notification>
- <notification name="FirstSandbox">
- Dies ist ein Sandkasten. Hier können Einwohner lernen, wie Objekte gebaut werden.
-
-Objekte, die Sie hier bauen, werden gelöscht, nachdem Sie den Sandkasten verlassen. Vergessen Sie nicht, Ihr Werk mit einem Rechtsklick und der Auswahl „Nehmen“ in Ihrem Inventar zu speichern.
- </notification>
- <notification name="FirstFlexible">
- Dieses Objekt ist flexibel. Flexible Objekte müssen die Eigenschaft „Phantom“ haben und dürfen nicht „physisch“ sein.
- </notification>
- <notification name="FirstDebugMenus">
- Sie haben das Menü „Erweitert“ geöffnet.
-
-Um dieses Menü zu aktivieren bzw. deaktivieren:
- Windows Strg-Alt-D
- Mac ⌘-Opt-D
- </notification>
- <notification name="FirstSculptedPrim">
- Sie bearbeiten ein geformtes Primitiv. Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert.
- </notification>
- <notification name="MaxListSelectMessage">
- Sie können maximal [MAX_SELECT] Objekte
-von der Liste auswählen.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] lädt Sie zu einem Voice-Chat ein.
-Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten.
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [FIRST] [LAST] hat eine Instant Message erhalten; die Stummschaltung wurde aufgehoben.
- </notification>
- <notification name="AutoUnmuteByMoney">
- [FIRST] [LAST] hat Geld erhalten; die Stummschaltung wurde aufgehoben.
- </notification>
- <notification name="AutoUnmuteByInventory">
- [FIRST] [LAST] wurde ein Inventarobjekt angeboten; die Stummschaltung wurde aufgehoben.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten.
-Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten.
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] ist einem Voice-Konferenz-Chat beigetreten.
-Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten.
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] lädt Sie zu einem Konferenz-Chat ein.
-Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten.
- <form name="form">
- <button name="Accept" text="Akzeptieren"/>
- <button name="Decline" text="Ablehnen"/>
- <button name="Mute" text="Stummschalten"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- Der Voice-Chat, dem Sie beitreten möchten, [VOICE_CHANNEL_NAME], hat seine maximale Teilnehmerzahl erreicht. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Es tut uns Leid. Dieses Gebiet hat seine maximale Kapazität für Voice-Gespräche erreicht. Bitte versuchen Sie es in einem anderen Gebiet.
- </notification>
- <notification name="VoiceChannelDisconnected">
- Sie haben [VOICE_CHANNEL_NAME] verlassen. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] hat das Gespräch beendet. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] hat Ihren Anruf abgelehnt. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] ist zurzeit nicht erreichbar. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
- </notification>
- <notification name="VoiceLoginRetry">
- Wir erstellen einen Voice-Kanal für Sie. Bitte warten Sie einen Moment.
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Nur Mitglieder einer bestimmten Gruppe dürfen diesen Bereich betreten.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Zugang zur Parzelle verweigert. Sie wurden verbannt.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Zugang zur Parzelle verweigert. Sie stehen nicht auf der Zugangsliste.
- </notification>
- <notification name="VoiceNotAllowed">
- Sie sind nicht berechtigt, einem Voice-Chat in [VOICE_CHANNEL_NAME] beizutreten.
- </notification>
- <notification name="VoiceCallGenericError">
- Fehler beim Versuch, eine Voice-Chat-Verbindung zu [VOICE_CHANNEL_NAME] herzustellen. Bitte versuchen Sie es erneut.
- </notification>
- <notification name="ServerVersionChanged">
- Sie haben eine Region betreten, die eine andere Server-Version verwendet. Dies kann sich auf die Leistung auswirken. Klicken Sie hier, um die Versionshinweise anzuzeigen.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- Die SLurl, auf die Sie geklickt haben, wird nicht unterstützt.
- </notification>
- <notification name="IMToast">
- <form name="form">
- <button name="respondbutton" text="Antworten"/>
- </form>
- </notification>
- <notification name="AttachmentSaved">
- Der Anhang wurde gespeichert.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Hilfethema für dieses Element wurde nicht gefunden.
- </notification>
- <global name="UnsupportedCPU">
- - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen.
- </global>
- <global name="UnsupportedGLRequirements">
- Ihr Computer entspricht nicht den Hardwareanforderungen von [APP_NAME]. [APP_NAME] setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem.
-
-Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter [SUPPORT_SITE].
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - Ihre Grafikkarte entspricht nicht den Mindestanforderungen.
- </global>
- <global name="UnsupportedRAM">
- - Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen.
- </global>
- <global name="PermYes">
- Ja
- </global>
- <global name="PermNo">
- Nein
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Wenn Sie ein Stück Land besitzen, können Sie dies als Ihren Heimatort festlegen.
-Ansonsten können Sie auf der Karte nachsehen und dort Ort suchen, die als „Infohub“ gekennzeichnet sind.
- </global>
-</notifications>
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+ <global name="skipnexttime">
+ Nicht mehr anzeigen
+ </global>
+ <global name="alwayschoose">
+ Diese Option immer auswählen
+ </global>
+ <global name="implicitclosebutton">
+ Schließen
+ </global>
+ <template name="okbutton">
+ <form>
+ <button name="OK" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore"/>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="Cancel" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore"/>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ </form>
+ </template>
+ <notification functor="GenericAcknowledge" label="Unbekannter Warnhinweis" name="MissingAlert">
+ Ihre Version von [APP_NAME] kann den gerade empfangenen Warnhinweis nicht anzeigen. Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben.
+
+Fehlerdetails: Der Warnhinweis &apos;[_NAME]&apos; wurde in notifications.xml nicht gefunden.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="FloaterNotFound">
+ Floater-Fehler: Folgende Steuerelemente wurden nicht gefunden:
+
+[CONTROLS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TutorialNotFound">
+ Derzeit ist kein Tutorial verfügbar.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GenericAlert">
+ [MESSAGE]
+ </notification>
+ <notification name="GenericAlertYesCancel">
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
+ </notification>
+ <notification name="BadInstallation">
+ Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version des Viewers herunter. http://get.secondlife.com
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LoginFailedNoNetwork">
+ Eine Verbindung zum [SECOND_LIFE_GRID] konnte nicht hergestellt werden.
+ &apos;[DIAGNOSTIC]&apos;
+Bitte vergewissern Sie sich, dass Ihre Internetverbindung funktioniert.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MessageTemplateNotFound">
+ Meldungsvorlage [PATH] nicht gefunden.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="WearableSave">
+ Änderung an aktueller Kleidung/Körperteil speichern?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
+ </notification>
+ <notification name="CompileQueueSaveText">
+ Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="CompileQueueSaveBytecode">
+ Eine kompiliertes Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="WriteAnimationFail">
+ Fehler beim Schreiben von Animationsdaten. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="UploadAuctionSnapshotFail">
+ Eine Auktions-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON]
+ </notification>
+ <notification name="UnableToViewContentsMoreThanOne">
+ Es kann nur jeweils der Inhalt von einem Objekt angezeigt werden.
+Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
+ </notification>
+ <notification name="SaveClothingBodyChanges">
+ Änderung an Kleidung/Körperteilen speichern?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/>
+ </notification>
+ <notification name="GrantModifyRights">
+ Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis.
+Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="GrantModifyRightsMultiple">
+ Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis.
+Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="RevokeModifyRights">
+ Möchten Sie [FIRST_NAME] [LAST_NAME] die Änderungsrechte entziehen?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="RevokeModifyRightsMultiple">
+ Möchten Sie den ausgewählten Einwohnern die Änderungsrechte entziehen?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="UnableToCreateGroup">
+ Gruppe konnte nicht erstellt werden.
+[MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PanelGroupApply">
+ [NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Änderungen verwerfen" yestext="Änderungen übernehmen"/>
+ </notification>
+ <notification name="MustSpecifyGroupNoticeSubject">
+ Geben Sie einen Betreff für die Gruppenmitteilung ein.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AddGroupOwnerWarning">
+ Sie sind im Begriff, Gruppenmitgliedern die Rolle [ROLE_NAME] zuzuweisen.
+Diese Rolle kann Mitgliedern nicht mehr entzogen werden.
+Sie müssen die Rolle selbst niederlegen.
+Möchten Sie fortfahren?
+ <usetemplate ignoretext="Bestätigen, bevor ich einen neuen Gruppeneigentümer hinzufüge" name="okcancelignore" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="AssignDangerousActionWarning">
+ Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen.
+
+ *ACHTUNG*
+ Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst -
+ und allen anderen Mitgliedern – Rollen zuweisen, die mehr Rechte
+ beinhalten als sie derzeit haben, und damit nahezu
+ Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit
+ verleihen.
+
+Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="AssignDangerousAbilityWarning">
+ Sie sind im Begriff, der Rolle „[ROLE_NAME]“ die Fähigkeit „[ACTION_NAME]“ zuzuweisen.
+
+ *ACHTUNG*
+ Mitglieder in einer Rolle mit dieser Fähigkeit können sich selbst -
+ und allen anderen Mitgliedern – alle Fähigkeiten zuweisen und
+ damit fast Eigentümerrechte erreichen.
+
+Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="JoinGroupCanAfford">
+ Der Beitritt zu dieser Gruppe kostet [COST] L$.
+Fortfahren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Beitreten"/>
+ </notification>
+ <notification name="JoinGroupCannotAfford">
+ Der Beitritt zu dieser Gruppe kostet [COST] L$.
+Sie haben nicht genug L$, um dieser Gruppe beizutreten.
+ </notification>
+ <notification name="CreateGroupCost">
+ Die Gründung dieser Gruppe kostet 100 L$.
+Gruppen müssen mehr als ein Mitglied haben oder sie werden gelöscht.
+Bitte laden Sie innerhalb von 48 Stunden Mitglieder in Ihre Gruppe ein.
+ <usetemplate canceltext="Abbrechen" name="okcancelbuttons" notext="Abbrechen" yestext="Gruppe für 100 L$ erstellen"/>
+ </notification>
+ <notification name="LandBuyPass">
+ Sie können dieses Land („[PARCEL_NAME]“) für [COST] L$
+[TIME] Stunden lang betreten. Pass kaufen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="SalePriceRestriction">
+ Der Verkaufspreis muss beim allgemeinen Verkauf über 0 L$ liegen.
+Wählen Sie eine bestimmte Person aus, wenn Sie für 0 L$ verkaufen.
+ </notification>
+ <notification name="ConfirmLandSaleChange">
+ Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben.
+Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmLandSaleToAnyoneChange">
+ ACHTUNG: Wenn Sie auf „An jeden verkaufen“ klicken, kann jeder in [SECOND_LIFE] Ihr Land kaufen, auch Einwohner in anderen Regionen.
+
+Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben.
+Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsDeededToGroup">
+ Möchten Sie alle Ihre Objekte auf dieser Parzelle, die der Gruppe „[NAME]“ gehören, zurück in das jeweilige Inventar ihrer vorherigen Eigentümer transferieren?
+
+*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
+
+Objekte: [N]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedByUser">
+ Möchten Sie alle Objekte auf dieser Parzelle, die dem Einwohner „[NAME]“ gehören, in das jeweilige Inventar ihrer Eigentümer transferieren?
+
+Objekte: [N]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedBySelf">
+ Möchten Sie alle Objekte auf dieser Parzelle, die Ihnen gehören, zurück in Ihr Inventar transferieren?
+
+Objekte: [N]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedBySelf">
+ Möchten Sie alle Objekte auf dieser Parzelle, die NICHT Ihnen gehören, in das Inventar ihrer Eigentümer transferieren?
+Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben.
+
+*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
+
+Objekte: [N]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByUser">
+ Möchten Sie alle Objekte auf dieser Parzelle, die NICHT [NAME] gehören, in das Inventar ihrer Eigentümer transferieren?
+Transferierbare Objekte, die an eine Gruppe übertragen wurden, werden ihren vorherigen Eigentümern zurückgegeben.
+
+*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
+
+Objekte: [N]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnAllTopObjects">
+ Möchten Sie alle aufgeführten Objekte ihren Eigentümern zurückgeben?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="DisableAllTopObjects">
+ Möchten Sie alle Objekte in dieser Region deaktivieren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByGroup">
+ Objekte auf dieser Parzelle, die von der Gruppe [NAME] nicht gemeinsam genutzt werden, an ihre Eigentümer zurückgeben?
+
+Objekte: [N]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="UnableToDisableOutsideScripts">
+ Skriptdeaktivierung nicht möglich.
+Für die gesamte Region ist Schaden aktiviert.
+Damit Waffen funktionieren, müssen Skripts erlaubt sein.
+ </notification>
+ <notification name="MustBeInParcel">
+ Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen.
+ </notification>
+ <notification name="PromptRecipientEmail">
+ Bitte geben Sie für den/die Empfänger eine gültige Email-Adresse ein.
+ </notification>
+ <notification name="PromptSelfEmail">
+ Geben Sie Ihre E-Mail-Adresse ein.
+ </notification>
+ <notification name="PromptMissingSubjMsg">
+ Foto mit Standardbetreff bzw. -nachricht als E-Mail versenden?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ErrorProcessingSnapshot">
+ Fehler beim Verarbeiten der Fotodaten
+ </notification>
+ <notification name="ErrorEncodingSnapshot">
+ Fehler beim Erstellen des Fotos!
+ </notification>
+ <notification name="ErrorUploadingPostcard">
+ Ein Foto konnte aus folgendem Grund nicht gesendet werden: [REASON]
+ </notification>
+ <notification name="ErrorUploadingReportScreenshot">
+ Ein Report-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON]
+ </notification>
+ <notification name="MustAgreeToLogIn">
+ Bevor Sie sich in [SECOND_LIFE] anmelden können, müssen Sie den Nutzungsbedingungen zustimmen.
+ </notification>
+ <notification name="CouldNotPutOnOutfit">
+ Outfit konnte nicht angezogen werden.
+Der Outfit-Ordner enthält keine Kleidung, Körperteile oder Anhänge.
+ </notification>
+ <notification name="CannotWearTrash">
+ Kleider oder Körperteile im Papierkorb können nicht getragen werden
+ </notification>
+ <notification name="CannotWearInfoNotComplete">
+ Sie können das Objekt nicht anziehen, weil es noch nicht geladen wurde. Warten Sie kurz und versuchen Sie es dann noch einmal.
+ </notification>
+ <notification name="MustHaveAccountToLogIn">
+ Hoppla! Da fehlt noch etwas.
+Geben Sie bitte den Vor- und den Nachnamen Ihres Avatars ein.
+
+Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten Sie jetzt ein Benutzerkonto anlegen?
+ <url name="url">
+ https://join.secondlife.com/index.php?lang=de-DE
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Erneut versuchen" yestext="Neues Benutzerkonto anlegen"/>
+ </notification>
+ <notification name="AddClassified">
+ Anzeigen erscheinen für eine Woche unter „Anzeigen“ im Suchverzeichnis. Füllen Sie Ihre Anzeige aus und klicken Sie auf „Veröffentlichen...“, um sie zum Verzeichnis hinzuzufügen. Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf „Veröffentlichen“ klicken. Wenn Sie mehr bezahlen oder ein Benutzer nach Ihren Suchbegriffen sucht, erscheint Ihre Anzeige weiter oben in der Liste.
+ <usetemplate ignoretext="So wird eine neue Anzeige erstellt" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="DeleteClassified">
+ Anzeige „[NAME]“ löschen?
+Gebühren werden nicht rückerstattet.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ClassifiedSave">
+ Änderung an Anzeige [NAME] speichern?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
+ </notification>
+ <notification name="DeleteAvatarPick">
+ Auswahl [PICK] löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="PromptGoToEventsPage">
+ Zur [SECOND_LIFE] Events-Webseite?
+ <url name="url">
+ http://de.secondlife.com/events/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="SelectProposalToView">
+ Wählen Sie ein Angebot zur Ansicht.
+ </notification>
+ <notification name="SelectHistoryItemToView">
+ Wählen Sie ein Element zur Ansicht.
+ </notification>
+ <notification name="ResetShowNextTimeDialogs">
+ Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="SkipShowNextTimeDialogs">
+ Möchten Sie alle Popups, die übersprungen werden können, deaktivieren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="CacheWillClear">
+ Der Cache wird nach einem Neustart von [APP_NAME] geleert.
+ </notification>
+ <notification name="CacheWillBeMoved">
+ Der Cache wird nach einem Neustart von [APP_NAME] verschoben.
+Hinweis: Der Cache wird dabei gelöscht/geleert.
+ </notification>
+ <notification name="ChangeConnectionPort">
+ Die Port-Einstellungen werden nach einem Neustart von [APP_NAME] wirksam.
+ </notification>
+ <notification name="ChangeSkin">
+ Die neue Benutzeroberfläche wird nach einem Neustart von [APP_NAME] angewendet.
+ </notification>
+ <notification name="GoToAuctionPage">
+ Zur [SECOND_LIFE]-Webseite, um Auktionen anzuzeigen oder ein Gebot abzugeben?
+ <url name="url">
+ http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="SaveChanges">
+ Änderungen speichern?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/>
+ </notification>
+ <notification name="GestureSaveFailedTooManySteps">
+ Speichern der Geste fehlgeschlagen.
+Die Geste besteht aus zu vielen Schritten.
+Löschen Sie einige Schritte und versuchen Sie es erneut.
+ </notification>
+ <notification name="GestureSaveFailedTryAgain">
+ Speichern der Geste fehlgeschlagen. Warten Sie kurz und versuchen Sie es dann noch einmal.
+ </notification>
+ <notification name="GestureSaveFailedObjectNotFound">
+ Geste konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden.
+Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
+ </notification>
+ <notification name="GestureSaveFailedReason">
+ Eine Geste konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Geste bitte später.
+ </notification>
+ <notification name="SaveNotecardFailObjectNotFound">
+ Notizkarte konnte nicht gespeichert werden, da das Objekt oder das zugehörige Objektinventar nicht gefunden wurden.
+Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
+ </notification>
+ <notification name="SaveNotecardFailReason">
+ Eine Notizkarte konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie die Notizkarte bitte später.
+ </notification>
+ <notification name="ScriptCannotUndo">
+ Es konnten nicht alle Änderungen in Ihrer Skriptversion rückgängig gemacht werden.
+Möchten Sie die letzte gespeicherte Version vom Server laden?
+(**Warnung** Dieser Vorgang kann nicht rückgängig gemacht werden.)
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="SaveScriptFailReason">
+ Ein Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später.
+ </notification>
+ <notification name="SaveScriptFailObjectNotFound">
+ Skript konnte nicht gespeichert werden, weil das zugehörige Objekt nicht gefunden wurde.
+Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
+ </notification>
+ <notification name="SaveBytecodeFailReason">
+ Ein kompiliertes Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später.
+ </notification>
+ <notification name="StartRegionEmpty">
+ Sie haben keine Start-Region festgelegt.
+Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Heimatort“ als Startposition aus.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CouldNotStartStopScript">
+ Skript konnte nicht gestartet oder beendet werden, weil das zugehörige Objekt nicht gefunden wurde.
+Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
+ </notification>
+ <notification name="CannotDownloadFile">
+ Dateidownload nicht möglich
+ </notification>
+ <notification name="CannotWriteFile">
+ Datei [[FILE]] kann nicht geschrieben werden
+ </notification>
+ <notification name="UnsupportedHardware">
+ Achtung: Ihr System erfüllt nicht die Mindestanforderungen von [APP_NAME]. Dies kann eine schlechte Darstellungsleistung in [APP_NAME] zur Folge haben. Bei nicht unterstützten Systemkonfigurationen kann Ihnen unsere [SUPPORT_SITE] leider nicht helfen.
+
+MINDESTANF.
+Die Seite [_URL] für weitere Informationen öffnen?
+ <url name="url" option="0">
+ http://secondlife.com/support/sysreqs.php?lang=de
+ </url>
+ <usetemplate ignoretext="Meine Hardware wird nicht unterstützt" name="okcancelignore" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="UnknownGPU">
+ Ihr System verwendet eine uns zurzeit unbekannte Grafikkarte.
+Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde. [APP_NAME] wird wahrscheinlich korrekt ausgeführt werden, jedoch sollten Sie Ihre Grafikeinstellungen anpassen, um eine bessere Darstellung zu erzielen.
+(Einstellungen &gt; Grafik).
+ <form name="form">
+ <ignore name="ignore" text="Meine Grafikkarte konnte nicht identifiziert werden."/>
+ </form>
+ </notification>
+ <notification name="DisplaySettingsNoShaders">
+ [APP_NAME] ist bei der Initialisierung der Grafiktreiber abgestürzt.
+Die Grafikqualität wird auf eine niedrige Stufe zurückgesetzt, um einige typische Treiberfehler zu vermeiden.
+Einige Grafikfunktionen werden ausgeschaltet.
+Wir empfehlen die Aktualisierung Ihrer Grafikkartentreiber.
+Sie können die Grafikqualität unter „Einstellungen“ &gt; „Grafik“ wieder erhöhen.
+ </notification>
+ <notification name="RegionNoTerraforming">
+ Die Region [REGION] erlaubt kein Terraforming.
+ </notification>
+ <notification name="CannotCopyWarning">
+ Sie sind nicht berechtigt, dieses Objekt zu kopieren und verlieren es aus Ihrem Inventar, wenn Sie es weggeben. Möchten Sie dieses Objekt anbieten?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="CannotGiveItem">
+ Inventarobjekt kann nicht übergeben werden.
+ </notification>
+ <notification name="TransactionCancelled">
+ Transaktion abgebrochen.
+ </notification>
+ <notification name="TooManyItems">
+ Es können maximal 42 Objekte auf einmal in das Inventar transferiert werden.
+ </notification>
+ <notification name="NoItems">
+ Sie sind nicht berechtigt, die ausgewählten Objekte zu kopieren.
+ </notification>
+ <notification name="CannotCopyCountItems">
+ Sie sind nicht berechtigt, [COUNT] der ausgewählten Objekte zu kopieren. Diese Objekte werden aus Ihrem Inventar gelöscht.
+Möchten Sie diese Objekte weggeben?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="CannotGiveCategory">
+ Sie sind nicht berechtigt, den ausgewählten Ordner zu kopieren.
+ </notification>
+ <notification name="FreezeAvatar">
+ Diesen Avatar einfrieren?
+Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren.
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Auftauen" yestext="Einfrieren"/>
+ </notification>
+ <notification name="FreezeAvatarFullname">
+ [AVATAR_NAME] einfrieren?
+Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten oder mit der Welt interagieren.
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Auftauen" yestext="Einfrieren"/>
+ </notification>
+ <notification name="EjectAvatarFullname">
+ [AVATAR_NAME] von Ihrem Land werfen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Ausschließen und Verbannen" yestext="Ausschließen"/>
+ </notification>
+ <notification name="EjectAvatarNoBan">
+ Diesen Avatar aus Ihrem Land werfen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/>
+ </notification>
+ <notification name="EjectAvatarFullnameNoBan">
+ [AVATAR_NAME] aus Ihrem Land werfen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/>
+ </notification>
+ <notification name="AcquireErrorTooManyObjects">
+ FEHLER: Zu viele Objekte ausgewählt.
+ </notification>
+ <notification name="AcquireErrorObjectSpan">
+ FEHLER: Die Objekte überspannen mehrere Regionen.
+Verschieben Sie alle betreffenden Objekte in dieselbe Region.
+ </notification>
+ <notification name="PromptGoToCurrencyPage">
+ [EXTRA]
+
+[_URL] für Informationen zum Kauf von L$ öffnen?
+ <url name="url">
+ http://de.secondlife.com/app/currency/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="UnableToLinkObjects">
+ Verknüpfung dieser [COUNT] Objekte nicht möglich.
+Sie können maximal [MAX] Objekte verknüpfen.
+ </notification>
+ <notification name="CannotLinkIncompleteSet">
+ Sie können nur vollständige Objektsätze verknüpfen und Sie müssen mehr als ein Objekt auswählen.
+ </notification>
+ <notification name="CannotLinkModify">
+ Verknüpfung nicht möglich, da Sie nicht alle Objekte bearbeiten dürfen.
+
+Stellen Sie sicher, dass kein Objekt gesperrt ist und alle Objekte Ihnen gehören.
+ </notification>
+ <notification name="CannotLinkDifferentOwners">
+ Verknüpfung nicht möglich, da nicht alle Objekte denselben Eigentümer haben.
+
+Stellen Sie sicher, dass alle ausgewählten Objekte Ihnen gehören.
+ </notification>
+ <notification name="NoFileExtension">
+ Kein Dateityp für Datei: „[FILE]“
+
+Vergewissern Sie sich, dass die Datei den richtigen Dateityp hat.
+ </notification>
+ <notification name="InvalidFileExtension">
+ Ungültige Datei-Endung [EXTENSION]
+Erwartet wurde [VALIDS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotUploadSoundFile">
+ Sounddatei konnte nicht hochgeladen werden:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotRIFF">
+ Die Datei ist anscheinend keine RIFF WAVE-Datei:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotPCM">
+ Die Datei ist anscheinend keine PCM WAVE-Audiodatei:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChannelCount">
+ Die Datei hat eine ungültige Anzahl Tonkanäle (muss Mono oder Stereo sein):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidSampleRate">
+ Die Sample-Rate dieser Datei wird nicht unterstützt (muss 44,1 K sein):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidWordSize">
+ Die Word-Größe dieser Datei wird nicht unterstützt (muss 8 oder 16 Bit sein):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidHeader">
+ „Daten“-Chunk in WAV-Header nicht gefunden:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidTooLong">
+ Audiodatei ist zu lang (max. 10 Sekunden):
+[FILE]
+ </notification>
+ <notification name="ProblemWithFile">
+ Problem mit Datei [FILE]:
+
+[ERROR]
+ </notification>
+ <notification name="CannotOpenTemporarySoundFile">
+ Temporäre komprimierte Sounddatei konnte nicht geöffnet werden: [FILE]
+ </notification>
+ <notification name="UnknownVorbisEncodeFailure">
+ Unbekannter Vorbis-Kodierungsfehler in: [FILE]
+ </notification>
+ <notification name="CannotEncodeFile">
+ Datei konnte nicht kodiert werden: [FILE]
+ </notification>
+ <notification name="CorruptResourceFile">
+ Ressourcendatei beschädigt: [FILE]
+ </notification>
+ <notification name="UnknownResourceFileVersion">
+ Unbekannte Linden-Ressourcenversion in Datei: [FILE]
+ </notification>
+ <notification name="UnableToCreateOutputFile">
+ Ausgabedatei konnte nicht erstellt werden: [FILE]
+ </notification>
+ <notification name="DoNotSupportBulkAnimationUpload">
+ Der Mehrfach-Upload von Animationsdateien wird zurzeit von [APP_NAME] nicht unterstützt.
+ </notification>
+ <notification name="CannotUploadReason">
+ Datei [FILE] kann aus folgendem Grund nicht hochgeladen werden: [REASON]
+Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="LandmarkCreated">
+ „[LANDMARK_NAME]“ wurde zum Ordner „[FOLDER_NAME]“ hinzugefügt.
+ </notification>
+ <notification name="CannotCreateLandmarkNotOwner">
+ Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoScripts">
+ „Rekompilieren“ nicht möglich.
+Objekt mit Skript wählen.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoPermission">
+ „Rekompilieren“ nicht möglich.
+
+Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoScripts">
+ „Zurücksetzen“ nicht möglich.
+
+Wählen Sie Objekte mit Skripts.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoPermission">
+ „Zurücksetzen“ nicht möglich.
+
+Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen.
+ </notification>
+ <notification name="CannotSetRunningSelectObjectsNoScripts">
+ „Ausführen“ von Skripts nicht möglich.
+
+Wählen Sie Objekte mit Skripts.
+ </notification>
+ <notification name="CannotSetRunningNotSelectObjectsNoScripts">
+ „Deaktivieren“ von Skripts nicht möglich.
+
+Wählen Sie Objekte mit Skripts.
+ </notification>
+ <notification name="NoFrontmostFloater">
+ Kein vorderster Floater zum Speichern.
+ </notification>
+ <notification name="SeachFilteredOnShortWords">
+ Ihre Suchanfrage wurde geändert.
+Zu kurze Begriffe wurden entfernt.
+
+Ihre Suchanfrage: [FINALQUERY]
+ </notification>
+ <notification name="SeachFilteredOnShortWordsEmpty">
+ Ihre Suchbegriffe sind zu kurz.
+Es wurde keine Suche durchgeführt.
+ </notification>
+ <notification name="CouldNotTeleportReason">
+ Teleport fehlgeschlagen.
+[REASON]
+ </notification>
+ <notification name="invalid_tport">
+ Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </notification>
+ <notification name="invalid_region_handoff">
+ Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen sich zum Wechsel der Region eventuell neu anmelden.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </notification>
+ <notification name="blocked_tport">
+ Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal.
+Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an.
+ </notification>
+ <notification name="nolandmark_tport">
+ Das System konnte das Landmarken-Ziel nicht finden.
+ </notification>
+ <notification name="timeout_tport">
+ Das System konnte keine Teleport-Verbindung herstellen.
+Versuchen Sie es später noch einmal.
+ </notification>
+ <notification name="noaccess_tport">
+ Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
+ </notification>
+ <notification name="missing_attach_tport">
+ Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen.
+ </notification>
+ <notification name="too_many_uploads_tport">
+ Die Asset-Warteschlange in dieser Region ist zurzeit überlastet.
+Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region.
+ </notification>
+ <notification name="expired_tport">
+ Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
+ </notification>
+ <notification name="expired_region_handoff">
+ Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
+ </notification>
+ <notification name="no_host">
+ Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut.
+ </notification>
+ <notification name="no_inventory_host">
+ Das Inventarsystem ist zurzeit nicht verfügbar.
+ </notification>
+ <notification name="CannotSetLandOwnerNothingSelected">
+ Landeigentümer kann nicht festgelegt werden:
+Keine Parzelle ausgewählt.
+ </notification>
+ <notification name="CannotSetLandOwnerMultipleRegions">
+ Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut.
+ </notification>
+ <notification name="ForceOwnerAuctionWarning">
+ Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="CannotContentifyNothingSelected">
+ Inhaltsidentifizierung nicht möglich:
+Keine Parzelle ausgewählt.
+ </notification>
+ <notification name="CannotContentifyNoRegion">
+ Inhaltsidentifizierung nicht möglich:
+Keine Region ausgewählt.
+ </notification>
+ <notification name="CannotReleaseLandNothingSelected">
+ Land kann nicht aufgegeben werden:
+Keine Parzelle ausgewählt.
+ </notification>
+ <notification name="CannotReleaseLandNoRegion">
+ Land kann nicht aufgegeben werden:
+Region nicht gefunden.
+ </notification>
+ <notification name="CannotBuyLandNothingSelected">
+ Land kann nicht gekauft werden:
+Keine Parzelle ausgewählt.
+ </notification>
+ <notification name="CannotBuyLandNoRegion">
+ Land kann nicht gekauft werden:
+Kann die Region nicht finden, in der sich dieses Land befindet.
+ </notification>
+ <notification name="CannotCloseFloaterBuyLand">
+ Das Fenster „Land kaufen“ kann erst geschlossen werden, nachdem [APP_NAME] den Transaktionspreis geschätzt hat.
+ </notification>
+ <notification name="CannotDeedLandNothingSelected">
+ Land kann nicht übertragen werden:
+Keine Parzelle ausgewählt.
+ </notification>
+ <notification name="CannotDeedLandNoGroup">
+ Land kann nicht übertragen werden:
+Keine Gruppe ausgewählt.
+ </notification>
+ <notification name="CannotDeedLandNoRegion">
+ Land kann nicht übertragen werden:
+Kann die Region nicht finden, in der sich dieses Land befindet.
+ </notification>
+ <notification name="CannotDeedLandMultipleSelected">
+ Land kann nicht übertragen werden:
+Mehrere Parzellen ausgewählt.
+
+Wählen Sie eine einzelne Parzelle.
+ </notification>
+ <notification name="ParcelCanPlayMedia">
+ Dieser Ort kann Streaming-Medien abspielen.
+Streaming-Medien erfordern eine schnelle Internet-Verbindung.
+
+Streaming-Medien abspielen, wenn verfügbar?
+(Sie können diese Option später unter „Einstellungen“ &gt; „Audio &amp; Video“ ändern.)
+ <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/>
+ </notification>
+ <notification name="CannotDeedLandWaitingForServer">
+ Land kann nicht übertragen werden:
+Warte auf Server für Eigentümerinformationen.
+
+Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="CannotDeedLandNoTransfer">
+ Land kann nicht übertragen werden:
+Die Region [REGION] erlaubt keine Landübertragung.
+ </notification>
+ <notification name="CannotReleaseLandWatingForServer">
+ Land kann nicht aufgegeben werden:
+Server muss Parzelleninformation aktualisieren.
+
+Versuchen Sie es in einigen Sekunden erneut.
+ </notification>
+ <notification name="CannotReleaseLandSelected">
+ Land kann nicht aufgegeben werden:
+Die ausgewählten Parzellen gehören Ihnen nicht.
+
+Wählen Sie eine einzelne Parzelle.
+ </notification>
+ <notification name="CannotReleaseLandDontOwn">
+ Land kann nicht aufgegeben werden:
+Ihnen fehlt die Berechtigung zur Freigabe dieser Parzelle.
+Parzellen, die Ihnen gehören, werden grün dargestellt.
+ </notification>
+ <notification name="CannotReleaseLandRegionNotFound">
+ Land kann nicht aufgegeben werden:
+Kann die Region nicht finden, in der sich dieses Land befindet.
+ </notification>
+ <notification name="CannotReleaseLandNoTransfer">
+ Land kann nicht aufgegeben werden:
+Die Region [REGION] erlaubt keine Landübertragung.
+ </notification>
+ <notification name="CannotReleaseLandPartialSelection">
+ Land kann nicht aufgegeben werden:
+Zum Freigeben müssen Sie eine ganze Parzelle auswählen.
+
+Wählen Sie eine ganze Parzelle oder teilen Sie Ihre Parzelle.
+ </notification>
+ <notification name="ReleaseLandWarning">
+ Sie sind im Begriff, [AREA] qm Land aufzugeben.
+Wenn Sie diese Parzelle aufgeben, wird sie ohne L$-Erstattung von Ihrem Landbesitz entfernt.
+
+Dieses Land aufgeben?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNothingSelected">
+ Land kann nicht aufgeteilt werden:
+
+Keine Parzellen ausgewählt.
+ </notification>
+ <notification name="CannotDivideLandPartialSelection">
+ Land kann nicht aufgeteilt werden:
+
+Sie haben eine ganze Parzelle ausgewählt.
+Wählen Sie einen Parzellenabschnitt aus.
+ </notification>
+ <notification name="LandDivideWarning">
+ Wenn Sie dieses Land teilen, wird diese Parzelle in zwei geteilt, jede mit ihren eigenen Einstellungen. Einige dieser Einstellungen werden aufgrund dieses Vorgangs zurückgesetzt.
+
+Land teilen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNoRegion">
+ Land kann nicht aufgeteilt werden:
+Kann die Region nicht finden, in der sich dieses Land befindet.
+ </notification>
+ <notification name="CannotJoinLandNoRegion">
+ Land kann nicht zusammengelegt werden:
+Kann die Region nicht finden, in der sich dieses Land befindet.
+ </notification>
+ <notification name="CannotJoinLandNothingSelected">
+ Land kann nicht zusammengelegt werden:
+Keine Parzellen ausgewählt.
+ </notification>
+ <notification name="CannotJoinLandEntireParcelSelected">
+ Land kann nicht zusammengelegt werden:
+Sie haben nur eine Parzelle ausgewählt.
+
+Wählen Sie Land auf beiden Parzellen aus.
+ </notification>
+ <notification name="CannotJoinLandSelection">
+ Land kann nicht zusammengelegt werden:
+Sie müssen mehrere Parzellen auswählen.
+
+Wählen Sie Land auf beiden Parzellen aus.
+ </notification>
+ <notification name="JoinLandWarning">
+ Beim Zusammenlegen entsteht aus den vom Auswahlrechteck
+erfassten Parzellen eine große Parzelle.
+Sie müssen der neuen Parzelle einen Namen geben und ihre Optionen festlegen.
+
+Land zusammenlegen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmNotecardSave">
+ Um das Objekt kopieren oder anzeigen zu können, müssen Sie zuerst diese Notizkarte speichern. Notizkarte speichern?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmItemCopy">
+ Dieses Objekt in Ihr Inventar kopieren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Kopieren"/>
+ </notification>
+ <notification name="ResolutionSwitchFail">
+ Auflösung konnte nicht auf [RESX] x [RESY] gesetzt werden
+ </notification>
+ <notification name="ErrorUndefinedGrasses">
+ Fehler: Nicht definierte Gräser: [SPECIES]
+ </notification>
+ <notification name="ErrorUndefinedTrees">
+ Fehler: Nicht definierte Bäume: [SPECIES]
+ </notification>
+ <notification name="CannotSaveWearableOutOfSpace">
+ „[NAME]“ konnte nicht in Kleidungsdatei gespeichert werden. Geben Sie Speicherplatz auf dem Computer frei und speichern Sie das Kleidungsstück erneut.
+ </notification>
+ <notification name="CannotSaveToAssetStore">
+ [NAME] kann nicht in Zentral-Asset-Speicher geladen werden.
+Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen Minuten noch einmal an und speichern Sie es erneut.
+ </notification>
+ <notification name="YouHaveBeenLoggedOut">
+ Sie wurden von [SECOND_LIFE] abgemeldet:
+ [MESSAGE]
+Klicken Sie auf „IM &amp; Chat anzeigen“, um vorhandene Nachrichten und Chat weiterhin anzuzeigen. Klicken Sie andernfalls auf „Beenden“, um [APP_NAME] sofort zu beenden.
+ <usetemplate name="okcancelbuttons" notext="Beenden" yestext="IM &amp; Chat anzeigen"/>
+ </notification>
+ <notification name="OnlyOfficerCanBuyLand">
+ Landkauf für Gruppe nicht möglich:
+Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
+ </notification>
+ <notification label="Freund hinzufügen" name="AddFriend">
+ Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen.
+
+[NAME] Freundschaft anbieten?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification label="Freund hinzufügen" name="AddFriendWithMessage">
+ Freunde können sich gegenseitig die Berechtigung erteilen, sich auf der Karte zu verfolgen und Online-Status Benachrichtigungen zu empfangen.
+
+[NAME] Freundschaft anbieten?
+ <form name="form">
+ <input name="message">
+ Wollen wir Freunde sein?
+ </input>
+ <button name="Offer" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="RemoveFromFriends">
+ Möchten Sie [FIRST_NAME] [LAST_NAME] aus Ihrer Freundesliste entfernen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="RemoveMultipleFromFriends">
+ Möchten Sie mehrere Freunde aus Ihrer Freundesliste entfernen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedPublicObjectsByUser">
+ Möchten Sie alle geskripteten Objekte von
+** [AVATAR_NAME] **
+auf allen anderen Ländern in diesem Sim löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedObjectsByUser">
+ Möchten Sie ALLE geskripteten Objekte von
+** [AVATAR_NAME] **
+auf ALLEN LÄNDERN in diesem Sim LÖSCHEN?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllObjectsByUser">
+ Möchten Sie ALLE Objekte (einschließlich geskriptete) von
+** [AVATAR_NAME] **
+auf ALLEN LÄNDERN in diesem Sim LÖSCHEN?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BlankClassifiedName">
+ Geben Sie einen Namen für die Anzeige ein.
+ </notification>
+ <notification name="MinClassifiedPrice">
+ Der Mindestbetrag für die Listung ist [MIN_PRICE] L$.
+
+Geben sie einen höheren Betrag ein.
+ </notification>
+ <notification name="ConfirmObjectDeleteLock">
+ Mindestens ein ausgewähltes Objekt ist gesperrt.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopy">
+ Mindestens ein ausgewähltes Objekt kann nicht kopiert werden.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoOwn">
+ Mindestens eines der ausgewählten Objekt gehört nicht Ihnen.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopy">
+ Mindestens ein Objekt ist gesperrt.
+Mindestens ein Objekt kann nicht kopiert werden.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoOwn">
+ Mindestens ein Objekt ist gesperrt.
+Mindestens ein Objekt gehört nicht Ihnen.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopyNoOwn">
+ Mindestens ein Objekt kann nicht kopiert werden.
+Mindestens ein Objekt gehört nicht Ihnen.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+ Mindestens ein Objekt ist gesperrt.
+Mindestens ein Objekt kann nicht kopiert werden.
+Mindestens ein Objekt gehört nicht Ihnen.
+
+Möchten Sie diese Objekte löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLock">
+ Mindestens ein Objekt ist gesperrt.
+
+Möchten Sie diese Objekte nehmen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeNoOwn">
+ Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen.
+Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer angewandt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren.
+
+Möchten Sie diese Objekte nehmen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLockNoOwn">
+ Mindestens ein Objekt ist gesperrt.
+Nicht alle Objekte, die Sie aufgenommen haben, gehören Ihnen.
+Wenn Sie fortfahren, werden die Rechte für den nächsten Eigentümer abgefragt und Sie können die Objekte möglicherweise nicht bearbeiten oder kopieren.
+Die aktuelle Auswahl können Sie jedoch aufnehmen.
+
+Möchten Sie diese Objekte nehmen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="CantBuyLandAcrossMultipleRegions">
+ Landkauf nicht möglich, da die Auswahl mehrere Regionen umfasst.
+
+Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut.
+ </notification>
+ <notification name="DeedLandToGroup">
+ Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt.
+Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt.
+
+Der Gruppe „[GROUP_NAME]“
+ [AREA] m² Land schenken?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="DeedLandToGroupWithContribution">
+ Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt.
+Die Schenkung beinhaltet eine Landübertragung an die Gruppe von „[FIRST_NAME] [LAST_NAME]“.
+Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt.
+
+Der Gruppe „[GROUP_NAME]“
+ [AREA] m² Land schenken?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="DisplaySetToSafe">
+ Es wurden sichere Anzeige-Einstellungen gewählt, da die Option -safe verwendet wurde.
+ </notification>
+ <notification name="DisplaySetToRecommended">
+ Es wurden die für Ihre Systemkonfiguration empfohlenen Anzeige-Einstellungen gewählt.
+ </notification>
+ <notification name="ErrorMessage">
+ [ERROR_MESSAGE]
+ </notification>
+ <notification name="AvatarMovedDesired">
+ Ihr gewünschter Zielort ist zurzeit nicht verfügbar.
+Sie wurden zur nächstgelegenen Region teleportiert.
+ </notification>
+ <notification name="AvatarMovedLast">
+ Ihr letzter Standort ist zurzeit nicht verfügbar.
+Sie wurden zur nächstgelegenen Region teleportiert.
+ </notification>
+ <notification name="AvatarMovedHome">
+ Ihr Heimatort ist zurzeit nicht verfügbar.
+Sie wurden zur nächstgelegenen Region teleportiert.
+Sie müssen eventuell einen neuen Heimatort festlegen.
+ </notification>
+ <notification name="ClothingLoading">
+ Ihre Kleidung wird noch heruntergeladen.
+Sie können [SECOND_LIFE] normal verwenden. Andere Benutzer können Sie korrekt dargestellt sehen.
+ <form name="form">
+ <ignore name="ignore" text="Das Herunterladen der Kleidung dauert lange"/>
+ </form>
+ </notification>
+ <notification name="FirstRun">
+ Die Installation von [APP_NAME] ist abgeschlossen.
+
+Wenn Sie [SECOND_LIFE] das erste Mal verwenden, müssen Sie ein Konto anlegen, bevor Sie sich anmelden können.
+Möchten Sie auf www.secondlife.com ein Konto erstellen?
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Neues Konto..."/>
+ </notification>
+ <notification name="LoginPacketNeverReceived">
+ Es gibt Probleme mit der Verbindung. Möglicherweise besteht ein Problem mit Ihrer Internetverbindung oder dem [SECOND_LIFE_GRID].
+
+Überprüfen Sie Ihre Internetverbindung und versuchen Sie es dann erneut, oder klicken Sie auf Hilfe, um zu [SUPPORT_SITE] zu gelangen, oder klicken Sie auf Teleportieren, um nach Hause zu teleportieren.
+ <url name="url">
+ http://de.secondlife.com/support/
+ </url>
+ <form name="form">
+ <button name="OK" text="OK"/>
+ <button name="Help" text="Hilfe"/>
+ <button name="Teleport" text="Teleportieren"/>
+ </form>
+ </notification>
+ <notification name="WelcomeChooseSex">
+ Ihr Avatar erscheint jeden Moment.
+
+Benutzen Sie die Pfeiltasten, um sich fortzubewegen.
+Drücken Sie F1 für Hilfe oder für weitere Informationen über [SECOND_LIFE].
+Bitte wählen Sie einen männlichen oder weiblichen Avatar.
+Sie können sich später noch umentscheiden.
+ <usetemplate name="okcancelbuttons" notext="Weiblich" yestext="Männlich"/>
+ </notification>
+ <notification name="NotEnoughCurrency">
+ [NAME] [PRICE] L$ Sie haben nicht genügend L$, um diese Aktion auszuführen.
+ </notification>
+ <notification name="GrantedModifyRights">
+ [FIRST_NAME] [LAST_NAME] hat Ihnen die Erlaubnis erteilt, ihre/seine Objekte zu bearbeiten.
+ </notification>
+ <notification name="RevokedModifyRights">
+ Ihnen wurden die Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME] entzogen.
+ </notification>
+ <notification name="FlushMapVisibilityCaches">
+ Der Kartencache dieser Region wird geleert.
+Diese Aktion ist nur beim Debugging sinnvoll.
+(Auf dem Produktionssystem warten Sie einfach 5 Minuten. Die Karten werden nach erneuter Anmeldung automatisch aktualisiert.)
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BuyOneObjectOnly">
+ Sie können jeweils nur ein Objekt kaufen. Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
+ </notification>
+ <notification name="OnlyCopyContentsOfSingleItem">
+ Es kann nur jeweils der Inhalt von einem Objekt kopiert werden.
+Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="KickUsersFromRegion">
+ Alle Einwohner in dieser Region nach Hause teleportieren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="EstateObjectReturn">
+ Möchten Sie wirklich alle Objekte zurückgeben, die [USER_NAME] gehören?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="InvalidTerrainBitDepth">
+ Die Regionstexturen konnten nicht festgelegt werden:
+Die Terraintextur [TEXTURE_NUM] hat eine ungültige Bit-Tiefe [TEXTURE_BIT_DEPTH].
+
+Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“.
+ </notification>
+ <notification name="InvalidTerrainSize">
+ Die Regionstexturen konnten nicht festgelegt werden:
+Die Terraintextur [TEXTURE_NUM] ist mit [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] zu groß.
+
+Ersetzen Sie die Textur [TEXTURE_NUM] mit einer Bilddatei von maximal 512x512 und 24 Bit und klicken Sie dann erneut auf „Übernehmen“.
+ </notification>
+ <notification name="RawUploadStarted">
+ Hochladen gestartet. Je nach Verbindungsgeschwindigkeit kann der Vorgang bis zu 2 Minuten dauern.
+ </notification>
+ <notification name="ConfirmBakeTerrain">
+ Möchten Sie das aktuelle Terrain formen, es zum Mittelpunkt der oberen und unteren Terraingrenzen und zum Standard des „Zurücksetzen“-Tools machen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="MaxAllowedAgentOnRegion">
+ Es sind maximal [MAX_AGENTS] zulässige Einwohner erlaubt.
+ </notification>
+ <notification name="MaxBannedAgentsOnRegion">
+ Es sind maximal [MAX_BANNED] verbannte Einwohner erlaubt.
+ </notification>
+ <notification name="MaxAgentOnRegionBatch">
+ Fehler beim Versuch, [NUM_ADDED] Agenten hinzuzufügen:
+Überschreitet den Grenzwert [MAX_AGENTS] [LIST_TYPE] um [NUM_EXCESS].
+ </notification>
+ <notification name="MaxAllowedGroupsOnRegion">
+ Es sind maximal [MAX_GROUPS] zulässige Gruppen erlaubt.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Formen"/>
+ </notification>
+ <notification name="MaxManagersOnRegion">
+ Es sind maximal [MAX_MANAGER] verbannte Einwohner erlaub.
+ </notification>
+ <notification name="OwnerCanNotBeDenied">
+ Der Eigentümer des Grundstücks kann nicht zur Liste der „Verbannten Einwohner“ hinzugefügt werden.
+ </notification>
+ <notification name="CanNotChangeAppearanceUntilLoaded">
+ Das Aussehen lässt sich erst ändern, wenn Kleider und Form/Gestalt geladen sind.
+ </notification>
+ <notification name="ClassifiedMustBeAlphanumeric">
+ Der Name der Anzeige muss mit einem Buchstaben von A bis Z oder einer Ziffer beginnen. Satzzeichen sind nicht erlaubt.
+ </notification>
+ <notification name="CantSetBuyObject">
+ „Objekt kaufen“ nicht möglich, da das Objekt nicht zum Verkauf freigegeben ist.
+Geben Sie das Objekt zum Verkauf frei und versuchen Sie es erneut.
+ </notification>
+ <notification name="FinishedRawDownload">
+ Raw-Terrain-Datei wurde heruntergeladen nach:
+[DOWNLOAD_PATH].
+ </notification>
+ <notification name="DownloadWindowsMandatory">
+ Eine neue Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können.
+ <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadWindows">
+ Eine aktualisierte Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadWindowsReleaseForDownload">
+ Eine aktualisierte Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadLinuxMandatory">
+ Eine neue Version von [SUPPORT_SITE] ist verfügbar.
+[MESSAGE]
+Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können.
+ <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadLinux">
+ Eine neue Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ Eine neue Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadMacMandatory">
+ Eine neue Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können.
+
+In Ihren Anwendungsordner herunterladen?
+ <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadMac">
+ Eine aktualisierte Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
+
+In Ihren Anwendungsordner herunterladen?
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DownloadMacReleaseForDownload">
+ Eine aktualisierte Version von [APP_NAME] ist verfügbar.
+[MESSAGE]
+Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden.
+
+In Ihren Anwendungsordner herunterladen?
+ <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/>
+ </notification>
+ <notification name="DeedObjectToGroup">
+ Bei Übertragung dieses Objekts erhält die Gruppe:
+* An das Objekt bezahlte L$
+ <usetemplate ignoretext="Bestätigen, bevor ich ein Objekt an eine Gruppe übertrage" name="okcancelignore" notext="Abbrechen" yestext="Übertragung"/>
+ </notification>
+ <notification name="WebLaunchExternalTarget">
+ Möchten Sie Ihren Internetbrowser öffnen, um diesen Inhalt anzuzeigen?
+ <usetemplate ignoretext="Meinen Browser starten, um eine Webseite anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchJoinNow">
+ de.secondlife.com öffnen, um Ihr Konto zu verwalten?
+ <usetemplate ignoretext="Meinen Browser starten, um mein Konto zu verwalten" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchSecurityIssues">
+ Informieren Sie sich im [SECOND_LIFE] Wiki, wie man Sicherheitsprobleme richtig meldet.
+ <usetemplate ignoretext="Meinen Browser starten, um anzuzeigen, wie ein Sicherheitsproblem gemeldet werden soll" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchQAWiki">
+ Besuchen Sie das [SECOND_LIFE] QA-Wiki.
+ <usetemplate ignoretext="Meinen Browser starten, um das QA-Wiki anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchPublicIssue">
+ Im [SECOND_LIFE] Allgemeine-Fragen-Tracker können Sie Fehler und andere Probleme melden.
+ <usetemplate ignoretext="Meinen Browser starten, um die Datenbank für Fehler und Verbesserungsvorschläge anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
+ </notification>
+ <notification name="WebLaunchSupportWiki">
+ Im offiziellen Linden-Blog finden Sie die neuesten Nachrichten und Informationen.
+ <usetemplate ignoretext="Meinen Browser starten, um das Blog anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLGuide">
+ Möchten Sie den Scripting Guide öffnen?
+ <usetemplate ignoretext="Meinen Browser starten, um den Scripting Guide anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLWiki">
+ Möchten Sie das LSL-Portal besuchen?
+ <usetemplate ignoretext="Meinen Browser starten, um das LSL-Portal anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
+ </notification>
+ <notification name="ReturnToOwner">
+ Möchten Sie die ausgewählten Objekte an ihre Eigentümer zurückgeben? Transferierbare übertragene Objekte werden ihren früheren Eigentümern zurückgegeben.
+
+*WARNUNG* Nicht transferierbare übertragene Objekte werden dabei gelöscht!
+ <usetemplate ignoretext="Bestätigen, bevor Objekte an Ihre Eigentümer zurückgegeben werden" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="GroupLeaveConfirmMember">
+ Sie sind Mitglied der Gruppe [GROUP].
+Diese Gruppe verlassen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmKick">
+ Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/>
+ </notification>
+ <notification name="MuteLinden">
+ Lindens können nicht stummgeschaltet werden.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotStartAuctionAlreadyForSale">
+ Eine Parzelle, die bereits zum Verkauf freigegeben ist, kann nicht versteigert werden. Deaktivieren Sie den Landverkauf, wenn Sie das Land zur Versteigerung freigeben möchten.
+ </notification>
+ <notification label="Objekt nach Name stummschalten fehlgeschlagen" name="MuteByNameFailed">
+ Dieser Name ist bereits stummgeschaltet.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RemoveItemWarn">
+ Diese Aktion ist zwar erlaubt, aber beim Löschen von Inhalten wird das Objekt beschädigt. Möchten Sie dieses Element löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferCallingCard">
+ Sie können gerade keine Visitenkarte übergeben. Warten Sie kurz und versuchen Sie es dann noch einmal.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferFriendship">
+ Sie können gerade keine Freundschaft anbieten. Warten Sie kurz und versuchen Sie es dann noch einmal.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="BusyModeSet">
+ Beschäftigt-Modus ist aktiviert.
+Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachrichten) erhalten Ihre Beschäftigt-Antwort. Alle Teleport-Angebote werden abgelehnt. Alle Inventar-Angebote werden in Ihren Papierkorb geschoben.
+ <usetemplate ignoretext="Ich ändere meinen Status zu Beschäftigt" name="okignore" yestext="OK"/>
+ </notification>
+ <notification name="JoinedTooManyGroupsMember">
+ Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab.
+[NAME] hat Sie eingeladen, einer Gruppe beizutreten.
+[INVITE]
+ <usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/>
+ </notification>
+ <notification name="KickUser">
+ Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen?
+ <form name="form">
+ <input name="message">
+ Sie wurden von einem Administrator abgemeldet.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="KickAllUsers">
+ Beim Hinauswerfen aller Personen vom Grid welche Meldung anzeigen?
+ <form name="form">
+ <input name="message">
+ Sie wurden von einem Administrator abgemeldet.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="FreezeUser">
+ Beim Einfrieren dieses Benutzers welche Meldung anzeigen?
+ <form name="form">
+ <input name="message">
+ Sie wurden eingefroren. Bewegen oder Chatten ist nicht mehr möglich. Ein Administrator wird sich über IM an Sie wenden
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="UnFreezeUser">
+ Beim Auftauen dieses Benutzers welche Meldung anzeigen?
+ <form name="form">
+ <input name="message">
+ Sie sind nicht mehr eingefroren.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="OfferTeleport">
+ Teleport an Ihre Position mit der folgenden Meldung anbieten?
+ <form name="form">
+ <input name="message">
+ Triff mich in [REGION]
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="OfferTeleportFromGod">
+ Benutzer an Ihrem Standort herbeirufen?
+ <form name="form">
+ <input name="message">
+ Triff mich in [REGION]
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="TeleportFromLandmark">
+ Möchten Sie sich wirklich teleportieren?
+ <usetemplate ignoretext="Bestätigen, dass ich zu einer Landmarke teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/>
+ </notification>
+ <notification name="TeleportToPick">
+ Nach [PICK] teleportieren?
+ <usetemplate ignoretext="Bestätigen, dass ich zu einer Position in Auswahl teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/>
+ </notification>
+ <notification label="Nachricht an alle auf diesem Grundstück" name="MessageEstate">
+ Geben Sie eine kurze Nachricht ein, die an jede Person auf Ihrem Grundstück gesendet wird.
+ <form name="form">
+ <input name="message"/>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification label="Linden-Grundstück ändern" name="ChangeLindenEstate">
+ Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
+
+Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet.
+
+Fortfahren?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification label="Zugang zu Linden-Grundstück ändern" name="ChangeLindenAccess">
+ Sie sind im Begriff, die Zugangsliste für ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
+
+Dies ist GEFÄHRLICH und sollte nur erfolgen, um Objekte/L$ per Hack in und aus dem Raster zu entfernen.
+Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belastet.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateAllowedAgentAdd">
+ Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateAllowedAgentRemove">
+ Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Erlaubnisliste entfernen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateAllowedGroupAdd">
+ Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Gruppen-Erlaubnisliste hinzufügen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateAllowedGroupRemove">
+ Nur für dieses Grundstück oder für alle [ALL_ESTATES] von Gruppen-Erlaubnisliste entfernen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateBannedAgentAdd">
+ Zugang nur für dieses Grundstück oder für [ALL_ESTATES] verweigern?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateBannedAgentRemove">
+ Einwohner nur für dieses Grundstück oder für alle [ALL_ESTATES] von der Bannliste entfernen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateManagerAdd">
+ Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] festlegen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Grundstück wählen" name="EstateManagerRemove">
+ Verwalter nur für dieses Grundstück oder für [ALL_ESTATES] entfernen?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
+ </notification>
+ <notification label="Rauswurf bestätigen" name="EstateKickUser">
+ Benutzer [EVIL_USER] von diesem Grundstück werfen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="EstateChangeCovenant">
+ Möchten Sie den Grundstücksvertrag wirklich ändern?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked">
+ Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind.
+
+Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_KB">
+ Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten.
+
+Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB)
+ </url>
+ <usetemplate ignoretext="Ich kann diese Region aufgrund der Alterseinstufung nicht betreten" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Notify">
+ Aufgrund Ihrer Alterseinstufung dürfen Sie diese Region nicht betreten.
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Change">
+ Sie dürfen diese Region aufgrund der Einstellung Ihrer Alterseinstufung nicht betreten.
+
+Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten &gt; Einstellungen... &gt; Allgemein.
+ <form name="form">
+ <button name="OK" text="Einstellung ändern"/>
+ <button name="Cancel" text="Schließen"/>
+ <ignore name="ignore" text="Meine Alterseinstufung lässt nicht zu, dass ich eine Region betrete."/>
+ </form>
+ </notification>
+ <notification name="LandClaimAccessBlocked">
+ Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind.
+
+Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_KB">
+ Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land.
+
+Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB)
+ </url>
+ <usetemplate ignoretext="Ich habe aufgrund der Alterseinstufung keinen Anspruch auf dieses Land" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_Notify">
+ Sie haben aufgrund Ihrer Alterseinstufung keinen Anspruch auf dieses Land.
+ </notification>
+ <notification name="LandClaimAccessBlocked_Change">
+ Sie haben aufgrund der Einstellung Ihrer Alterseinstufung keinen Anspruch auf dieses Land.
+
+Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten &gt; Einstellungen... &gt; Allgemein.
+ <usetemplate ignoretext="Meine Alterseinstufung lässt nicht zu, dass ich auf Land Anspruch erhebe" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked">
+ Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen. Der Grund hierfür ist möglicherweise, dass Sie nicht altersüberprüft sind.
+
+Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben und besuchen Sie unsere Knowledgebase, um mehr über Regionen mit dieser Altereinstufung zu erfahren.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_KB">
+ Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen.
+
+Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Altereinstufung zu erhalten?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Alterseinstufung:_Ein_%C3%9Cberblick_(KB)
+ </url>
+ <usetemplate ignoretext="Ich kann aufgrund der Alterseinstufung dieses Land nicht kaufen" name="okcancelignore" notext="Schließen" yestext="Zur Knowledgbase"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_Notify">
+ Sie können aufgrund Ihrer Alterseinstufung dieses Land nicht kaufen.
+ </notification>
+ <notification name="LandBuyAccessBlocked_Change">
+ Sie können aufgrund Ihrer Einstellung für Alterseinstufung dieses Land nicht kaufen.
+
+Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten &gt; Einstellungen... &gt; Allgemein.
+ <usetemplate ignoretext="Meine Alterseinstufung lässt nicht zu, dass ich Land kaufe" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/>
+ </notification>
+ <notification name="TooManyPrimsSelected">
+ &quot;Zu viele Prims wurden ausgewählt. Bitte wählen Sie höchstens [MAX_PRIM_COUNT] Prims aus und versuchen Sie es erneut.&quot;
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemImportingEstateCovenant">
+ Problem beim Import des Grundstückvertrags.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemAddingEstateManager">
+ Es gibt Probleme beim Hinzufügen eines neuen Grundstücksverwalters. Bei mindestens einem Grundstück ist die Verwalterliste voll.
+ </notification>
+ <notification name="ProblemAddingEstateGeneric">
+ Problem beim Hinzufügen zu dieser Grundstücksliste. Bei mindestens einem Grundstück ist die Liste voll.
+ </notification>
+ <notification name="UnableToLoadNotecardAsset">
+ Notizkarten-Asset konnte nicht geladen werden.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="NotAllowedToViewNotecard">
+ Unzureichende Rechte, um die mit der angeforderten Asset-ID verbundene Notizkarte anzuzeigen.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MissingNotecardAssetID">
+ Asset-ID für Notizkarte fehlt in Datenbank.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PublishClassified">
+ Hinweis: Anzeigengebühren werden nicht zurückerstattet.
+
+Anzeige für [AMOUNT] L$ veröffentlichen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="SetClassifiedMature">
+ Enthält diese Anzeige Mature-Inhalte?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="SetGroupMature">
+ Beschäftigt sich diese Gruppe mit Mature-Inhalten?
+ <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification label="Neustart bestätigen" name="ConfirmRestart">
+ Möchten Sie diese Region in 2 Minuten neu starten?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification label="Nachricht an alle in dieser Region" name="MessageRegion">
+ Geben Sie eine kurze Nachricht ein, die an jede Person in dieser Region gesendet wird.
+ <form name="form">
+ <input name="message"/>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification label="Alterseinstufung der Region ändern" name="RegionMaturityChange">
+ Die Alterseinstufung dieser Region wurde aktualisiert.
+Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt.
+ </notification>
+ <notification label="Falsche Voice-Version" name="VoiceVersionMismatch">
+ Diese Version von [APP_NAME] mit dem Voice-Chat-Feature in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie [APP_NAME] aktualisieren.
+ </notification>
+ <notification label="Objekte können nicht gekauft werden" name="BuyObjectOneOwner">
+ Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden.
+Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
+ </notification>
+ <notification label="Inhalte können nicht gekauft werden" name="BuyContentsOneOnly">
+ Inhalte können jeweils nur für ein Objekt gekauft werden.
+Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
+ </notification>
+ <notification label="Inhalte können nicht gekauft werden" name="BuyContentsOneOwner">
+ Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden.
+Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut.
+ </notification>
+ <notification name="BuyOriginal">
+ Von [OWNER] Originalobjekt für [PRICE] L$ kaufen?
+Sie werden der Eigentümer dieses Objekts.
+Sie können das Objekt:
+ Bearbeiten: [MODIFYPERM]
+ Kopieren: [COPYPERM]
+ Verkaufen oder weggeben: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BuyOriginalNoOwner">
+ Originalobjekt für [PRICE] L$ kaufen?
+Sie werden der Eigentümer dieses Objekts.
+Sie können das Objekt:
+ Bearbeiten: [MODIFYPERM]
+ Kopieren: [COPYPERM]
+ Verkaufen oder weggeben: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopy">
+ Von [OWNER] Kopie für [PRICE] L$ kaufen?
+Das Objekt wird in Ihr Inventar kopiert.
+Sie können das Objekt:
+ Bearbeiten: [MODIFYPERM]
+ Kopieren: [COPYPERM]
+ Verkaufen oder weggeben: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopyNoOwner">
+ Kopie für [PRICE] L$ kaufen?
+Das Objekt wird in Ihr Inventar kopiert.
+Sie können das Objekt:
+ Bearbeiten: [MODIFYPERM]
+ Kopieren: [COPYPERM]
+ Verkaufen oder weggeben: [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BuyContents">
+ Von [OWNER] Inhalte für [PRICE] L$ kaufen?
+Die Inhalte werden in Ihr Inventar kopiert.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="BuyContentsNoOwner">
+ Inhalte für [PRICE] L$ kaufen?
+Die Inhalte werden in Ihr Inventar kopiert.
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchase">
+ Transaktion:
+[ACTION]
+
+Möchten Sie diesen Kauf fortsetzen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchasePassword">
+ Transaktion:
+[ACTION]
+
+Möchten Sie diesen Kauf fortsetzen?
+Geben Sie Ihr Kennwort erneut ein und klicken Sie auf OK.
+ <form name="form">
+ <input name="message"/>
+ <button name="ConfirmPurchase" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="SetPickLocation">
+ Hinweis:
+Sie haben die Position dieser Auswahl aktualisiert, aber die anderen Daten behalten ihre ursprünglichen Werte.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromObject">
+ Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt.
+Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben.
+
+Inventarobjekt(e) verschieben?
+ <usetemplate ignoretext="Warnhinweis anzeigen, bevor ich nicht kopierbare Artikel aus einem Objekt verschiebe" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromScriptedObject">
+ Sie haben „nicht kopierfähige“ Inventarobjekte ausgewählt. Diese Objekte werden nicht kopiert, sondern in Ihr Inventar verschoben.
+Da es sich um ein geskriptetes Objekt handelt, geht die Skriptfunktion beim Verschieben in das Inventar möglicherweise verloren.
+
+Inventarobjekt(e) verschieben?
+ <usetemplate ignoretext="Warnhinweis anzeigen, bevor ich nicht-kopierbare Artikel verschiebe, die ein geskriptetes Objekt beschädigen können" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ClickActionNotPayable">
+ Achtung: Die Klickaktion „Objekt bezahlen&quot; wurde eingestellt. Diese funktioniert jedoch nicht, wenn ein Skript mit einer Geldtransaktion () hinzugefügt wird.
+ <form name="form">
+ <ignore name="ignore" text="I habe die Aktion „Objekt bezahlen&quot; eingestellt, während ich ein Objekt gebaut habe, dass kein Geld()-Skript enthält."/>
+ </form>
+ </notification>
+ <notification name="OpenObjectCannotCopy">
+ Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt.
+ </notification>
+ <notification name="WebLaunchAccountHistory">
+ de.secondlife.com öffnen, um Ihre Konto-Statistik anzuzeigen?
+ <usetemplate ignoretext="Meinen Browser starten, um meine Konto-Statistik anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/>
+ </notification>
+ <notification name="ConfirmQuit">
+ Wirklich beenden?
+ <usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
+ </notification>
+ <notification name="HelpReportAbuseEmailLL">
+ Verwenden Sie dieses Tool, um Verletzungen der Servicebedingungen und Community-Standards zu melden. Siehe:
+
+http://secondlife.com/corporate/tos.php
+http://secondlife.com/corporate/cs.php
+
+Alle gemeldeten Verletzungen der Servicebedingungen und Community-Standards werden geprüft und geklärt Sie können den Prozess im Incident Report (Vorfallsbericht) verfolgen:
+
+http://secondlife.com/support/incidentreport.php
+ </notification>
+ <notification name="HelpReportAbuseEmailEO">
+ WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab.
+-
+Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet. Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind.
+(Den Vertrag können Sie unter „Welt“ &gt; „Land-Info“ einsehen.)
+-
+Das Resultat, das sich aus dieser Meldung ergibt, betrifft nur diese Region; der Einwohnerzugang zu anderen Bereichen von [SECOND_LIFE] ist davon nicht betroffen. Nur Linden Lab kann den Zugang zu [SECOND_LIFE] beschränken.
+ </notification>
+ <notification name="HelpReportAbuseSelectCategory">
+ Wählen Sie eine Missbrauchskategorie aus.
+Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts.
+ </notification>
+ <notification name="HelpReportAbuseAbuserNameEmpty">
+ Geben Sie den Namen des Täters ein.
+Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden.
+ </notification>
+ <notification name="HelpReportAbuseAbuserLocationEmpty">
+ Bitte geben Sie den Ort an, an dem der Missbrauch stattgefunden hat.
+Eine genaue Angabe hilft uns, Fälle von Missbrauch zu ahnden.
+ </notification>
+ <notification name="HelpReportAbuseSummaryEmpty">
+ Bitte geben Sie eine Zusammenfassung des Vorfalls ein.
+Eine genaue Zusammenfassung hilft uns, Fälle von Missbrauch zu ahnden.
+ </notification>
+ <notification name="HelpReportAbuseDetailsEmpty">
+ Bitte geben Sie eine ausführliche Beschreibung des Vorfalls ein.
+Eine möglichst genaue Beschreibung mit Namen und Einzelheiten hilft uns, Fälle von Missbrauch zu ahnden.
+ </notification>
+ <notification name="HelpReportAbuseContainsCopyright">
+ Sehr geehrte(r) Einwohner(in),
+
+Sie melden eine Urheberrechtsverletzung. Sind Sie wirklich sicher, dass Sie eine Verletzung des Urheberrechts melden möchten?
+
+1. Missbrauch melden. Wenn Sie der Meinung sind, ein Einwohner nutzt das Berechtigungssystem von [SECOND_LIFE] auf unerlaubte Weise zu seinem Vorteil aus, indem er zum Beispiel einen CopyBot oder ähnliche Kopiertools verwendet und damit eine Urheberrechtsverletzung begeht, können Sie diesen Missbrauch melden. Das Missbrauchsteam untersucht etwaige Verstöße gegen die [SECOND_LIFE] Community Standards oder die Nutzungsbedingungen und verhängt entsprechende Strafen. Das Missbrauchsteam ist jedoch nicht dafür zuständig, Inhalte aus der [SECOND_LIFE]-Welt zu entfernen und reagiert auch nicht auf entsprechende Anfragen.
+
+2. Der DMCA oder das Entfernen von Inhalten. Sie können das Entfernen von Inhalten aus [SECOND_LIFE] beantragen. Dazu MÜSSEN Sie eine Urheberrechtsverletzung gemäß den in unserer DMCA-Richtlinie unter http://secondlife.com/corporate/dmca.php dargelegten Anweisungen einreichen.
+
+Wenn Sie mit der Missbrauchmeldung jetzt fortfahren möchten, schließen Sie bitte dieses Fenster und senden Sie Ihren Bericht ein. Möglicherweise müssen Sie Kategorie „CopyBot oder Berechtigungs-Exploit“ auswählen.
+
+Vielen Dank,
+
+Linden Lab
+ </notification>
+ <notification name="FailedRequirementsCheck">
+ Die folgenden erforderlichen Komponenten fehlen in [FLOATER]:
+[COMPONENTS]
+ </notification>
+ <notification label="Vorhandenen Anhang ersetzen" name="ReplaceAttachment">
+ An dieser Körperstelle ist bereits ein Objekt angebracht.
+Möchten Sie es mit dem ausgewählten Objekt ersetzen?
+ <form name="form">
+ <ignore name="ignore" save_option="true" text="Einen bestehenden Anhang mit dem ausgewählten Artikel ersetzen"/>
+ <button ignore="Automatisch ersetzen" name="Yes" text="OK"/>
+ <button ignore="Nie ersetzen" name="No" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification label="Beschäftigt-Modus-Warnung" name="BusyModePay">
+ Sie sind im Beschäftigt-Modus, sodass Sie im Austausch für diese Zahlung keine Objekte erhalten können.
+
+Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschließen?
+ <form name="form">
+ <ignore name="ignore" save_option="true" text="Ich bin im Begriff eine Person oder ein Objekt zu bezahlen, während ich im Modus Beschäftigt bin."/>
+ <button ignore="Beschäftigt-Modus immer deaktivieren" name="Yes" text="OK"/>
+ <button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="ConfirmEmptyTrash">
+ Sind Sie sicher, dass Sie den Inhalt Ihres Papierkorbs löschen möchten?
+ <usetemplate ignoretext="Bestätigen, bevor der Ordner Papierkorb im Inventar geleert wird" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearBrowserCache">
+ Sind Sie sicher, dass Sie Ihren Reise-, Internet- und Suchverlauf löschen möchten?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
+ </notification>
+ <notification name="ConfirmClearCookies">
+ Sind Sie sicher, dass Sie Ihre Cookies löschen möchten?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
+ </notification>
+ <notification name="ConfirmClearMediaUrlList">
+ Die Liste mit gespeicherten URLs wirklich löschen?
+ <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
+ </notification>
+ <notification name="ConfirmEmptyLostAndFound">
+ Sind Sie sicher, dass Sie den Inhalt Ihres Ordners Fundbüro löschen möchten?
+ <usetemplate ignoretext="Bestätigen, bevor der Ordner Fundbüro im Inventar geleert wird" name="okcancelignore" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="CopySLURL">
+ Die folgende SLurl wurde in die Zwischenablage kopiert:
+ [SLURL]
+
+Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dieser Position zu ermöglichen. Oder versuchen Sie es selbst: kopieren Sie die SLurl in die Adressleiste eines Webbrowsers.
+ <form name="form">
+ <ignore name="ignore" text="Slurl wurde in meine Zwischenablage kopiert"/>
+ </form>
+ </notification>
+ <notification name="WLSavePresetAlert">
+ Die gespeicherte Voreinstellung überschreiben?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="WLDeletePresetAlert">
+ [SKY] löschen?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="WLNoEditDefault">
+ Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden.
+ </notification>
+ <notification name="WLMissingSky">
+ Diese Tageszyklusdatei verweist auf eine fehlende Himmel-Datei: [SKY].
+ </notification>
+ <notification name="PPSaveEffectAlert">
+ Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben?
+ <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="NewSkyPreset">
+ Wählen Sie einen Namen für den neuen Himmel.
+ <form name="form">
+ <input name="message">
+ Neue Voreinstellung
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="ExistsSkyPresetAlert">
+ Voreinstellung bereits vorhanden!
+ </notification>
+ <notification name="NewWaterPreset">
+ Wählen Sie einen Namen für die neue Wasservoreinstellung.
+ <form name="form">
+ <input name="message">
+ Neue Voreinstellung
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="ExistsWaterPresetAlert">
+ Voreinstellung bereits vorhanden!
+ </notification>
+ <notification name="WaterNoEditDefault">
+ Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden.
+ </notification>
+ <notification name="ChatterBoxSessionStartError">
+ Neue Chat-Sitzung mit [RECIPIENT] konnte nicht gestartet werden.
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ChatterBoxSessionEventError">
+ [EVENT]
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ForceCloseChatterBoxSession">
+ Ihre Chat-Sitzung mit [NAME] muss beendet werden.
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="Cannot_Purchase_an_Attachment">
+ Sie können kein Objekt kaufen, während es angehängt ist.
+ </notification>
+ <notification label="Info zur Abfrage der Abbucherlaubnis" name="DebitPermissionDetails">
+ Wenn Sie dieser Anfrage zustimmen, erhält das Skript die Erlaubnis, regelmäßig Linden-Dollar (L$) von Ihrem Konto abzubuchen. Diese Erlaubnis kann nur zurückgezogen werden, wenn der Eigentümer das Objekt löscht oder die Skripts in dem Objekt zurücksetzt.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AutoWearNewClothing">
+ Möchten Sie das neu erstellte Kleidungsstück automatisch anziehen?
+ <usetemplate ignoretext="Die Kleidung, die während dem Bearbeiten meines Aussehens erstellt wird, sofort anziehen" name="okcancelignore" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="NotAgeVerified">
+ Sie müssen altersüberprüft sein, um diesen Bereich betreten zu können. Möchten Sie auf der [SECOND_LIFE]-Webseite Ihr Alter verifizieren lassen?
+
+[_URL]
+ <url name="url" option="0">
+ https://secondlife.com/account/verification.php?lang=de
+ </url>
+ <usetemplate ignoretext="Ich habe mein Alter nicht verifizieren lassen" name="okcancelignore" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="Cannot enter parcel: no payment info on file">
+ Um diesen Bereich besuchen zu können, müssen Ihre Zahlungsinformationen gespeichert sein. Möchten Sie diese Einstellung auf der [SECOND_LIFE]-Webseite einrichten?
+
+[_URL]
+ <url name="url" option="0">
+ https://secondlife.com/account/index.php?lang=de
+ </url>
+ <usetemplate ignoretext="Meine Zahlungsinformation ist nicht gespeichert" name="okcancelignore" notext="Nein" yestext="Ja"/>
+ </notification>
+ <notification name="MissingString">
+ Der String „[STRING_NAME]“ fehlt in strings.xml
+ </notification>
+ <notification name="SystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="Cancelled">
+ Abgebrochen
+ </notification>
+ <notification name="CancelledSit">
+ Sitzen beendet
+ </notification>
+ <notification name="CancelledAttach">
+ Anhängen abgebrochen
+ </notification>
+ <notification name="ReplacedMissingWearable">
+ Fehlende(s) Kleidung/Körperteil mit Standard ersetzt.
+ </notification>
+ <notification name="GroupNotice">
+ Betreff: [SUBJECT], Nachricht: [MESSAGE]
+ </notification>
+ <notification name="FriendOnline">
+ [FIRST] [LAST] ist online
+ </notification>
+ <notification name="FriendOffline">
+ [FIRST] [LAST] ist offline
+ </notification>
+ <notification name="AddSelfFriend">
+ Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
+ </notification>
+ <notification name="UploadingAuctionSnapshot">
+ In-Welt- und Website-Fotos werden hochgeladen...
+(Dauert ca. 5 Minuten.)
+ </notification>
+ <notification name="UploadPayment">
+ Sie haben für das Hochladen [AMOUNT] L$ bezahlt.
+ </notification>
+ <notification name="UploadWebSnapshotDone">
+ Das Website-Foto wurde hochgeladen.
+ </notification>
+ <notification name="UploadSnapshotDone">
+ In-Welt-Foto hochgeladen
+ </notification>
+ <notification name="TerrainDownloaded">
+ Terrain.raw heruntergeladen
+ </notification>
+ <notification name="GestureMissing">
+ Geste [NAME] fehlt in Datenbank.
+ </notification>
+ <notification name="UnableToLoadGesture">
+ Geste [NAME] konnte nicht geladen werden.
+Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="LandmarkMissing">
+ Landmarke fehlt in Datenbank.
+ </notification>
+ <notification name="UnableToLoadLandmark">
+ Landmarke konnte nicht geladen werden. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="CapsKeyOn">
+ Die Umschalttaste ist aktiv.
+Dies kann die Eingabe Ihres Passworts beeinflussen.
+ </notification>
+ <notification name="NotecardMissing">
+ Notizkarte fehlt in Datenbank.
+ </notification>
+ <notification name="NotecardNoPermissions">
+ Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte.
+ </notification>
+ <notification name="RezItemNoPermissions">
+ Keine Berechtigung zum Rezzen von Objekten.
+ </notification>
+ <notification name="UnableToLoadNotecard">
+ Notizkarten-Asset konnte nicht geladen werden.
+ </notification>
+ <notification name="ScriptMissing">
+ Skript fehlt in Datenbank.
+ </notification>
+ <notification name="ScriptNoPermissions">
+ Unzureichende Rechte zur Anzeige des Skripts.
+ </notification>
+ <notification name="UnableToLoadScript">
+ Skript konnte nicht geladen werden. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="IncompleteInventory">
+ Die von Ihnen angebotenen Inhalte sind noch nicht vollständig lokal verfügbar. Warten Sie kurz und wiederholen Sie dann das Angebot.
+ </notification>
+ <notification name="CannotModifyProtectedCategories">
+ Geschützte Kategorien können nicht geändert werden.
+ </notification>
+ <notification name="CannotRemoveProtectedCategories">
+ Geschützte Kategorien können nicht entfernt werden.
+ </notification>
+ <notification name="OfferedCard">
+ Sie haben [FIRST] [LAST] eine Visitenkarte angeboten.
+ </notification>
+ <notification name="UnableToBuyWhileDownloading">
+ Kauf nicht möglich. Objektdaten werden noch geladen.
+Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="UnableToLinkWhileDownloading">
+ Verknüpfung nicht möglich. Objektdaten werden noch geladen.
+Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="CannotBuyObjectsFromDifferentOwners">
+ Sie können nur von einem Eigentümer auf einmal Objekte kaufen.
+Wählen Sie ein einzelnes Objekt aus.
+ </notification>
+ <notification name="ObjectNotForSale">
+ Dieses Objekt wird nicht verkauft.
+ </notification>
+ <notification name="EnteringGodMode">
+ Gott-Modus aktiviert, Level [LEVEL]
+ </notification>
+ <notification name="LeavingGodMode">
+ Gott-Modus wird nun de-aktiviert, Level [LEVEL]
+ </notification>
+ <notification name="CopyFailed">
+ Ihnen fehlt die Berechtigung zum Kopieren.
+ </notification>
+ <notification name="InventoryAccepted">
+ [NAME] hat Ihr Inventarangebot akzeptiert.
+ </notification>
+ <notification name="InventoryDeclined">
+ [NAME] hat Ihr Inventarangebot abgelehnt.
+ </notification>
+ <notification name="ObjectMessage">
+ [NAME]: [MESSAGE]
+ </notification>
+ <notification name="CallingCardAccepted">
+ Ihre Visitenkarte wurde akzeptiert.
+ </notification>
+ <notification name="CallingCardDeclined">
+ Ihre Visitenkarte wurde abgelehnt.
+ </notification>
+ <notification name="TeleportToLandmark">
+ Jetzt, nachdem Sie das Mainland erreicht haben, können Sie sich an Positionen wie „[NAME]“ teleportieren, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Landmarken“ auswählen.
+Klicken Sie eine Landmarke doppelt an und wählen Sie „Teleportieren“, um an diesen Ort zu gelangen.
+ </notification>
+ <notification name="TeleportToPerson">
+ Jetzt, nachdem Sie das Mainland erreicht haben, können Sie mit Einwohnern wie „[NAME]“ Kontakt aufnehmen, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Visitenkarten“ auswählen.
+Klicken Sie die Karte doppelt an, wählen Sie „Instant Message“ und geben Sie eine Nachricht ein.
+ </notification>
+ <notification name="CantSelectLandFromMultipleRegions">
+ Land kann nicht über Servergrenzen hinweg ausgewählt werden.
+Wählen Sie eine kleinere Landfläche.
+ </notification>
+ <notification name="SearchWordBanned">
+ Einige Begriffe in Ihrer Suchanfrage wurden ausgeschlossen, aufgrund von in den Community Standards definierten Inhaltsbeschränkungen.
+ </notification>
+ <notification name="NoContentToSearch">
+ Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (PG, Mature oder Adult).
+ </notification>
+ <notification name="GroupVote">
+ [NAME] hat eine Abstimmung vorgeschlagen über:
+[MESSAGE]
+ <form name="form">
+ <button name="VoteNow" text="Abstimmen"/>
+ <button name="Later" text="Später"/>
+ </form>
+ </notification>
+ <notification name="SystemMessage">
+ [MESSAGE]
+ </notification>
+ <notification name="EventNotification">
+ Event-Benachrichtigung:
+
+[NAME]
+[DATE]
+ <form name="form">
+ <button name="Teleport" text="Teleportieren"/>
+ <button name="Description" text="Beschreibung"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="TransferObjectsHighlighted">
+ Alle Objekte auf dieser Parzelle, die an den Käufer der Parzelle übertragen werden, sind jetzt markiert.
+
+* Übertragene Bäume und Gräser sind nicht markiert.
+ <form name="form">
+ <button name="Done" text="Fertig"/>
+ </form>
+ </notification>
+ <notification name="DeactivatedGesturesTrigger">
+ Gesten mit demselben Trigger wurden deaktiviert:
+[NAMES]
+ </notification>
+ <notification name="NoQuickTime">
+ Apple QuickTime ist auf Ihrem System anscheinend nicht installiert.
+Laden Sie QuickTime von der QuickTime-Webseite (http://www.apple.com/de/quicktime) herunter, um auf Parzellen, die diese Funktion unterstützen, Streaming-Inhalte wiederzugeben.
+ </notification>
+ <notification name="NoPlugin">
+ Es wurde kein Medien-Plugin gefunden, das &quot;[MIME_TYPE]&quot; ausführen kann. Medien dieses Dateityps sind nicht verfügbar.
+ </notification>
+ <notification name="MediaPluginFailed">
+ Bei folgendem Plugin ist ein Fehler aufgetreten:
+ [PLUGIN]
+
+Bitte installieren Sie das Plugin erneut. Falls weiterhin Problem auftreten, kontaktieren Sie bitte den Hersteller.
+ <form name="form">
+ <ignore name="ignore" text="Ein Plugin kann nicht ausgeführt werden"/>
+ </form>
+ </notification>
+ <notification name="OwnedObjectsReturned">
+ Ihre Objekte auf der ausgewählten Parzelle wurden in Ihr Inventar transferiert.
+ </notification>
+ <notification name="OtherObjectsReturned">
+ Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert.
+ </notification>
+ <notification name="OtherObjectsReturned2">
+ Die Objekte von [FIRST] [LAST] auf dieser
+Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben.
+ </notification>
+ <notification name="GroupObjectsReturned">
+ Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert.
+Transferierbare übertragene Objekte wurden an ihre früheren Eigentümer zurückgegeben.
+Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht.
+ </notification>
+ <notification name="UnOwnedObjectsReturned">
+ Alle Objekte auf der ausgewählten Parzelle, die NICHT Ihnen gehören, wurden ihren Eigentümern zurückgegeben.
+ </notification>
+ <notification name="NotSafe">
+ Auf diesem Land ist Schaden aktiviert.
+Verletzungen sind möglich. Wenn Sie sterben, werden Sie zu Ihrem Heimatstandort teleportiert.
+ </notification>
+ <notification name="NoFly">
+ In diesem Bereich ist das Fliegen deaktiviert.
+Fliegen ist hier nicht möglich.
+ </notification>
+ <notification name="PushRestricted">
+ In diesem Bereich ist Stoßen nicht erlaubt.
+Sie können keine anderen Personen stoßen, außer Ihnen gehört das Land.
+ </notification>
+ <notification name="NoVoice">
+ In diesem Bereich ist Voice deaktiviert. Sie werden niemanden sprechen hören.
+ </notification>
+ <notification name="NoBuild">
+ In diesem Bereich ist das Bauen deaktiviert. Sie können keine Objekte bauen oder rezzen.
+ </notification>
+ <notification name="ScriptsStopped">
+ Ein Administrator hat die Skriptausführung in dieser Region vorübergehend deaktiviert.
+ </notification>
+ <notification name="ScriptsNotRunning">
+ In dieser Region werden keine Skipts ausgeführt.
+ </notification>
+ <notification name="NoOutsideScripts">
+ Auf diesem Land sind externe Skripts deaktiviert
+
+Hier funktionieren nur Skripts, die dem Landeigentümer gehören.
+ </notification>
+ <notification name="ClaimPublicLand">
+ Öffentliches Land kann nur in der Region in Besitz genommen werden, in der Sie sich befinden.
+ </notification>
+ <notification name="RegionTPAccessBlocked">
+ Sie dürfen diese Region aufgrund Ihrer Alterseinstufung nicht betreten. Sie müssen eventuell eine Altersüberprüfung vornehmen und/oder den aktuellsten Viewer installieren.
+
+Bitte besuchen Sie unsere Knowledgebase, um mehr Details über Zugang zu Regionen mit dieser Alterseinstufung zu erhalten.
+ </notification>
+ <notification name="URBannedFromRegion">
+ Sie dürfen diese Region nicht betreten.
+ </notification>
+ <notification name="NoTeenGridAccess">
+ Ihr Konto kann keine Verbindung zu dieser Teen Grid-Region herstellen.
+ </notification>
+ <notification name="ImproperPaymentStatus">
+ Die für den Zutritt zu dieser Region erforderlichen Zahlungsinformationen liegen nicht vor.
+ </notification>
+ <notification name="MustGetAgeParcel">
+ Sie müssen alterüberprüft sein, um diese Parzelle betreten zu können.
+ </notification>
+ <notification name="NoDestRegion">
+ Keine Zielregion gefunden.
+ </notification>
+ <notification name="NotAllowedInDest">
+ Der Zutritt wurde Ihnen verweigert.
+ </notification>
+ <notification name="RegionParcelBan">
+ Diese Parzelle ist abgesperrt und kann nicht überquert werden. Versuchen Sie einen anderen Weg.
+ </notification>
+ <notification name="TelehubRedirect">
+ Sie wurden zu einem Telehub umgeleitet.
+ </notification>
+ <notification name="CouldntTPCloser">
+ Ein Teleport näher am Ziel ist leider nicht möglich.
+ </notification>
+ <notification name="TPCancelled">
+ Teleport abgebrochen.
+ </notification>
+ <notification name="FullRegionTryAgain">
+ Die Region, die Sie betreten möchten, ist im Moment voll.
+Versuchen Sie es in einigen Minuten erneut.
+ </notification>
+ <notification name="GeneralFailure">
+ Allgemeiner Fehler.
+ </notification>
+ <notification name="RoutedWrongRegion">
+ In falsche Region umgeleitet. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="NoValidAgentID">
+ Keine gültige Agent ID.
+ </notification>
+ <notification name="NoValidSession">
+ Keine gültige Sitzungs-ID.
+ </notification>
+ <notification name="NoValidCircuit">
+ Kein gültiger Verbindungscode.
+ </notification>
+ <notification name="NoValidTimestamp">
+ Kein gültiger Zeitstempel.
+ </notification>
+ <notification name="NoPendingConnection">
+ Verbindung kann nicht hergestellt werden.
+ </notification>
+ <notification name="InternalUsherError">
+ Interner Fehler beim Versuch, Verbindung mit Agent Usher herzustellen.
+ </notification>
+ <notification name="NoGoodTPDestination">
+ In dieser Region konnte kein gültiges Teleportziel gefunden werden.
+ </notification>
+ <notification name="InternalErrorRegionResolver">
+ Interner Fehler bei Teleport.
+ </notification>
+ <notification name="NoValidLanding">
+ Ein gültiger Landpunkt konnte nicht gefunden werden.
+ </notification>
+ <notification name="NoValidParcel">
+ Es konnte keine gültige Parzelle gefunden werden.
+ </notification>
+ <notification name="ObjectGiveItem">
+ Das Objekt [OBJECTFROMNAME] von [FIRST] [LAST] hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]).
+ <form name="form">
+ <button name="Keep" text="Behalten"/>
+ <button name="Discard" text="Verwerfen"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="ObjectGiveItemUnknownUser">
+ Das Objekt [OBJECTFROMNAME] von (unbekannt) hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]).
+ <form name="form">
+ <button name="Keep" text="Behalten"/>
+ <button name="Discard" text="Verwerfen"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="UserGiveItem">
+ [NAME] hat Ihnen ein [OBJECTTYPE] namens „[OBJECTNAME]“ gegeben.
+ <form name="form">
+ <button name="Keep" text="Behalten"/>
+ <button name="Discard" text="Verwerfen"/>
+ </form>
+ </notification>
+ <notification name="GodMessage">
+ [NAME]
+[MESSAGE]
+ </notification>
+ <notification name="JoinGroup">
+ [MESSAGE]
+ <form name="form">
+ <button name="Join" text="Beitreten"/>
+ <button name="Decline" text="Ablehnen"/>
+ <button name="Info" text="Info"/>
+ </form>
+ </notification>
+ <notification name="TeleportOffered">
+ [NAME] hat angeboten, Sie zu ihrem/seinem Standort zu teleportieren:
+
+[MESSAGE]
+ <form name="form">
+ <button name="Teleport" text="Teleportieren"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="GotoURL">
+ [MESSAGE]
+[URL]
+ <form name="form">
+ <button name="Later" text="Später"/>
+ <button name="GoNow..." text="Jetzt gehen..."/>
+ </form>
+ </notification>
+ <notification name="OfferFriendship">
+ [NAME] bietet Ihnen die Freundschaft an.
+
+[MESSAGE]
+
+(Standardmäßig werden Sie gegenseitig ihren Online-Status sehen können.)
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ </form>
+ </notification>
+ <notification name="OfferFriendshipNoMessage">
+ [NAME] bietet Ihnen die Freundschaft an.
+
+(Sie werden dadurch den gegenseitigen Online-Status sehen können.)
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ </form>
+ </notification>
+ <notification name="FriendshipAccepted">
+ [NAME] hat Ihr Freundschaftsangebot akzeptiert.
+ </notification>
+ <notification name="FriendshipDeclined">
+ [NAME] hat Ihr Freundschaftsangebot abgelehnt.
+ </notification>
+ <notification name="OfferCallingCard">
+ [FIRST] [LAST] bietet Ihnen eine Visitenkarte an.
+Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen.
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ </form>
+ </notification>
+ <notification name="RegionRestartMinutes">
+ Region wird in [MINUTES] Minuten neu gestartet.
+Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
+ </notification>
+ <notification name="RegionRestartSeconds">
+ Diese Region wird in [SECONDS] neu gestartet.
+Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
+ </notification>
+ <notification name="LoadWebPage">
+ Webseite [URL] laden?
+
+[MESSAGE]
+
+Von Objekt: [OBJECTNAME], Eigentümer: [NAME]?
+ <form name="form">
+ <button name="Gotopage" text="Zur Seite"/>
+ <button name="Cancel" text="Abbrechen"/>
+ </form>
+ </notification>
+ <notification name="FailedToFindWearableUnnamed">
+ [TYPE] nicht in Datenbank.
+ </notification>
+ <notification name="FailedToFindWearable">
+ [TYPE] namens [DESC] nicht in Datenbank.
+ </notification>
+ <notification name="InvalidWearable">
+ Dieser Artikel verwendet eine Funktion, die Ihr Viewer nicht unterstützt. Bitte aktualisieren Sie Ihre Version von [APP_NAME], um diesen Artikel anziehen zu können.
+ </notification>
+ <notification name="ScriptQuestion">
+ Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte:
+
+[QUESTIONS]
+Ist das OK?
+ <form name="form">
+ <button name="Yes" text="Ja"/>
+ <button name="No" text="Nein"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="ScriptQuestionCaution">
+ Ein Objekt namens „[OBJECTNAME]“ des Eigentümers „[NAME]“ möchte:
+
+[QUESTIONS]
+Wenn Sie diesem Objekt und seinem Ersteller nicht vertrauen, sollten Sie diese Anfrage ablehnen.
+
+Anfrage gestatten?
+ <form name="form">
+ <button name="Grant" text="Gewähren"/>
+ <button name="Deny" text="Verweigern"/>
+ <button name="Details" text="Info..."/>
+ </form>
+ </notification>
+ <notification name="ScriptDialog">
+ [FIRST] [LAST]s „[TITLE]“
+[MESSAGE]
+ <form name="form">
+ <button name="Ignore" text="Ignorieren"/>
+ </form>
+ </notification>
+ <notification name="ScriptDialogGroup">
+ [GROUPNAME]s „[TITLE]“
+[MESSAGE]
+ <form name="form">
+ <button name="Ignore" text="Ignorieren"/>
+ </form>
+ </notification>
+ <notification name="FirstBalanceIncrease">
+ Sie haben gerade [AMOUNT] L$ erhalten.
+Ihr Kontostand wird oben rechts angezeigt.
+ </notification>
+ <notification name="FirstBalanceDecrease">
+ Sie haben gerade [AMOUNT] L$ bezahlt.
+Ihr Kontostand wird oben rechts angezeigt.
+ </notification>
+ <notification name="FirstSit">
+ Sie sitzen.
+Verwenden Sie die Pfeiltasten (oder AWSD-Tasten), um sich umzusehen.
+Um aufzustehen, klicken Sie auf die Schaltfläche „Aufstehen“.
+ </notification>
+ <notification name="FirstMap">
+ Klicken Sie auf die Karte und bewegen Sie die Maus, um sich auf der Karte umzusehen.
+Mit Doppelklick können Sie teleportieren.
+Nutzen Sie die Optionen rechts, um Objekte, Einwohner oder Events anzuzeigen und einen anderen Hintergrund auszuwählen.
+ </notification>
+ <notification name="FirstBuild">
+ Sie haben die Bauwerkzeuge geöffnet. Jedes Objekt, dass Sie sehen wurde mit diesen Werkzeugen gebaut.
+ </notification>
+ <notification name="FirstTeleport">
+ Sie können nur zu bestimmten Bereichen in dieser Region teleportieren. Der Pfeil deutet zu Ihrem Ziel hin. Klicken Sie auf den Pfeil, um diesen auszublenden.
+ </notification>
+ <notification name="FirstOverrideKeys">
+ Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert.
+Probieren Sie die Pfeil- oder WASD-Tasten aus.
+Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden.
+Drücken Sie dazu „M“.
+ </notification>
+ <notification name="FirstAppearance">
+ Sie bearbeiten gerade Ihr Aussehen.
+Verwenden Sie die Pfeiltasten, um sich umzusehen.
+Klicken Sie auf „Alles speichern“, wenn Sie fertig sind.
+ </notification>
+ <notification name="FirstInventory">
+ Dies ist Ihr Inventar. Es enthält Objekte, die Ihnen gehören.
+
+* Um etwas anzuziehen, ziehen Sie es mit der Maus auf Ihren Avatar.
+* Um etwas inworld zu rezzen, ziehen Sie das Objekt auf den Boden.
+* Zum Lesen einer Notizkarte klicken Sie sie doppelt an.
+ </notification>
+ <notification name="FirstSandbox">
+ Dies ist ein Sandkasten. Hier können Einwohner lernen, wie Objekte gebaut werden.
+
+Objekte, die Sie hier bauen, werden gelöscht, nachdem Sie den Sandkasten verlassen. Vergessen Sie nicht, Ihr Werk mit einem Rechtsklick und der Auswahl „Nehmen“ in Ihrem Inventar zu speichern.
+ </notification>
+ <notification name="FirstFlexible">
+ Dieses Objekt ist flexibel. Flexible Objekte müssen die Eigenschaft „Phantom“ haben und dürfen nicht „physisch“ sein.
+ </notification>
+ <notification name="FirstDebugMenus">
+ Sie haben das Menü „Erweitert“ geöffnet.
+
+Um dieses Menü zu aktivieren bzw. deaktivieren:
+ Windows Strg-Alt-D
+ Mac ⌘-Opt-D
+ </notification>
+ <notification name="FirstSculptedPrim">
+ Sie bearbeiten ein geformtes Primitiv. Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert.
+ </notification>
+ <notification name="MaxListSelectMessage">
+ Sie können maximal [MAX_SELECT] Objekte
+von der Liste auswählen.
+ </notification>
+ <notification name="VoiceInviteP2P">
+ [NAME] lädt Sie zu einem Voice-Chat ein.
+Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten.
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="AutoUnmuteByIM">
+ [FIRST] [LAST] hat eine Instant Message erhalten; die Stummschaltung wurde aufgehoben.
+ </notification>
+ <notification name="AutoUnmuteByMoney">
+ [FIRST] [LAST] hat Geld erhalten; die Stummschaltung wurde aufgehoben.
+ </notification>
+ <notification name="AutoUnmuteByInventory">
+ [FIRST] [LAST] wurde ein Inventarobjekt angeboten; die Stummschaltung wurde aufgehoben.
+ </notification>
+ <notification name="VoiceInviteGroup">
+ [NAME] ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten.
+Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten.
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="VoiceInviteAdHoc">
+ [NAME] ist einem Voice-Konferenz-Chat beigetreten.
+Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten.
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="InviteAdHoc">
+ [NAME] lädt Sie zu einem Konferenz-Chat ein.
+Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten.
+ <form name="form">
+ <button name="Accept" text="Akzeptieren"/>
+ <button name="Decline" text="Ablehnen"/>
+ <button name="Mute" text="Stummschalten"/>
+ </form>
+ </notification>
+ <notification name="VoiceChannelFull">
+ Der Voice-Chat, dem Sie beitreten möchten, [VOICE_CHANNEL_NAME], hat seine maximale Teilnehmerzahl erreicht. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="ProximalVoiceChannelFull">
+ Es tut uns Leid. Dieses Gebiet hat seine maximale Kapazität für Voice-Gespräche erreicht. Bitte versuchen Sie es in einem anderen Gebiet.
+ </notification>
+ <notification name="VoiceChannelDisconnected">
+ Sie haben [VOICE_CHANNEL_NAME] verlassen. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
+ </notification>
+ <notification name="VoiceChannelDisconnectedP2P">
+ [VOICE_CHANNEL_NAME] hat das Gespräch beendet. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
+ </notification>
+ <notification name="P2PCallDeclined">
+ [VOICE_CHANNEL_NAME] hat Ihren Anruf abgelehnt. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
+ </notification>
+ <notification name="P2PCallNoAnswer">
+ [VOICE_CHANNEL_NAME] ist zurzeit nicht erreichbar. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
+ </notification>
+ <notification name="VoiceChannelJoinFailed">
+ Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden.
+ </notification>
+ <notification name="VoiceLoginRetry">
+ Wir erstellen einen Voice-Kanal für Sie. Bitte warten Sie einen Moment.
+ </notification>
+ <notification name="Cannot enter parcel: not a group member">
+ Nur Mitglieder einer bestimmten Gruppe dürfen diesen Bereich betreten.
+ </notification>
+ <notification name="Cannot enter parcel: banned">
+ Zugang zur Parzelle verweigert. Sie wurden verbannt.
+ </notification>
+ <notification name="Cannot enter parcel: not on access list">
+ Zugang zur Parzelle verweigert. Sie stehen nicht auf der Zugangsliste.
+ </notification>
+ <notification name="VoiceNotAllowed">
+ Sie sind nicht berechtigt, einem Voice-Chat in [VOICE_CHANNEL_NAME] beizutreten.
+ </notification>
+ <notification name="VoiceCallGenericError">
+ Fehler beim Versuch, eine Voice-Chat-Verbindung zu [VOICE_CHANNEL_NAME] herzustellen. Bitte versuchen Sie es erneut.
+ </notification>
+ <notification name="ServerVersionChanged">
+ Sie haben eine Region betreten, die eine andere Server-Version verwendet. Dies kann sich auf die Leistung auswirken. Klicken Sie hier, um die Versionshinweise anzuzeigen.
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ Die SLurl, auf die Sie geklickt haben, wird nicht unterstützt.
+ </notification>
+ <notification name="IMToast">
+ <form name="form">
+ <button name="respondbutton" text="Antworten"/>
+ </form>
+ </notification>
+ <notification name="AttachmentSaved">
+ Der Anhang wurde gespeichert.
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ Hilfethema für dieses Element wurde nicht gefunden.
+ </notification>
+ <global name="UnsupportedCPU">
+ - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen.
+ </global>
+ <global name="UnsupportedGLRequirements">
+ Ihr Computer entspricht nicht den Hardwareanforderungen von [APP_NAME]. [APP_NAME] setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem.
+
+Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter [SUPPORT_SITE].
+ </global>
+ <global name="UnsupportedCPUAmount">
+ 796
+ </global>
+ <global name="UnsupportedRAMAmount">
+ 510
+ </global>
+ <global name="UnsupportedGPU">
+ - Ihre Grafikkarte entspricht nicht den Mindestanforderungen.
+ </global>
+ <global name="UnsupportedRAM">
+ - Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen.
+ </global>
+ <global name="PermYes">
+ Ja
+ </global>
+ <global name="PermNo">
+ Nein
+ </global>
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ Wenn Sie ein Stück Land besitzen, können Sie dies als Ihren Heimatort festlegen.
+Ansonsten können Sie auf der Karte nachsehen und dort Ort suchen, die als „Infohub“ gekennzeichnet sind.
+ </global>
+</notifications>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
index 4a163c317e..9ddc31aca5 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profile Edit" name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident" value="Einwohner"/>
- <string name="AcctTypeTrial" value="Test"/>
- <string name="AcctTypeCharterMember" value="Charta-Mitglied"/>
- <string name="AcctTypeEmployee" value="Linden Lab-Mitarbeiter"/>
- <string name="PaymentInfoUsed" value="Zahlungsinfo verwendet"/>
- <string name="PaymentInfoOnFile" value="Zahlungsinfo archiviert"/>
- <string name="NoPaymentInfoOnFile" value="Keine Zahlungsinfo archiviert"/>
- <string name="AgeVerified" value="Altersgeprüft"/>
- <string name="NotAgeVerified" value="Nicht altersgeprüft"/>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=de
- </string>
- <string name="no_partner_text" value="Keiner"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="data_panel">
- <panel name="lifes_images_panel">
- <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/>
- </panel>
- <icon label="" name="real_world_edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/>
- <text name="title_homepage_text">
- Webseite:
- </text>
- <check_box label="In Suchergebnissen anzeigen" name="show_in_search_checkbox"/>
- <text name="title_acc_status_text" value="Kontostatus:"/>
- </panel>
- </panel>
- </scroll_container>
- <panel name="profile_me_buttons_panel">
- <button label="Änderungen speichern" name="save_btn"/>
- <button label="Abbrechen" name="cancel_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profile Edit" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident" value="Einwohner"/>
+ <string name="AcctTypeTrial" value="Test"/>
+ <string name="AcctTypeCharterMember" value="Charta-Mitglied"/>
+ <string name="AcctTypeEmployee" value="Linden Lab-Mitarbeiter"/>
+ <string name="PaymentInfoUsed" value="Zahlungsinfo verwendet"/>
+ <string name="PaymentInfoOnFile" value="Zahlungsinfo archiviert"/>
+ <string name="NoPaymentInfoOnFile" value="Keine Zahlungsinfo archiviert"/>
+ <string name="AgeVerified" value="Altersgeprüft"/>
+ <string name="NotAgeVerified" value="Nicht altersgeprüft"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=de
+ </string>
+ <string name="no_partner_text" value="Keiner"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <panel name="lifes_images_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/>
+ <text name="title_homepage_text">
+ Webseite:
+ </text>
+ <check_box label="In Suchergebnissen anzeigen" name="show_in_search_checkbox"/>
+ <text name="title_acc_status_text" value="Kontostatus:"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <button label="Änderungen speichern" name="save_btn"/>
+ <button label="Abbrechen" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
index 81a255a14f..0712722cb3 100644
--- a/indra/newview/skins/default/xui/de/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml
@@ -1,29 +1,29 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Mitglied einladen" name="invite_panel">
- <panel.string name="confirm_invite_owner_str">
- Möchten Sie wirklich (einen) neue(n) Eigentümer einladen? Dies kann nicht rückgängig gemacht werden!
- </panel.string>
- <panel.string name="loading">
- (wird geladen...)
- </panel.string>
- <panel.string name="already_in_group">
- Einige Avatare sind bereits Mitglied und wurden nicht eingeladen.
- </panel.string>
- <text name="help_text">
- Sie können mehrere Einwohner in Ihre
-Gruppe einladen. Klicken Sie hierzu
-auf „Einwohnerliste öffnen“.
- </text>
- <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
- <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Einwohnernamen."/>
- <button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/>
- <text name="role_text">
- Wählen Sie eine Rolle aus:
- </text>
- <combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/>
- <button label="Einladungen versenden" name="ok_button"/>
- <button label="Abbrechen" name="cancel_button"/>
- <string name="GroupInvitation">
- Gruppeneinladung
- </string>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Mitglied einladen" name="invite_panel">
+ <panel.string name="confirm_invite_owner_str">
+ Möchten Sie wirklich (einen) neue(n) Eigentümer einladen? Dies kann nicht rückgängig gemacht werden!
+ </panel.string>
+ <panel.string name="loading">
+ (wird geladen...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ Einige Avatare sind bereits Mitglied und wurden nicht eingeladen.
+ </panel.string>
+ <text name="help_text">
+ Sie können mehrere Einwohner in Ihre
+Gruppe einladen. Klicken Sie hierzu
+auf „Einwohnerliste öffnen“.
+ </text>
+ <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
+ <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Einwohnernamen."/>
+ <button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/>
+ <text name="role_text">
+ Wählen Sie eine Rolle aus:
+ </text>
+ <combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/>
+ <button label="Einladungen versenden" name="ok_button"/>
+ <button label="Abbrechen" name="cancel_button"/>
+ <string name="GroupInvitation">
+ Gruppeneinladung
+ </string>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
index fcd8cd358f..2dd9bf8d5f 100644
--- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
@@ -1,170 +1,170 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Land und L$" name="land_money_tab">
- <string name="help_text">
- Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
- Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen.
- </string>
- <string name="cant_view_group_accounting_text">
- Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen.
- </string>
- <string name="loading_txt">
- Wird geladen...
- </string>
- <text name="group_land_heading">
- Land in Gruppenbesitz
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Parzelle" name="name"/>
- <column label="Region" name="location"/>
- <column label="Typ" name="type"/>
- <column label="Gebiet" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Karte" label_selected="Karte" name="map_button"/>
- <text name="total_contributed_land_label">
- Gesamtbeitrag:
- </text>
- <text name="total_contributed_land_value">
- [AREA] qm
- </text>
- <text name="total_land_in_use_label">
- Insgesamt verwendetes Land:
- </text>
- <text name="total_land_in_use_value">
- [AREA] qm
- </text>
- <text name="land_available_label">
- Land verfügbar:
- </text>
- <text name="land_available_value">
- [AREA] qm
- </text>
- <text name="your_contribution_label">
- Ihr Beitrag:
- </text>
- <string name="land_contrib_error">
- Ihr Landbeitrag kann nicht festgelegt werden.
- </string>
- <text name="your_contribution_units">
- ( qm )
- </text>
- <text name="your_contribution_max_value">
- (max. [AMOUNT])
- </text>
- <text name="group_over_limit_text">
- Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit das verwendete Land gehalten werden kann.
- </text>
- <text name="group_money_heading">
- Gruppen-L$
- </text>
- <tab_container name="group_money_tab_container">
- <panel label="Planung" name="group_money_planning_tab">
- <text_editor name="group_money_planning_text">
- Wird berechnet...
- </text_editor>
- </panel>
- <panel label="Details" name="group_money_details_tab">
- <text_editor name="group_money_details_text">
- Wird berechnet...
- </text_editor>
- <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/>
- <button label="Später &gt;" label_selected="Später &gt;" name="later_details_button" tool_tip="Weiter in der Zeit"/>
- </panel>
- <panel label="Verkäufe" name="group_money_sales_tab">
- <text_editor name="group_money_sales_text">
- Wird berechnet...
- </text_editor>
- <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/>
- <button label="Später &gt;" label_selected="Später &gt;" name="later_sales_button" tool_tip="Weiter in der Zeit"/>
- </panel>
- </tab_container>
-</panel>
-<!--
-
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Land und L$" name="land_money_tab">
- <string name="help_text">
- Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
- Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen.
- </string>
- <string name="cant_view_group_accounting_text">
- Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen.
- </string>
- <string name="loading_txt">
- Wird geladen...
- </string>
- <text name="group_land_heading">
- Land in Gruppenbesitz
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Parzellenname" name="name"/>
- <column label="Region" name="location"/>
- <column label="Typ" name="type"/>
- <column label="Gebiet" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Auf Karte" label_selected="Auf Karte" name="map_button"/>
- <text name="total_contributed_land_label">
- Gesamtbeitrag:
- </text>
- <text name="total_contributed_land_value">
- [AREA] qm
- </text>
- <text name="total_land_in_use_label">
- Insgesamt verwendetes Land:
- </text>
- <text name="total_land_in_use_value">
- [AREA] qm
- </text>
- <text name="land_available_label">
- Land verfügbar:
- </text>
- <text name="land_available_value">
- [AREA] qm
- </text>
- <text name="your_contribution_label">
- Ihr Beitrag:
- </text>
- <string name="land_contrib_error">
- Ihr Landbeitrag kann nicht festgelegt werden.
- </string>
- <text name="your_contribution_max_value">
- qm (max. [AMOUNT])
- </text>
- <text name="group_over_limit_text">
- Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit
-das verwendete Land gehalten werden kann.
- </text>
- <text name="group_money_heading">
- Gruppen-L$
- </text>
- <tab_container name="group_money_tab_container">
- <panel label="Planung" name="group_money_planning_tab">
- <text_editor name="group_money_planning_text">
- Wird berechnet...
- </text_editor>
- </panel>
- <panel label="Details" name="group_money_details_tab">
- <text_editor name="group_money_details_text">
- Wird berechnet...
- </text_editor>
- <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/>
- <button label="Später &gt;" label_selected="Später &gt;" name="later_details_button" tool_tip="Weiter in der Zeit"/>
- </panel>
- <panel label="Verkäufe" name="group_money_sales_tab">
- <text_editor name="group_money_sales_text">
- Wird berechnet...
- </text_editor>
- <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/>
- <button label="Später &gt;" label_selected="Später &gt;" name="later_sales_button" tool_tip="Weiter in der Zeit"/>
- </panel>
- </tab_container>
-</panel>
-
--->
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Land und L$" name="land_money_tab">
+ <string name="help_text">
+ Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
+ </string>
+ <button label="?" name="help_button"/>
+ <string name="cant_view_group_land_text">
+ Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen.
+ </string>
+ <string name="cant_view_group_accounting_text">
+ Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen.
+ </string>
+ <string name="loading_txt">
+ Wird geladen...
+ </string>
+ <text name="group_land_heading">
+ Land in Gruppenbesitz
+ </text>
+ <scroll_list name="group_parcel_list">
+ <column label="Parzelle" name="name"/>
+ <column label="Region" name="location"/>
+ <column label="Typ" name="type"/>
+ <column label="Gebiet" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="Karte" label_selected="Karte" name="map_button"/>
+ <text name="total_contributed_land_label">
+ Gesamtbeitrag:
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] qm
+ </text>
+ <text name="total_land_in_use_label">
+ Insgesamt verwendetes Land:
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] qm
+ </text>
+ <text name="land_available_label">
+ Land verfügbar:
+ </text>
+ <text name="land_available_value">
+ [AREA] qm
+ </text>
+ <text name="your_contribution_label">
+ Ihr Beitrag:
+ </text>
+ <string name="land_contrib_error">
+ Ihr Landbeitrag kann nicht festgelegt werden.
+ </string>
+ <text name="your_contribution_units">
+ ( qm )
+ </text>
+ <text name="your_contribution_max_value">
+ (max. [AMOUNT])
+ </text>
+ <text name="group_over_limit_text">
+ Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit das verwendete Land gehalten werden kann.
+ </text>
+ <text name="group_money_heading">
+ Gruppen-L$
+ </text>
+ <tab_container name="group_money_tab_container">
+ <panel label="Planung" name="group_money_planning_tab">
+ <text_editor name="group_money_planning_text">
+ Wird berechnet...
+ </text_editor>
+ </panel>
+ <panel label="Details" name="group_money_details_tab">
+ <text_editor name="group_money_details_text">
+ Wird berechnet...
+ </text_editor>
+ <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/>
+ <button label="Später &gt;" label_selected="Später &gt;" name="later_details_button" tool_tip="Weiter in der Zeit"/>
+ </panel>
+ <panel label="Verkäufe" name="group_money_sales_tab">
+ <text_editor name="group_money_sales_text">
+ Wird berechnet...
+ </text_editor>
+ <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/>
+ <button label="Später &gt;" label_selected="Später &gt;" name="later_sales_button" tool_tip="Weiter in der Zeit"/>
+ </panel>
+ </tab_container>
+</panel>
+<!--
+
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Land und L$" name="land_money_tab">
+ <string name="help_text">
+ Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen.
+ </string>
+ <button label="?" name="help_button"/>
+ <string name="cant_view_group_land_text">
+ Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen.
+ </string>
+ <string name="cant_view_group_accounting_text">
+ Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen.
+ </string>
+ <string name="loading_txt">
+ Wird geladen...
+ </string>
+ <text name="group_land_heading">
+ Land in Gruppenbesitz
+ </text>
+ <scroll_list name="group_parcel_list">
+ <column label="Parzellenname" name="name"/>
+ <column label="Region" name="location"/>
+ <column label="Typ" name="type"/>
+ <column label="Gebiet" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="Auf Karte" label_selected="Auf Karte" name="map_button"/>
+ <text name="total_contributed_land_label">
+ Gesamtbeitrag:
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] qm
+ </text>
+ <text name="total_land_in_use_label">
+ Insgesamt verwendetes Land:
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] qm
+ </text>
+ <text name="land_available_label">
+ Land verfügbar:
+ </text>
+ <text name="land_available_value">
+ [AREA] qm
+ </text>
+ <text name="your_contribution_label">
+ Ihr Beitrag:
+ </text>
+ <string name="land_contrib_error">
+ Ihr Landbeitrag kann nicht festgelegt werden.
+ </string>
+ <text name="your_contribution_max_value">
+ qm (max. [AMOUNT])
+ </text>
+ <text name="group_over_limit_text">
+ Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit
+das verwendete Land gehalten werden kann.
+ </text>
+ <text name="group_money_heading">
+ Gruppen-L$
+ </text>
+ <tab_container name="group_money_tab_container">
+ <panel label="Planung" name="group_money_planning_tab">
+ <text_editor name="group_money_planning_text">
+ Wird berechnet...
+ </text_editor>
+ </panel>
+ <panel label="Details" name="group_money_details_tab">
+ <text_editor name="group_money_details_text">
+ Wird berechnet...
+ </text_editor>
+ <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/>
+ <button label="Später &gt;" label_selected="Später &gt;" name="later_details_button" tool_tip="Weiter in der Zeit"/>
+ </panel>
+ <panel label="Verkäufe" name="group_money_sales_tab">
+ <text_editor name="group_money_sales_text">
+ Wird berechnet...
+ </text_editor>
+ <button label="&lt; Früher" label_selected="&lt; Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/>
+ <button label="Später &gt;" label_selected="Später &gt;" name="later_sales_button" tool_tip="Weiter in der Zeit"/>
+ </panel>
+ </tab_container>
+</panel>
+
+-->
diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml
index 137713b771..27a2caf9f0 100644
--- a/indra/newview/skins/default/xui/de/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml
@@ -1,147 +1,147 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Mitteilungen" name="notices_tab">
- <text name="help_text">
- Mitteilungen sind eine schnelle Möglichkeit,
-Mitglieder auf dem Laufenden zu halten und
-Objekte im Anhang zu versenden. Mitteilungen werden
-nur an Mitglieder mit einer entsprechenden Rolle
-gesendet. Mitteilungen können unter
-„Allgemein“ ausgeschaltet werden.
- </text>
- <text name="no_notices_text">
- Keine älteren Mitteilungen.
- </text>
- <button label="?" label_selected="?" name="help_button"/>
- <text name="lbl">
- Gruppenmitteilungsarchiv
- </text>
- <text name="lbl2">
- Mitteilungen werden 14 Tage lang aufbewahrt. Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich.
- </text>
- <scroll_list name="notice_list">
- <column label="" name="icon"/>
- <column label="Thema" name="subject"/>
- <column label="Von" name="from"/>
- <column label="Datum" name="date"/>
- </scroll_list>
- <text name="notice_list_none_found">
- Nicht gefunden.
- </text>
- <button label="Neue Mitteilung" label_selected="Neue Mitteilung" name="create_new_notice"/>
- <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices"/>
- <panel label="Neue Mitteilung" name="panel_create_new_notice">
- <text name="lbl">
- Mitteilung schreiben
- </text>
- <text name="lbl2">
- Sie können ein Objekt zu einer Mitteilung hinzufügen, wenn Sie es aus Ihrem Inventar auf dieses Feld ziehen. Die angehängten Objekte müssen kopier- und übertragbar sein. Ordner können nicht verschickt werden.
- </text>
- <text name="lbl3">
- Betreff:
- </text>
- <text name="lbl4">
- Nachricht:
- </text>
- <text name="lbl5">
- Anhängen:
- </text>
- <button label="Anhang entfernen" label_selected="Anhang entfernen" name="remove_attachment"/>
- <button label="Senden" label_selected="Senden" name="send_notice"/>
- <panel name="drop_target" tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice."/>
- </panel>
- <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice">
- <text name="lbl">
- Archivierte Mitteilung
- </text>
- <text name="lbl2">
- Klicken Sie zum Senden einer Mitteilung auf „Neue Mitteilung“.
- </text>
- <text name="lbl3">
- Betreff:
- </text>
- <text name="lbl4">
- Nachricht:
- </text>
- <button label="Anlage öffnen" label_selected="Anlage öffnen" name="open_attachment"/>
- </panel>
-</panel>
-<!-- original file
-
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel label="Mitteilungen" name="notices_tab">
- <text name="help_text">
- Mitteilungen sind eine schnelle Möglichkeit,
-Mitglieder auf dem Laufenden zu halten und
-Objekte im Anhang zu versenden. Mitteilungen werden
-nur an Mitglieder mit einer entsprechenden Rolle
-gesendet. Mitteilungen können unter
-„Allgemein“ ausgeschaltet werden.
- </text>
- <text name="no_notices_text">
- Keine älteren Mitteilungen.
- </text>
- <button label="?" label_selected="?" name="help_button" />
- <text name="lbl">
- Gruppenmitteilungsarchiv
- </text>
- <text name="lbl2">
- Mitteilungen werden 14 Tage lang aufbewahrt. Klicken Sie auf eine Mitteilung,
-um sie anzuzeigen. Klicken Sie „Aktualisieren“, um neue Mitteilungen zu suchen.
-Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich.
- </text>
- <scroll_list name="notice_list">
- <column label="" name="icon" />
- <column label="Thema" name="subject" />
- <column label="Von" name="from" />
- <column label="Datum" name="date" />
- </scroll_list>
- <text name="notice_list_none_found">
- Nicht gefunden.
- </text>
- <button label="Neue Mitteilung" label_selected="Neue Mitteilung"
- name="create_new_notice" />
- <button label="Aktualisieren" label_selected="Liste aktualisieren"
- name="refresh_notices" />
- <panel label="Neue Mitteilung" name="panel_create_new_notice">
- <text name="lbl">
- Mitteilung schreiben
- </text>
- <text name="lbl2">
- Geben Sie einen Betreff für die Mitteilung ein. Sie können der
-Mitteilung ein Objekt anfügen, indem Sie es aus dem Inventar
-in dieses Feld ziehen. Angehängte Objekte müssen kopier-
-und transferierbar sein. Ordner können nicht gesendet werden.
- </text>
- <text name="lbl3">
- Betreff:
- </text>
- <text name="lbl4">
- Nachricht:
- </text>
- <text name="lbl5">
- Anhängen:
- </text>
- <button label="Anhang entfernen" label_selected="Anhang entfernen"
- name="remove_attachment" />
- <button label="Mitteilung senden" label_selected="Mitteilung senden" name="send_notice" />
- <panel name="drop_target"
- tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice." />
- </panel>
- <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice">
- <text name="lbl">
- Archivierte Mitteilung
- </text>
- <text name="lbl2">
- Klicken Sie zum Senden einer Mitteilung auf „Neue Mitteilung“.
- </text>
- <text name="lbl3">
- Betreff:
- </text>
- <text name="lbl4">
- Nachricht:
- </text>
- <button label="Anlage öffnen" label_selected="Anlage öffnen" name="open_attachment" />
- </panel>
-</panel>
-
--->
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Mitteilungen" name="notices_tab">
+ <text name="help_text">
+ Mitteilungen sind eine schnelle Möglichkeit,
+Mitglieder auf dem Laufenden zu halten und
+Objekte im Anhang zu versenden. Mitteilungen werden
+nur an Mitglieder mit einer entsprechenden Rolle
+gesendet. Mitteilungen können unter
+„Allgemein“ ausgeschaltet werden.
+ </text>
+ <text name="no_notices_text">
+ Keine älteren Mitteilungen.
+ </text>
+ <button label="?" label_selected="?" name="help_button"/>
+ <text name="lbl">
+ Gruppenmitteilungsarchiv
+ </text>
+ <text name="lbl2">
+ Mitteilungen werden 14 Tage lang aufbewahrt. Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich.
+ </text>
+ <scroll_list name="notice_list">
+ <column label="" name="icon"/>
+ <column label="Thema" name="subject"/>
+ <column label="Von" name="from"/>
+ <column label="Datum" name="date"/>
+ </scroll_list>
+ <text name="notice_list_none_found">
+ Nicht gefunden.
+ </text>
+ <button label="Neue Mitteilung" label_selected="Neue Mitteilung" name="create_new_notice"/>
+ <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices"/>
+ <panel label="Neue Mitteilung" name="panel_create_new_notice">
+ <text name="lbl">
+ Mitteilung schreiben
+ </text>
+ <text name="lbl2">
+ Sie können ein Objekt zu einer Mitteilung hinzufügen, wenn Sie es aus Ihrem Inventar auf dieses Feld ziehen. Die angehängten Objekte müssen kopier- und übertragbar sein. Ordner können nicht verschickt werden.
+ </text>
+ <text name="lbl3">
+ Betreff:
+ </text>
+ <text name="lbl4">
+ Nachricht:
+ </text>
+ <text name="lbl5">
+ Anhängen:
+ </text>
+ <button label="Anhang entfernen" label_selected="Anhang entfernen" name="remove_attachment"/>
+ <button label="Senden" label_selected="Senden" name="send_notice"/>
+ <panel name="drop_target" tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice."/>
+ </panel>
+ <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice">
+ <text name="lbl">
+ Archivierte Mitteilung
+ </text>
+ <text name="lbl2">
+ Klicken Sie zum Senden einer Mitteilung auf „Neue Mitteilung“.
+ </text>
+ <text name="lbl3">
+ Betreff:
+ </text>
+ <text name="lbl4">
+ Nachricht:
+ </text>
+ <button label="Anlage öffnen" label_selected="Anlage öffnen" name="open_attachment"/>
+ </panel>
+</panel>
+<!-- original file
+
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel label="Mitteilungen" name="notices_tab">
+ <text name="help_text">
+ Mitteilungen sind eine schnelle Möglichkeit,
+Mitglieder auf dem Laufenden zu halten und
+Objekte im Anhang zu versenden. Mitteilungen werden
+nur an Mitglieder mit einer entsprechenden Rolle
+gesendet. Mitteilungen können unter
+„Allgemein“ ausgeschaltet werden.
+ </text>
+ <text name="no_notices_text">
+ Keine älteren Mitteilungen.
+ </text>
+ <button label="?" label_selected="?" name="help_button" />
+ <text name="lbl">
+ Gruppenmitteilungsarchiv
+ </text>
+ <text name="lbl2">
+ Mitteilungen werden 14 Tage lang aufbewahrt. Klicken Sie auf eine Mitteilung,
+um sie anzuzeigen. Klicken Sie „Aktualisieren“, um neue Mitteilungen zu suchen.
+Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich.
+ </text>
+ <scroll_list name="notice_list">
+ <column label="" name="icon" />
+ <column label="Thema" name="subject" />
+ <column label="Von" name="from" />
+ <column label="Datum" name="date" />
+ </scroll_list>
+ <text name="notice_list_none_found">
+ Nicht gefunden.
+ </text>
+ <button label="Neue Mitteilung" label_selected="Neue Mitteilung"
+ name="create_new_notice" />
+ <button label="Aktualisieren" label_selected="Liste aktualisieren"
+ name="refresh_notices" />
+ <panel label="Neue Mitteilung" name="panel_create_new_notice">
+ <text name="lbl">
+ Mitteilung schreiben
+ </text>
+ <text name="lbl2">
+ Geben Sie einen Betreff für die Mitteilung ein. Sie können der
+Mitteilung ein Objekt anfügen, indem Sie es aus dem Inventar
+in dieses Feld ziehen. Angehängte Objekte müssen kopier-
+und transferierbar sein. Ordner können nicht gesendet werden.
+ </text>
+ <text name="lbl3">
+ Betreff:
+ </text>
+ <text name="lbl4">
+ Nachricht:
+ </text>
+ <text name="lbl5">
+ Anhängen:
+ </text>
+ <button label="Anhang entfernen" label_selected="Anhang entfernen"
+ name="remove_attachment" />
+ <button label="Mitteilung senden" label_selected="Mitteilung senden" name="send_notice" />
+ <panel name="drop_target"
+ tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice." />
+ </panel>
+ <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice">
+ <text name="lbl">
+ Archivierte Mitteilung
+ </text>
+ <text name="lbl2">
+ Klicken Sie zum Senden einer Mitteilung auf „Neue Mitteilung“.
+ </text>
+ <text name="lbl3">
+ Betreff:
+ </text>
+ <text name="lbl4">
+ Nachricht:
+ </text>
+ <button label="Anlage öffnen" label_selected="Anlage öffnen" name="open_attachment" />
+ </panel>
+</panel>
+
+-->
diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml
index a8080afeb3..4095deb16b 100644
--- a/indra/newview/skins/default/xui/de/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml
@@ -1,118 +1,118 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Mitglieder und Rollen" name="roles_tab">
- <panel.string name="default_needs_apply_text">
- Das Unterregister enthält nicht übernommene Änderungen.
- </panel.string>
- <panel.string name="want_apply_text">
- Diese Änderungen übernehmen?
- </panel.string>
- <tab_container name="roles_tab_container">
- <panel label="Mitglieder" name="members_sub_tab" tool_tip="Mitglieder">
- <panel.string name="help_text">
- Sie können Mitgliedern Rollen zuweisen und entziehen.
-Drücken Sie die Strg-Taste und klicken Sie auf Namen,
-um mehrere Mitglieder auszuwählen.
- </panel.string>
- <filter_editor label="Mitglieder filtern" name="filter_input"/>
- <name_list name="member_list">
- <name_list.columns label="Mitglied" name="name"/>
- <name_list.columns label="Übereignungen" name="donated"/>
- <name_list.columns label="Online" name="online"/>
- </name_list>
- <button label="Einladen" name="member_invite"/>
- <button label="Hinauswerfen" name="member_eject"/>
- </panel>
- <panel label="Rollen" name="roles_sub_tab">
- <panel.string name="help_text">
- Rollen haben einen Titel und umfassen bestimmte
-Fähigkeiten. Mitglieder können mehrere
-Rollen innehaben. Eine Gruppe kann bis zu 10 Rollen
-definieren, darunter „Jeder“ und „Eigentümer“.
- </panel.string>
- <panel.string name="cant_delete_role">
- Die Rollen „Jeder“ und „Eigentümer“ können nicht gelöscht werden.
- </panel.string>
- <filter_editor label="Rollen filtern" name="filter_input"/>
- <scroll_list name="role_list">
- <scroll_list.columns label="Rolle" name="name"/>
- <scroll_list.columns label="Titel" name="title"/>
- <scroll_list.columns label="Mitglieder" name="members"/>
- </scroll_list>
- <button label="Rolle hinzufügen" name="role_create"/>
- <button label="Rolle löschen" name="role_delete"/>
- </panel>
- <panel label="Fähigkeiten" name="actions_sub_tab" tool_tip="Sie können Fähigkeiten-Beschreibungen anzeigen und welche Rollen bzw. Mitglieder über diese Fähigkeit verfügen.">
- <panel.string name="help_text">
- Fähigkeiten verleihen Mitgliedern in Rollen bestimmte
-Rechte in einer Gruppe. Es gibt viele verschiedene Fähigkeiten.
- </panel.string>
- <filter_editor label="Fähigkeiten filtern" name="filter_input"/>
- <scroll_list name="action_list" tool_tip="Select an Ability to view more details.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- </tab_container>
- <panel name="members_footer">
- <text name="static">
- Rollen
- </text>
- <scroll_list name="member_assigned_roles">
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="role"/>
- </scroll_list>
- <text name="static2">
- Zulässige Fähigkeiten
- </text>
- <scroll_list name="member_allowed_actions" tool_tip="Um detaillierte Informationen zu erlaubten Fähigkeiten anzuzeigen, siehe Reiter Fähigkeiten.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="roles_footer">
- <text name="static">
- Name
- </text>
- <line_editor name="role_name">
- Angestellte
- </line_editor>
- <text name="static3">
- Titel
- </text>
- <line_editor name="role_title">
- (wartet)
- </line_editor>
- <text name="static2">
- Beschreibung
- </text>
- <text_editor name="role_description">
- (wartet)
- </text_editor>
- <text name="static4">
- Mitglieder in Rolle
- </text>
- <check_box label="Mitglieder sind sichtbar" name="role_visible_in_list" tool_tip="Festlegen, ob Mitglieder in dieser Rolle auf der Registerkarte „Allgemein“ für Personen außerhalb der Gruppe sichtbar sind."/>
- <text name="static5" tool_tip="Eine Liste der Fähigkeiten der aktuell ausgewählten Rolle.">
- Zulässige Fähigkeiten
- </text>
- <scroll_list name="role_allowed_actions" tool_tip="Um detaillierte Informationen zu erlaubten Fähigkeiten anzuzeigen, siehe Reiter Fähigkeiten.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="actions_footer">
- <text name="static">
- Beschreibung
- </text>
- <text_editor name="action_description">
- Diese Fähigkeit heißt „Mitglieder aus dieser Gruppe werfen“. Eigentümer können nur von anderen Eigentümern hinausgeworfen werden.
- </text_editor>
- <text name="static2">
- Rollen mit Fähigkeit
- </text>
- <text name="static3">
- Mitglieder mit Fähigkeit
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Mitglieder und Rollen" name="roles_tab">
+ <panel.string name="default_needs_apply_text">
+ Das Unterregister enthält nicht übernommene Änderungen.
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Diese Änderungen übernehmen?
+ </panel.string>
+ <tab_container name="roles_tab_container">
+ <panel label="Mitglieder" name="members_sub_tab" tool_tip="Mitglieder">
+ <panel.string name="help_text">
+ Sie können Mitgliedern Rollen zuweisen und entziehen.
+Drücken Sie die Strg-Taste und klicken Sie auf Namen,
+um mehrere Mitglieder auszuwählen.
+ </panel.string>
+ <filter_editor label="Mitglieder filtern" name="filter_input"/>
+ <name_list name="member_list">
+ <name_list.columns label="Mitglied" name="name"/>
+ <name_list.columns label="Übereignungen" name="donated"/>
+ <name_list.columns label="Online" name="online"/>
+ </name_list>
+ <button label="Einladen" name="member_invite"/>
+ <button label="Hinauswerfen" name="member_eject"/>
+ </panel>
+ <panel label="Rollen" name="roles_sub_tab">
+ <panel.string name="help_text">
+ Rollen haben einen Titel und umfassen bestimmte
+Fähigkeiten. Mitglieder können mehrere
+Rollen innehaben. Eine Gruppe kann bis zu 10 Rollen
+definieren, darunter „Jeder“ und „Eigentümer“.
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ Die Rollen „Jeder“ und „Eigentümer“ können nicht gelöscht werden.
+ </panel.string>
+ <filter_editor label="Rollen filtern" name="filter_input"/>
+ <scroll_list name="role_list">
+ <scroll_list.columns label="Rolle" name="name"/>
+ <scroll_list.columns label="Titel" name="title"/>
+ <scroll_list.columns label="Mitglieder" name="members"/>
+ </scroll_list>
+ <button label="Rolle hinzufügen" name="role_create"/>
+ <button label="Rolle löschen" name="role_delete"/>
+ </panel>
+ <panel label="Fähigkeiten" name="actions_sub_tab" tool_tip="Sie können Fähigkeiten-Beschreibungen anzeigen und welche Rollen bzw. Mitglieder über diese Fähigkeit verfügen.">
+ <panel.string name="help_text">
+ Fähigkeiten verleihen Mitgliedern in Rollen bestimmte
+Rechte in einer Gruppe. Es gibt viele verschiedene Fähigkeiten.
+ </panel.string>
+ <filter_editor label="Fähigkeiten filtern" name="filter_input"/>
+ <scroll_list name="action_list" tool_tip="Select an Ability to view more details.">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ </tab_container>
+ <panel name="members_footer">
+ <text name="static">
+ Rollen
+ </text>
+ <scroll_list name="member_assigned_roles">
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="role"/>
+ </scroll_list>
+ <text name="static2">
+ Zulässige Fähigkeiten
+ </text>
+ <scroll_list name="member_allowed_actions" tool_tip="Um detaillierte Informationen zu erlaubten Fähigkeiten anzuzeigen, siehe Reiter Fähigkeiten.">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ <panel name="roles_footer">
+ <text name="static">
+ Name
+ </text>
+ <line_editor name="role_name">
+ Angestellte
+ </line_editor>
+ <text name="static3">
+ Titel
+ </text>
+ <line_editor name="role_title">
+ (wartet)
+ </line_editor>
+ <text name="static2">
+ Beschreibung
+ </text>
+ <text_editor name="role_description">
+ (wartet)
+ </text_editor>
+ <text name="static4">
+ Mitglieder in Rolle
+ </text>
+ <check_box label="Mitglieder sind sichtbar" name="role_visible_in_list" tool_tip="Festlegen, ob Mitglieder in dieser Rolle auf der Registerkarte „Allgemein“ für Personen außerhalb der Gruppe sichtbar sind."/>
+ <text name="static5" tool_tip="Eine Liste der Fähigkeiten der aktuell ausgewählten Rolle.">
+ Zulässige Fähigkeiten
+ </text>
+ <scroll_list name="role_allowed_actions" tool_tip="Um detaillierte Informationen zu erlaubten Fähigkeiten anzuzeigen, siehe Reiter Fähigkeiten.">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ <panel name="actions_footer">
+ <text name="static">
+ Beschreibung
+ </text>
+ <text_editor name="action_description">
+ Diese Fähigkeit heißt „Mitglieder aus dieser Gruppe werfen“. Eigentümer können nur von anderen Eigentümern hinausgeworfen werden.
+ </text_editor>
+ <text name="static2">
+ Rollen mit Fähigkeit
+ </text>
+ <text name="static3">
+ Mitglieder mit Fähigkeit
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
index 487eb07b9e..f84bd24413 100644
--- a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <button label="Profil anzeigen" name="view_profile_btn"/>
- <button label="Freund hinzufügen" name="add_friend_btn"/>
- <button label="Freigeben" name="share_btn"/>
- <panel name="panel_call_buttons">
- <button label="Anrufen" name="call_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <button label="Profil anzeigen" name="view_profile_btn"/>
+ <button label="Freund hinzufügen" name="add_friend_btn"/>
+ <button label="Freigeben" name="share_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Anrufen" name="call_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index dc170ce245..9a15795cbe 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://de.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <panel name="login_widgets">
- <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/>
- <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/>
- <text name="start_location_text">
- Startposition:
- </text>
- <text name="create_new_account_text">
- Neues Konto erstellen
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <panel.string name="create_account_url">
+ http://de.secondlife.com/registration/
+ </panel.string>
+ <panel.string name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </panel.string>
+ <panel name="login_widgets">
+ <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/>
+ <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/>
+ <text name="start_location_text">
+ Startposition:
+ </text>
+ <text name="create_new_account_text">
+ Neues Konto erstellen
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
index fb4f3e0f53..6e5b35b002 100644
--- a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
- <line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabe drücken, um zu sprechen, Strg-Eingabe drücken, um zu Rufen."/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabe drücken, um zu sprechen, Strg-Eingabe drücken, um zu Rufen."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_pick_info.xml b/indra/newview/skins/default/xui/de/panel_pick_info.xml
index 8c1de575e9..d8939a8ed1 100644
--- a/indra/newview/skins/default/xui/de/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/de/panel_pick_info.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_pick_info">
- <text name="title" value="Auswahl-Info"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="pick_name" value="[name]"/>
- <text name="pick_location" value="[wird geladen...]"/>
- <text name="pick_desc" value="[description]"/>
- </panel>
- </scroll_container>
- <panel name="buttons">
- <button label="Teleportieren" name="teleport_btn"/>
- <button label="Karte" name="show_on_map_btn"/>
- <button label="Bearbeiten" name="edit_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="Auswahl-Info"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="pick_name" value="[name]"/>
+ <text name="pick_location" value="[wird geladen...]"/>
+ <text name="pick_desc" value="[description]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="Teleportieren" name="teleport_btn"/>
+ <button label="Karte" name="show_on_map_btn"/>
+ <button label="Bearbeiten" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml
index fb25fe89fd..e0bc3da88e 100644
--- a/indra/newview/skins/default/xui/de/panel_picks.xml
+++ b/indra/newview/skins/default/xui/de/panel_picks.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Auswahl" name="panel_picks">
- <panel label="bottom_panel" name="edit_panel">
- <button name="new_btn" tool_tip="Aktuellen Standort zur Auswahl hinzufügen"/>
- </panel>
- <panel name="buttons_cucks">
- <button label="Karte" name="show_on_map_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Auswahl" name="panel_picks">
+ <panel label="bottom_panel" name="edit_panel">
+ <button name="new_btn" tool_tip="Aktuellen Standort zur Auswahl hinzufügen"/>
+ </panel>
+ <panel name="buttons_cucks">
+ <button label="Karte" name="show_on_map_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index a9526c9014..3fa06b17f7 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Text-Chat" name="chat">
- <radio_group name="chat_font_size">
- <radio_item label="Klein" name="radio"/>
- <radio_item label="Mittel" name="radio2"/>
- <radio_item label="Groß" name="radio3"/>
- </radio_group>
- <color_swatch label="Sie" name="user"/>
- <text name="text_box1">
- Ich
- </text>
- <color_swatch label="Andere" name="agent"/>
- <text name="text_box2">
- Andere
- </text>
- <color_swatch label="IM" name="im"/>
- <text name="text_box3">
- IM
- </text>
- <color_swatch label="System" name="system"/>
- <text name="text_box4">
- System
- </text>
- <color_swatch label="Skriptfehler" name="script_error"/>
- <text name="text_box5">
- Skriptfehler
- </text>
- <color_swatch label="Objekte" name="objects"/>
- <text name="text_box6">
- Objekte
- </text>
- <color_swatch label="Eigentümer" name="owner"/>
- <text name="text_box7">
- Eigentümer
- </text>
- <color_swatch label="URLs" name="links"/>
- <text name="text_box9">
- URLs
- </text>
- <check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
- <check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Text-Chat" name="chat">
+ <radio_group name="chat_font_size">
+ <radio_item label="Klein" name="radio"/>
+ <radio_item label="Mittel" name="radio2"/>
+ <radio_item label="Groß" name="radio3"/>
+ </radio_group>
+ <color_swatch label="Sie" name="user"/>
+ <text name="text_box1">
+ Ich
+ </text>
+ <color_swatch label="Andere" name="agent"/>
+ <text name="text_box2">
+ Andere
+ </text>
+ <color_swatch label="IM" name="im"/>
+ <text name="text_box3">
+ IM
+ </text>
+ <color_swatch label="System" name="system"/>
+ <text name="text_box4">
+ System
+ </text>
+ <color_swatch label="Skriptfehler" name="script_error"/>
+ <text name="text_box5">
+ Skriptfehler
+ </text>
+ <color_swatch label="Objekte" name="objects"/>
+ <text name="text_box6">
+ Objekte
+ </text>
+ <color_swatch label="Eigentümer" name="owner"/>
+ <text name="text_box7">
+ Eigentümer
+ </text>
+ <color_swatch label="URLs" name="links"/>
+ <text name="text_box9">
+ URLs
+ </text>
+ <check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
+ <check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
index 7008389dd7..ce26e3782b 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
@@ -1,116 +1,116 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Grafik" name="Display panel">
- <text name="WindowSizeLabel">
- Fenstergröße:
- </text>
- <check_box label="Vollbildmodus verwenden" name="windowed mode"/>
- <combo_box left="115" name="windowsize combo">
- <combo_box.item label="640x480" name="640x480"/>
- <combo_box.item label="800x600" name="800x600"/>
- <combo_box.item label="720x480 (NTSC)" name="720x480"/>
- <combo_box.item label="768x576 (PAL)" name="768x576"/>
- <combo_box.item label="1024x768" name="1024x768"/>
- </combo_box>
- <text name="UI Size:">
- UI-Größe:
- </text>
- <text name="QualitySpeed">
- Qualität und Geschwindigkeit:
- </text>
- <text name="FasterText">
- Schneller
- </text>
- <text name="BetterText">
- Besser
- </text>
- <text name="ShadersPrefText">
- Niedrig
- </text>
- <text name="ShadersPrefText2">
- Mittel
- </text>
- <text name="ShadersPrefText3">
- Hoch
- </text>
- <text name="ShadersPrefText4">
- Ultra
- </text>
- <panel label="CustomGraphics" name="CustomGraphics Panel">
- <text name="ShadersText">
- Shader:
- </text>
- <check_box initial_value="true" label="Bumpmapping und Glanz" name="BumpShiny"/>
- <check_box initial_value="true" label="Einfache Shader" name="BasicShaders" tool_tip="Deaktivieren Sie diese Option, wenn der Grafikkartentreiber Abstürze verursacht."/>
- <check_box initial_value="true" label="Atmosphären-Shader" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Wasserreflexionen" name="Reflections"/>
- <text name="ReflectionDetailText">
- Spiegelung:
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item label="Terrain und Bäume" name="0"/>
- <radio_item label="Alle statischen Objekte" name="1"/>
- <radio_item label="Alle Avatare und Objekte" name="2"/>
- <radio_item label="Alles" name="3"/>
- </radio_group>
- <text name="AvatarRenderingText">
- Avatar-Darstellung:
- </text>
- <check_box initial_value="true" label="Ersatzavatare" name="AvatarImpostors"/>
- <check_box initial_value="true" label="Hardware-Hautberechnung" name="AvatarVertexProgram"/>
- <check_box initial_value="true" label="Avatar-Kleidung" name="AvatarCloth"/>
- <slider label="Sichtweite:" name="DrawDistance"/>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="Max. Partikelzahl:" name="MaxParticleCount"/>
- <slider label="Post-Processing-Qualität:" name="RenderPostProcess"/>
- <text name="MeshDetailText">
- Gitterdetails:
- </text>
- <slider label=" Objekte:" name="ObjectMeshDetail"/>
- <slider label=" Flexiprimitiva:" name="FlexibleMeshDetail"/>
- <slider label=" Bäume:" name="TreeMeshDetail"/>
- <slider label=" Avatare:" name="AvatarMeshDetail"/>
- <slider label=" Terrain:" name="TerrainMeshDetail"/>
- <slider label=" Himmel:" name="SkyMeshDetail"/>
- <text name="PostProcessText">
- Niedrig
- </text>
- <text name="ObjectMeshDetailText">
- Niedrig
- </text>
- <text name="FlexibleMeshDetailText">
- Niedrig
- </text>
- <text name="TreeMeshDetailText">
- Niedrig
- </text>
- <text name="AvatarMeshDetailText">
- Niedrig
- </text>
- <text name="TerrainMeshDetailText">
- Niedrig
- </text>
- <text name="SkyMeshDetailText">
- Niedrig
- </text>
- <text name="LightingDetailText">
- Beleuchtungsdetails:
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item label="Nur Sonne und Mond" name="SunMoon"/>
- <radio_item label="Lokale Lichtquellen" name="LocalLights"/>
- </radio_group>
- <text name="TerrainDetailText">
- Terraindetails:
- </text>
- <radio_group name="TerrainDetailRadio">
- <radio_item label="Niedrig" name="0"/>
- <radio_item label="Hoch" name="2"/>
- </radio_group>
- </panel>
- <button label="Übernehmen" label_selected="Übernehmen" name="Apply"/>
- <button label="Zurücksetzen" name="Defaults"/>
- <button label="Erweitert" name="Advanced"/>
- <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Grafik" name="Display panel">
+ <text name="WindowSizeLabel">
+ Fenstergröße:
+ </text>
+ <check_box label="Vollbildmodus verwenden" name="windowed mode"/>
+ <combo_box left="115" name="windowsize combo">
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="720x480 (NTSC)" name="720x480"/>
+ <combo_box.item label="768x576 (PAL)" name="768x576"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ </combo_box>
+ <text name="UI Size:">
+ UI-Größe:
+ </text>
+ <text name="QualitySpeed">
+ Qualität und Geschwindigkeit:
+ </text>
+ <text name="FasterText">
+ Schneller
+ </text>
+ <text name="BetterText">
+ Besser
+ </text>
+ <text name="ShadersPrefText">
+ Niedrig
+ </text>
+ <text name="ShadersPrefText2">
+ Mittel
+ </text>
+ <text name="ShadersPrefText3">
+ Hoch
+ </text>
+ <text name="ShadersPrefText4">
+ Ultra
+ </text>
+ <panel label="CustomGraphics" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Shader:
+ </text>
+ <check_box initial_value="true" label="Bumpmapping und Glanz" name="BumpShiny"/>
+ <check_box initial_value="true" label="Einfache Shader" name="BasicShaders" tool_tip="Deaktivieren Sie diese Option, wenn der Grafikkartentreiber Abstürze verursacht."/>
+ <check_box initial_value="true" label="Atmosphären-Shader" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Wasserreflexionen" name="Reflections"/>
+ <text name="ReflectionDetailText">
+ Spiegelung:
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item label="Terrain und Bäume" name="0"/>
+ <radio_item label="Alle statischen Objekte" name="1"/>
+ <radio_item label="Alle Avatare und Objekte" name="2"/>
+ <radio_item label="Alles" name="3"/>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ Avatar-Darstellung:
+ </text>
+ <check_box initial_value="true" label="Ersatzavatare" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Hardware-Hautberechnung" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="Avatar-Kleidung" name="AvatarCloth"/>
+ <slider label="Sichtweite:" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Max. Partikelzahl:" name="MaxParticleCount"/>
+ <slider label="Post-Processing-Qualität:" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ Gitterdetails:
+ </text>
+ <slider label=" Objekte:" name="ObjectMeshDetail"/>
+ <slider label=" Flexiprimitiva:" name="FlexibleMeshDetail"/>
+ <slider label=" Bäume:" name="TreeMeshDetail"/>
+ <slider label=" Avatare:" name="AvatarMeshDetail"/>
+ <slider label=" Terrain:" name="TerrainMeshDetail"/>
+ <slider label=" Himmel:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Niedrig
+ </text>
+ <text name="ObjectMeshDetailText">
+ Niedrig
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Niedrig
+ </text>
+ <text name="TreeMeshDetailText">
+ Niedrig
+ </text>
+ <text name="AvatarMeshDetailText">
+ Niedrig
+ </text>
+ <text name="TerrainMeshDetailText">
+ Niedrig
+ </text>
+ <text name="SkyMeshDetailText">
+ Niedrig
+ </text>
+ <text name="LightingDetailText">
+ Beleuchtungsdetails:
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item label="Nur Sonne und Mond" name="SunMoon"/>
+ <radio_item label="Lokale Lichtquellen" name="LocalLights"/>
+ </radio_group>
+ <text name="TerrainDetailText">
+ Terraindetails:
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item label="Niedrig" name="0"/>
+ <radio_item label="Hoch" name="2"/>
+ </radio_group>
+ </panel>
+ <button label="Übernehmen" label_selected="Übernehmen" name="Apply"/>
+ <button label="Zurücksetzen" name="Defaults"/>
+ <button label="Erweitert" name="Advanced"/>
+ <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
index d5305d3cbe..30083deea8 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
@@ -1,20 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Kommunikation" name="im">
- <panel.string name="log_in_to_change">
- Zum Ändern anmelden
- </panel.string>
- <button label="Cache löschen" name="clear_cache"/>
- <text name="cache_size_label_l">
- (Positionen, Bilder, Internet, Suchverlauf)
- </text>
- <check_box label="Nur Freunden und Gruppen meinen Online-Status mitteilen" name="online_visibility"/>
- <check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/>
- <check_box label="Nach Beendigung von Anrufen Mikrofon abschalten." name="auto_disengage_mic_check"/>
- <check_box label="Cookies annehmen" name="cookies_enabled"/>
- <check_box label="Protokoll auf meinem Computer speichern" name="log_instant_messages"/>
- <radio_group name="ChatIMLogs">
- <radio_item label="Chat" name="radio1"/>
- <radio_item label="IM" name="radio2"/>
- </radio_group>
- <button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Kommunikation" name="im">
+ <panel.string name="log_in_to_change">
+ Zum Ändern anmelden
+ </panel.string>
+ <button label="Cache löschen" name="clear_cache"/>
+ <text name="cache_size_label_l">
+ (Positionen, Bilder, Internet, Suchverlauf)
+ </text>
+ <check_box label="Nur Freunden und Gruppen meinen Online-Status mitteilen" name="online_visibility"/>
+ <check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/>
+ <check_box label="Nach Beendigung von Anrufen Mikrofon abschalten." name="auto_disengage_mic_check"/>
+ <check_box label="Cookies annehmen" name="cookies_enabled"/>
+ <check_box label="Protokoll auf meinem Computer speichern" name="log_instant_messages"/>
+ <radio_group name="ChatIMLogs">
+ <radio_item label="Chat" name="radio1"/>
+ <radio_item label="IM" name="radio2"/>
+ </radio_group>
+ <button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
index a2c317acbb..ef28bf4cfe 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
@@ -1,46 +1,46 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Kamera" name="Input panel">
- <button label="Andere Geräte" name="joystick_setup_button"/>
- <text name="Mouselook:">
- Mouselook:
- </text>
- <text name=" Mouse Sensitivity">
- Mausempfindlichkeit:
- </text>
- <check_box label="Umkehren" name="invert_mouse"/>
- <text name="Network:">
- Netzwerk:
- </text>
- <text name="Maximum bandwidth">
- Maximale Bandbreite
- </text>
- <text name="text_box2">
- kbps
- </text>
- <check_box label="Benutzerdefinierter Port" name="connection_port_enabled"/>
- <spinner label="Port-Nummer:" name="web_proxy_port"/>
- <text name="cache_size_label_l">
- Cache
- </text>
- <text name="text_box5">
- MB
- </text>
- <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/>
- <button label="Zurücksetzen" label_selected="Festlegen" name="reset_cache"/>
- <text name="Cache location">
- Cache-Ordner
- </text>
- <text name="Web:">
- Internet:
- </text>
- <radio_group name="use_external_browser">
- <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Den integrierten Browser für Hilfe, Internetlinks, usw. verwenden. Der Browser wird als eigenständiges Fenster in [APP_NAME] geöffnet."/>
- <radio_item label="Meinen Browser verwenden (IE, Firefox)" name="external" tool_tip="Standard-Browser für Hilfe, Weblinks usw. verwenden. Im Vollbildmodus nicht empfohlen."/>
- </radio_group>
- <check_box initial_value="false" label="Web-Proxy:" name="web_proxy_enabled"/>
- <line_editor name="web_proxy_editor" tool_tip="Name oder IP-Adresse des Proxys"/>
- <button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/>
- <text name="Proxy location">
- Proxy-Standort
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Kamera" name="Input panel">
+ <button label="Andere Geräte" name="joystick_setup_button"/>
+ <text name="Mouselook:">
+ Mouselook:
+ </text>
+ <text name=" Mouse Sensitivity">
+ Mausempfindlichkeit:
+ </text>
+ <check_box label="Umkehren" name="invert_mouse"/>
+ <text name="Network:">
+ Netzwerk:
+ </text>
+ <text name="Maximum bandwidth">
+ Maximale Bandbreite
+ </text>
+ <text name="text_box2">
+ kbps
+ </text>
+ <check_box label="Benutzerdefinierter Port" name="connection_port_enabled"/>
+ <spinner label="Port-Nummer:" name="web_proxy_port"/>
+ <text name="cache_size_label_l">
+ Cache
+ </text>
+ <text name="text_box5">
+ MB
+ </text>
+ <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/>
+ <button label="Zurücksetzen" label_selected="Festlegen" name="reset_cache"/>
+ <text name="Cache location">
+ Cache-Ordner
+ </text>
+ <text name="Web:">
+ Internet:
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Den integrierten Browser für Hilfe, Internetlinks, usw. verwenden. Der Browser wird als eigenständiges Fenster in [APP_NAME] geöffnet."/>
+ <radio_item label="Meinen Browser verwenden (IE, Firefox)" name="external" tool_tip="Standard-Browser für Hilfe, Weblinks usw. verwenden. Im Vollbildmodus nicht empfohlen."/>
+ </radio_group>
+ <check_box initial_value="false" label="Web-Proxy:" name="web_proxy_enabled"/>
+ <line_editor name="web_proxy_editor" tool_tip="Name oder IP-Adresse des Proxys"/>
+ <button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/>
+ <text name="Proxy location">
+ Proxy-Standort
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
index 907803b32f..b5fb2329c5 100644
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile.xml
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=de-DE
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
- <string name="no_partner_text" value="Keiner"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
- </panel>
- <panel name="first_life_image_panel">
- <text name="title_rw_descr_text" value="Echtes Leben:"/>
- </panel>
- <text name="me_homepage_text">
- Webseite:
- </text>
- <text name="title_member_text" value="Mitglied seit:"/>
- <text name="title_acc_status_text" value="Kontostatus:"/>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="title_groups_text" value="Gruppen:"/>
- </panel>
- </scroll_container>
- <panel name="profile_buttons_panel">
- <button label="Freund hinzufügen" name="add_friend"/>
- <button label="IM" name="im"/>
- <button label="Anrufen" name="call"/>
- <button label="Teleportieren" name="teleport"/>
- </panel>
- <panel name="profile_me_buttons_panel">
- <button label="Profil bearbeiten" name="edit_profile_btn"/>
- <button label="Aussehen bearbeiten" name="edit_appearance_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil" name="panel_profile">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="payment_update_link_url">
+ http://www.secondlife.com/account/billing.php?lang=de-DE
+ </string>
+ <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
+ <string name="no_partner_text" value="Keiner"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="title_rw_descr_text" value="Echtes Leben:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Webseite:
+ </text>
+ <text name="title_member_text" value="Mitglied seit:"/>
+ <text name="title_acc_status_text" value="Kontostatus:"/>
+ <text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="title_groups_text" value="Gruppen:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Freund hinzufügen" name="add_friend"/>
+ <button label="IM" name="im"/>
+ <button label="Anrufen" name="call"/>
+ <button label="Teleportieren" name="teleport"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Profil bearbeiten" name="edit_profile_btn"/>
+ <button label="Aussehen bearbeiten" name="edit_appearance_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml
index 4ae27907aa..84e1a20bf7 100644
--- a/indra/newview/skins/default/xui/de/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile_view.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- Online
- </string>
- <string name="status_offline">
- Offline
- </string>
- <text name="user_name" value="(wird geladen...)"/>
- <text name="status" value="Online"/>
- <tab_container name="tabs">
- <panel label="Profil" name="panel_profile"/>
- <panel label="Auswahl" name="panel_picks"/>
- </tab_container>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+ <string name="status_online">
+ Online
+ </string>
+ <string name="status_offline">
+ Offline
+ </string>
+ <text name="user_name" value="(wird geladen...)"/>
+ <text name="status" value="Online"/>
+ <tab_container name="tabs">
+ <panel label="Profil" name="panel_profile"/>
+ <panel label="Auswahl" name="panel_picks"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_script_ed.xml b/indra/newview/skins/default/xui/de/panel_script_ed.xml
index c1208f19cf..17970cf261 100644
--- a/indra/newview/skins/default/xui/de/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/de/panel_script_ed.xml
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="script panel">
- <panel.string name="loading">
- Wird geladen...
- </panel.string>
- <panel.string name="can_not_view">
- Dieses Skript kann nicht angezeigt oder bearbeitet werden, da als Berechtigung „kein kopieren&quot; festgelegt wurde. Um ein Skript innerhalb eines Objektes anzuzeigen oder zu bearbeiten, benötigen Sie die vollständige Berechtigung.
- </panel.string>
- <panel.string name="public_objects_can_not_run">
- Öffentliche Objekte können keine Skripts ausführen
- </panel.string>
- <panel.string name="script_running">
- Läuft
- </panel.string>
- <panel.string name="Title">
- Skript: [NAME]
- </panel.string>
- <text_editor name="Script Editor">
- Wird geladen...
- </text_editor>
- <button label="Speichern" label_selected="Speichern" name="Save_btn"/>
- <combo_box label="Einfügen..." name="Insert..."/>
- <menu_bar name="script_menu">
- <menu label="Datei" name="File">
- <menu_item_call label="Speichern" name="Save"/>
- <menu_item_call label="Alle Änderungen zurücksetzen" name="Revert All Changes"/>
- </menu>
- <menu label="Bearbeiten" name="Edit">
- <menu_item_call label="Rückgängig" name="Undo"/>
- <menu_item_call label="Wiederherstellen" name="Redo"/>
- <menu_item_call label="Ausschneiden" name="Cut"/>
- <menu_item_call label="Kopieren" name="Copy"/>
- <menu_item_call label="Einfügen" name="Paste"/>
- <menu_item_call label="Alle auswählen" name="Select All"/>
- <menu_item_call label="Auswahl aufheben" name="Deselect"/>
- <menu_item_call label="Suchen / Ersetzen..." name="Search / Replace..."/>
- </menu>
- <menu label="Hilfe" name="Help">
- <menu_item_call label="Hilfe..." name="Help..."/>
- <menu_item_call label="Schlüsselwort-Hilfe" name="Keyword Help..."/>
- </menu>
- </menu_bar>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ Wird geladen...
+ </panel.string>
+ <panel.string name="can_not_view">
+ Dieses Skript kann nicht angezeigt oder bearbeitet werden, da als Berechtigung „kein kopieren&quot; festgelegt wurde. Um ein Skript innerhalb eines Objektes anzuzeigen oder zu bearbeiten, benötigen Sie die vollständige Berechtigung.
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ Öffentliche Objekte können keine Skripts ausführen
+ </panel.string>
+ <panel.string name="script_running">
+ Läuft
+ </panel.string>
+ <panel.string name="Title">
+ Skript: [NAME]
+ </panel.string>
+ <text_editor name="Script Editor">
+ Wird geladen...
+ </text_editor>
+ <button label="Speichern" label_selected="Speichern" name="Save_btn"/>
+ <combo_box label="Einfügen..." name="Insert..."/>
+ <menu_bar name="script_menu">
+ <menu label="Datei" name="File">
+ <menu_item_call label="Speichern" name="Save"/>
+ <menu_item_call label="Alle Änderungen zurücksetzen" name="Revert All Changes"/>
+ </menu>
+ <menu label="Bearbeiten" name="Edit">
+ <menu_item_call label="Rückgängig" name="Undo"/>
+ <menu_item_call label="Wiederherstellen" name="Redo"/>
+ <menu_item_call label="Ausschneiden" name="Cut"/>
+ <menu_item_call label="Kopieren" name="Copy"/>
+ <menu_item_call label="Einfügen" name="Paste"/>
+ <menu_item_call label="Alle auswählen" name="Select All"/>
+ <menu_item_call label="Auswahl aufheben" name="Deselect"/>
+ <menu_item_call label="Suchen / Ersetzen..." name="Search / Replace..."/>
+ </menu>
+ <menu label="Hilfe" name="Help">
+ <menu_item_call label="Hilfe..." name="Help..."/>
+ <menu_item_call label="Schlüsselwort-Hilfe" name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml
index 59fee002b8..5b8137af4a 100644
--- a/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/de/panel_stand_stop_flying.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
-<panel name="panel_stand_stop_flying">
- <button label="Stehen" name="stand_btn" tool_tip="Klicken Sie hier, um aufzustehen."/>
- <button label="Landen" name="stop_fly_btn" tool_tip="Landen"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+ <button label="Stehen" name="stand_btn" tool_tip="Klicken Sie hier, um aufzustehen."/>
+ <button label="Landen" name="stop_fly_btn" tool_tip="Landen"/>
+</panel>
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 0ca050c81f..4ba867e118 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- Januar:Februar:März:April:Mai:Juni:Juli:August:September:Oktober:November:Dezember
- </panel.string>
- <panel.string name="packet_loss_tooltip">
- Paketverlust
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- Bandbreite
- </panel.string>
- <panel.string name="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand: Hier klicken, um mehr L$ zu kaufen"/>
- <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
- 12:00
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+ <panel.string name="StatBarDaysOfWeek">
+ Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag
+ </panel.string>
+ <panel.string name="StatBarMonthsOfYear">
+ Januar:Februar:März:April:Mai:Juni:Juli:August:September:Oktober:November:Dezember
+ </panel.string>
+ <panel.string name="packet_loss_tooltip">
+ Paketverlust
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
+ Bandbreite
+ </panel.string>
+ <panel.string name="buycurrencylabel">
+ [AMT] L$
+ </panel.string>
+ <button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand: Hier klicken, um mehr L$ zu kaufen"/>
+ <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
+ 12:00
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_world_map.xml b/indra/newview/skins/default/xui/de/panel_world_map.xml
index d83d32a952..f7454dd634 100644
--- a/indra/newview/skins/default/xui/de/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/de/panel_world_map.xml
@@ -1,57 +1,57 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="world_map">
- <panel.string name="Loading">
- Wird geladen...
- </panel.string>
- <panel.string name="InvalidLocation">
- Ungültige Position
- </panel.string>
- <panel.string name="world_map_north">
- N
- </panel.string>
- <panel.string name="world_map_east">
- O
- </panel.string>
- <panel.string name="world_map_west">
- W
- </panel.string>
- <panel.string name="world_map_south">
- S
- </panel.string>
- <panel.string name="world_map_southeast">
- SO
- </panel.string>
- <panel.string name="world_map_northeast">
- NO
- </panel.string>
- <panel.string name="world_map_southwest">
- SW
- </panel.string>
- <panel.string name="world_map_northwest">
- NW
- </panel.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="O" name="floater_map_east" text="O">
- O
- </text>
- <text label="W" name="floater_map_west" text="W">
- W
- </text>
- <text label="S" name="floater_map_south" text="S">
- S
- </text>
- <text label="SO" name="floater_map_southeast" text="SO">
- SO
- </text>
- <text label="NO" name="floater_map_northeast" text="NO">
- NO
- </text>
- <text label="SW" name="floater_map_southwest" text="SW">
- SW
- </text>
- <text label="NW" name="floater_map_northwest" text="NW">
- NW
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+ <panel.string name="Loading">
+ Wird geladen...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Ungültige Position
+ </panel.string>
+ <panel.string name="world_map_north">
+ N
+ </panel.string>
+ <panel.string name="world_map_east">
+ O
+ </panel.string>
+ <panel.string name="world_map_west">
+ W
+ </panel.string>
+ <panel.string name="world_map_south">
+ S
+ </panel.string>
+ <panel.string name="world_map_southeast">
+ SO
+ </panel.string>
+ <panel.string name="world_map_northeast">
+ NO
+ </panel.string>
+ <panel.string name="world_map_southwest">
+ SW
+ </panel.string>
+ <panel.string name="world_map_northwest">
+ NW
+ </panel.string>
+ <text label="N" name="floater_map_north" text="N">
+ N
+ </text>
+ <text label="O" name="floater_map_east" text="O">
+ O
+ </text>
+ <text label="W" name="floater_map_west" text="W">
+ W
+ </text>
+ <text label="S" name="floater_map_south" text="S">
+ S
+ </text>
+ <text label="SO" name="floater_map_southeast" text="SO">
+ SO
+ </text>
+ <text label="NO" name="floater_map_northeast" text="NO">
+ NO
+ </text>
+ <text label="SW" name="floater_map_southwest" text="SW">
+ SW
+ </text>
+ <text label="NW" name="floater_map_northwest" text="NW">
+ NW
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index e1ba2025cd..9a0f5021d8 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1,3149 +1,3149 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
-<strings>
- <string name="SECOND_LIFE">
- Second Life
- </string>
- <string name="APP_NAME">
- Second Life
- </string>
- <string name="SECOND_LIFE_GRID">
- Second Life-Grid:
- </string>
- <string name="SUPPORT_SITE">
- Second Life Support-Portal
- </string>
- <string name="StartupDetectingHardware">
- Hardware wird erfasst...
- </string>
- <string name="StartupLoading">
- Wird geladen
- </string>
- <string name="Fullbright">
- Fullbright (Legacy)
- </string>
- <string name="LoginInProgress">
- Anmeldevorgang gestartet. [APP_NAME] reagiert möglicherweise nicht. Bitte warten.
- </string>
- <string name="LoginInProgressNoFrozen">
- Anmeldung erfolgt...
- </string>
- <string name="LoginAuthenticating">
- Authentifizierung
- </string>
- <string name="LoginMaintenance">
- Account wird aktualisiert...
- </string>
- <string name="LoginAttempt">
- Ein früherer Anmeldeversuch ist fehlgeschlagen. Anmeldung, Versuch [NUMBER]
- </string>
- <string name="LoginPrecaching">
- Welt wird geladen...
- </string>
- <string name="LoginInitializingBrowser">
- Integrierter Webbrowser wird initialisiert...
- </string>
- <string name="LoginInitializingMultimedia">
- Multimedia wird initialisiert...
- </string>
- <string name="LoginVerifyingCache">
- Cache-Dateien werden überprüft (dauert 60-90 Sekunden)...
- </string>
- <string name="LoginProcessingResponse">
- Antwort wird verarbeitet...
- </string>
- <string name="LoginInitializingWorld">
- Welt wird initialisiert...
- </string>
- <string name="LoginDecodingImages">
- Bilder werden entpackt...
- </string>
- <string name="LoginInitializingQuicktime">
- QuickTime wird initialisiert...
- </string>
- <string name="LoginQuicktimeNotFound">
- QuickTime nicht gefunden - Initialisierung nicht möglich.
- </string>
- <string name="LoginQuicktimeOK">
- QuickTime wurde initialisiert.
- </string>
- <string name="LoginWaitingForRegionHandshake">
- Region-Handshake...
- </string>
- <string name="LoginConnectingToRegion">
- Region-Verbindung...
- </string>
- <string name="LoginDownloadingClothing">
- Kleidung wird geladen...
- </string>
- <string name="AgentLostConnection">
- In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung.
- </string>
- <string name="TooltipPerson">
- Person
- </string>
- <string name="TooltipNoName">
- (namenlos)
- </string>
- <string name="TooltipOwner">
- Eigentümer:
- </string>
- <string name="TooltipPublic">
- Öffentlich
- </string>
- <string name="TooltipIsGroup">
- (Gruppe)
- </string>
- <string name="TooltipForSaleL$">
- Zum Verkauf: [AMOUNT] L$
- </string>
- <string name="TooltipFlagGroupBuild">
- Gruppenbau
- </string>
- <string name="TooltipFlagNoBuild">
- Bauen aus
- </string>
- <string name="TooltipFlagNoEdit">
- Gruppenbau
- </string>
- <string name="TooltipFlagNotSafe">
- Unsicher
- </string>
- <string name="TooltipFlagNoFly">
- Fliegen aus
- </string>
- <string name="TooltipFlagGroupScripts">
- Gruppenskripte
- </string>
- <string name="TooltipFlagNoScripts">
- Skripte aus
- </string>
- <string name="TooltipLand">
- Land:
- </string>
- <string name="TooltipMustSingleDrop">
- Sie können nur ein einzelnes Objekt hierher ziehen
- </string>
- <string name="TooltipHttpUrl">
- Anklicken, um Webseite anzuzeigen
- </string>
- <string name="TooltipSLURL">
- Anklicken, um Informationen zu diesem Standort anzuzeigen
- </string>
- <string name="TooltipAgentUrl">
- Anklicken, um das Profil dieses Einwohners anzuzeigen
- </string>
- <string name="TooltipGroupUrl">
- Anklicken, um Beschreibung der Gruppe anzuzeigen
- </string>
- <string name="TooltipEventUrl">
- Anklicken, um Beschreibung der Veranstaltung anzuzeigen
- </string>
- <string name="TooltipClassifiedUrl">
- Anklicken, um diese Anzeige anzuzeigen
- </string>
- <string name="TooltipParcelUrl">
- Anklicken, um Beschreibung der Parzelle anzuzeigen
- </string>
- <string name="TooltipTeleportUrl">
- Anklicken, um zu diesem Standort zu teleportieren
- </string>
- <string name="TooltipObjectIMUrl">
- Anklicken, um Beschreibung des Objekts anzuzeigen
- </string>
- <string name="TooltipSLAPP">
- Anklicken, um Befehl secondlife:// auszuführen
- </string>
- <string name="BUTTON_CLOSE_DARWIN">
- Schließen (⌘-W)
- </string>
- <string name="BUTTON_CLOSE_WIN">
- Schließen (Strg+W)
- </string>
- <string name="BUTTON_RESTORE">
- Wiederherstellen
- </string>
- <string name="BUTTON_MINIMIZE">
- Minimieren
- </string>
- <string name="BUTTON_TEAR_OFF">
- Abnehmen
- </string>
- <string name="BUTTON_DOCK">
- Andocken
- </string>
- <string name="BUTTON_UNDOCK">
- Abkoppeln
- </string>
- <string name="BUTTON_HELP">
- Hilfe anzeigen
- </string>
- <string name="RetrievingData">
- Laden...
- </string>
- <string name="ReleaseNotes">
- Versionshinweise
- </string>
- <string name="LoadingData">
- Wird geladen...
- </string>
- <string name="AvatarNameNobody">
- (niemand)
- </string>
- <string name="AvatarNameWaiting">
- (wartet)
- </string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
- <string name="GroupNameNone">
- (keiner)
- </string>
- <string name="AssetErrorNone">
- Kein Fehler
- </string>
- <string name="AssetErrorRequestFailed">
- Asset-Anforderung: fehlgeschlagen
- </string>
- <string name="AssetErrorNonexistentFile">
- Asset-Anforderung: Datei existiert nicht
- </string>
- <string name="AssetErrorNotInDatabase">
- Asset-Anforderung: Asset in Datenbank nicht gefunden
- </string>
- <string name="AssetErrorEOF">
- Ende der Datei
- </string>
- <string name="AssetErrorCannotOpenFile">
- Datei kann nicht geöffnet werden
- </string>
- <string name="AssetErrorFileNotFound">
- Datei nicht gefunden
- </string>
- <string name="AssetErrorTCPTimeout">
- Zeitüberschreitung bei Dateiübertragung
- </string>
- <string name="AssetErrorCircuitGone">
- Verbindung verloren
- </string>
- <string name="AssetErrorPriceMismatch">
- Viewer und Server sind sich nicht über Preis einig
- </string>
- <string name="AssetErrorUnknownStatus">
- Status unbekannt
- </string>
- <string name="texture">
- Textur
- </string>
- <string name="sound">
- Sound
- </string>
- <string name="calling card">
- Visitenkarte
- </string>
- <string name="landmark">
- Landmarke
- </string>
- <string name="legacy script">
- Skript (veraltet)
- </string>
- <string name="clothing">
- Kleidung
- </string>
- <string name="object">
- Objekt
- </string>
- <string name="note card">
- Notizkarte
- </string>
- <string name="folder">
- Ordner
- </string>
- <string name="root">
- Hauptverzeichnis
- </string>
- <string name="lsl2 script">
- LSL2 Skript
- </string>
- <string name="lsl bytecode">
- LSL Bytecode
- </string>
- <string name="tga texture">
- tga-Textur
- </string>
- <string name="body part">
- Körperteil
- </string>
- <string name="snapshot">
- Foto
- </string>
- <string name="lost and found">
- Fundbüro
- </string>
- <string name="targa image">
- targa-Bild
- </string>
- <string name="trash">
- Papierkorb
- </string>
- <string name="jpeg image">
- jpeg-Bild
- </string>
- <string name="animation">
- Animation
- </string>
- <string name="gesture">
- Geste
- </string>
- <string name="simstate">
- simstate
- </string>
- <string name="favorite">
- Favoriten
- </string>
- <string name="symbolic link">
- Link
- </string>
- <string name="AvatarAway">
- Abwesend
- </string>
- <string name="AvatarBusy">
- Beschäftigt
- </string>
- <string name="AvatarMuted">
- Stummgeschaltet
- </string>
- <string name="anim_express_afraid">
- Ängstlich
- </string>
- <string name="anim_express_anger">
- Verärgert
- </string>
- <string name="anim_away">
- Abwesend
- </string>
- <string name="anim_backflip">
- Rückwärtssalto
- </string>
- <string name="anim_express_laugh">
- Lachkrampf
- </string>
- <string name="anim_express_toothsmile">
- Grinsen
- </string>
- <string name="anim_blowkiss">
- Kusshand
- </string>
- <string name="anim_express_bored">
- Gelangweilt
- </string>
- <string name="anim_bow">
- Verbeugen
- </string>
- <string name="anim_clap">
- Klatschen
- </string>
- <string name="anim_courtbow">
- Diener
- </string>
- <string name="anim_express_cry">
- Weinen
- </string>
- <string name="anim_dance1">
- Tanz 1
- </string>
- <string name="anim_dance2">
- Tanz 2
- </string>
- <string name="anim_dance3">
- Tanz 3
- </string>
- <string name="anim_dance4">
- Tanz 4
- </string>
- <string name="anim_dance5">
- Tanz 5
- </string>
- <string name="anim_dance6">
- Tanz 6
- </string>
- <string name="anim_dance7">
- Tanz 7
- </string>
- <string name="anim_dance8">
- Tanz 8
- </string>
- <string name="anim_express_disdain">
- Verachten
- </string>
- <string name="anim_drink">
- Trinken
- </string>
- <string name="anim_express_embarrased">
- Verlegen
- </string>
- <string name="anim_angry_fingerwag">
- Drohen
- </string>
- <string name="anim_fist_pump">
- Faust pumpen
- </string>
- <string name="anim_yoga_float">
- Yogaflieger
- </string>
- <string name="anim_express_frown">
- Stirnrunzeln
- </string>
- <string name="anim_impatient">
- Ungeduldig
- </string>
- <string name="anim_jumpforjoy">
- Freudensprung
- </string>
- <string name="anim_kissmybutt">
- LMA
- </string>
- <string name="anim_express_kiss">
- Küssen
- </string>
- <string name="anim_laugh_short">
- Lachen
- </string>
- <string name="anim_musclebeach">
- Posen
- </string>
- <string name="anim_no_unhappy">
- Nein (Bedauernd)
- </string>
- <string name="anim_no_head">
- Nein
- </string>
- <string name="anim_nyanya">
- Ällabätsch
- </string>
- <string name="anim_punch_onetwo">
- Eins-Zwei-Punch
- </string>
- <string name="anim_express_open_mouth">
- Mund offen
- </string>
- <string name="anim_peace">
- Friede
- </string>
- <string name="anim_point_you">
- Auf anderen zeigen
- </string>
- <string name="anim_point_me">
- Auf mich zeigen
- </string>
- <string name="anim_punch_l">
- Linker Haken
- </string>
- <string name="anim_punch_r">
- Rechter Haken
- </string>
- <string name="anim_rps_countdown">
- SSP zählen
- </string>
- <string name="anim_rps_paper">
- SSP Papier
- </string>
- <string name="anim_rps_rock">
- SSP Stein
- </string>
- <string name="anim_rps_scissors">
- SSP Schere
- </string>
- <string name="anim_express_repulsed">
- Angewidert
- </string>
- <string name="anim_kick_roundhouse_r">
- Rundkick
- </string>
- <string name="anim_express_sad">
- Traurig
- </string>
- <string name="anim_salute">
- Salutieren
- </string>
- <string name="anim_shout">
- Rufen
- </string>
- <string name="anim_express_shrug">
- Schulterzucken
- </string>
- <string name="anim_express_smile">
- Lächeln
- </string>
- <string name="anim_smoke_idle">
- Zigarette halten
- </string>
- <string name="anim_smoke_inhale">
- Rauchen
- </string>
- <string name="anim_smoke_throw_down">
- Zigarette wegwerfen
- </string>
- <string name="anim_express_surprise">
- Überraschung
- </string>
- <string name="anim_sword_strike_r">
- Schwerthieb
- </string>
- <string name="anim_angry_tantrum">
- Wutanfall
- </string>
- <string name="anim_express_tongue_out">
- Zunge rausstrecken
- </string>
- <string name="anim_hello">
- Winken
- </string>
- <string name="anim_whisper">
- Flüstern
- </string>
- <string name="anim_whistle">
- Pfeifen
- </string>
- <string name="anim_express_wink">
- Zwinkern
- </string>
- <string name="anim_wink_hollywood">
- Zwinkern (Hollywood)
- </string>
- <string name="anim_express_worry">
- Sorgenvoll
- </string>
- <string name="anim_yes_happy">
- Ja (Erfreut)
- </string>
- <string name="anim_yes_head">
- Ja
- </string>
- <string name="texture_loading">
- Wird geladen...
- </string>
- <string name="worldmap_offline">
- Offline
- </string>
- <string name="Ok">
- OK
- </string>
- <string name="Premature end of file">
- Unvollständige Datei
- </string>
- <string name="ST_NO_JOINT">
- HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.
- </string>
- <string name="whisper">
- flüstert:
- </string>
- <string name="shout">
- ruft:
- </string>
- <string name="ringing">
- Verbindung mit In-Welt-Voice-Chat...
- </string>
- <string name="connected">
- Verbunden
- </string>
- <string name="unavailable">
- Der aktuelle Standort unterstützt keine Voice-Kommunikation
- </string>
- <string name="hang_up">
- Verbindung mit In-Welt-Voice-Chat getrennt
- </string>
- <string name="ScriptQuestionCautionChatGranted">
- Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung erteilt: [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung verweigert: [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Linden-Dollar (L$) von Ihnen nehmen
- </string>
- <string name="ActOnControlInputs">
- Steuerung festlegen
- </string>
- <string name="RemapControlInputs">
- Steuerung neu zuweisen
- </string>
- <string name="AnimateYourAvatar">
- Avatar animieren
- </string>
- <string name="AttachToYourAvatar">
- An Avatar anhängen
- </string>
- <string name="ReleaseOwnership">
- Eigentum aufgeben und öffentlich machen
- </string>
- <string name="LinkAndDelink">
- Mit Objekten verknüpfen und davon trennen
- </string>
- <string name="AddAndRemoveJoints">
- Verbindungen zu anderen Objekten hinzufügen und entfernen
- </string>
- <string name="ChangePermissions">
- Berechtigungen ändern
- </string>
- <string name="TrackYourCamera">
- Kameraverfolgung
- </string>
- <string name="ControlYourCamera">
- Kamerasteuerung
- </string>
- <string name="SIM_ACCESS_PG">
- PG
- </string>
- <string name="SIM_ACCESS_MATURE">
- Mature
- </string>
- <string name="SIM_ACCESS_ADULT">
- Adult
- </string>
- <string name="SIM_ACCESS_DOWN">
- Offline
- </string>
- <string name="SIM_ACCESS_MIN">
- Unbekannt
- </string>
- <string name="land_type_unknown">
- (unbekannt)
- </string>
- <string name="all_files">
- Alle Dateien
- </string>
- <string name="sound_files">
- Sounds
- </string>
- <string name="animation_files">
- Animationen
- </string>
- <string name="image_files">
- Bilder
- </string>
- <string name="save_file_verb">
- Speichern
- </string>
- <string name="load_file_verb">
- Laden
- </string>
- <string name="targa_image_files">
- Targa-Bilder
- </string>
- <string name="bitmap_image_files">
- Bitmap-Bilder
- </string>
- <string name="avi_movie_file">
- AVI-Filmdatei
- </string>
- <string name="xaf_animation_file">
- XAF Anim-Datei
- </string>
- <string name="xml_file">
- XML-Datei
- </string>
- <string name="dot_raw_file">
- RAW-Datei
- </string>
- <string name="compressed_image_files">
- Komprimierte Bilder
- </string>
- <string name="load_files">
- Dateien laden
- </string>
- <string name="choose_the_directory">
- Verzeichnis auswählen
- </string>
- <string name="AvatarSetNotAway">
- Als anwesend anzeigen
- </string>
- <string name="AvatarSetAway">
- Als abwesend anzeigen
- </string>
- <string name="AvatarSetNotBusy">
- Als nicht beschäftigt anzeigen
- </string>
- <string name="AvatarSetBusy">
- Als beschäftigt anzeigen
- </string>
- <string name="shape">
- Form
- </string>
- <string name="skin">
- Haut
- </string>
- <string name="hair">
- Haare
- </string>
- <string name="eyes">
- Augen
- </string>
- <string name="shirt">
- Hemd
- </string>
- <string name="pants">
- Hose
- </string>
- <string name="shoes">
- Schuhe
- </string>
- <string name="socks">
- Socken
- </string>
- <string name="jacket">
- Jacke
- </string>
- <string name="gloves">
- Handschuhe
- </string>
- <string name="undershirt">
- Unterhemd
- </string>
- <string name="underpants">
- Unterhose
- </string>
- <string name="skirt">
- Rock
- </string>
- <string name="invalid">
- ungültig
- </string>
- <string name="BodyPartsRightArm">
- Rechter Arm
- </string>
- <string name="BodyPartsHead">
- Kopf
- </string>
- <string name="BodyPartsLeftArm">
- Linker Arm
- </string>
- <string name="BodyPartsLeftLeg">
- Linkes Bein
- </string>
- <string name="BodyPartsTorso">
- Oberkörper
- </string>
- <string name="BodyPartsRightLeg">
- Rechtes Bein
- </string>
- <string name="GraphicsQualityLow">
- Niedrig
- </string>
- <string name="GraphicsQualityMid">
- Mittel
- </string>
- <string name="GraphicsQualityHigh">
- Hoch
- </string>
- <string name="LeaveMouselook">
- ESC drücken, um zur Normalansicht zurückzukehren
- </string>
- <string name="InventoryNoMatchingItems">
- Im Inventar wurden keine passenden Artikel gefunden.
- </string>
- <string name="InventoryNoTexture">
- Sie haben keine Kopie dieser Textur in Ihrem Inventar.
- </string>
- <string name="LoadingContents">
- Inhalte werden geladen...
- </string>
- <string name="NoContents">
- Keine Inhalte
- </string>
- <string name="InvFolder My Inventory">
- Mein Inventar
- </string>
- <string name="InvFolder My Favorites">
- Meine Favoriten
- </string>
- <string name="InvFolder Library">
- Bibliothek
- </string>
- <string name="InvFolder Textures">
- Texturen
- </string>
- <string name="InvFolder Sounds">
- Sounds
- </string>
- <string name="InvFolder Calling Cards">
- Visitenkarten
- </string>
- <string name="InvFolder Landmarks">
- Landmarken
- </string>
- <string name="InvFolder Scripts">
- Skripts
- </string>
- <string name="InvFolder Clothing">
- Kleidung
- </string>
- <string name="InvFolder Objects">
- Objekte
- </string>
- <string name="InvFolder Notecards">
- Notizkarten
- </string>
- <string name="InvFolder New Folder">
- Neuer Ordner
- </string>
- <string name="InvFolder Inventory">
- Inventar
- </string>
- <string name="InvFolder Uncompressed Images">
- Nicht-Komprimierte Bilder
- </string>
- <string name="InvFolder Body Parts">
- Körperteile
- </string>
- <string name="InvFolder Trash">
- Papierkorb
- </string>
- <string name="InvFolder Photo Album">
- Fotoalbum
- </string>
- <string name="InvFolder Lost And Found">
- Fundbüro
- </string>
- <string name="InvFolder Uncompressed Sounds">
- Nicht-Komprimierte Sounds
- </string>
- <string name="InvFolder Animations">
- Animationen
- </string>
- <string name="InvFolder Gestures">
- Gesten
- </string>
- <string name="InvFolder favorite">
- Favoriten
- </string>
- <string name="InvFolder Current Outfit">
- Aktuelles Outfit
- </string>
- <string name="InvFolder My Outfits">
- Meine Outfits
- </string>
- <string name="InvFolder Friends">
- Freunde
- </string>
- <string name="InvFolder All">
- Alle
- </string>
- <string name="Buy">
- Kaufen
- </string>
- <string name="BuyforL$">
- Kaufen für L$
- </string>
- <string name="Stone">
- Stein
- </string>
- <string name="Metal">
- Metall
- </string>
- <string name="Glass">
- Glas
- </string>
- <string name="Wood">
- Holz
- </string>
- <string name="Flesh">
- Fleisch
- </string>
- <string name="Plastic">
- Plastik
- </string>
- <string name="Rubber">
- Gummi
- </string>
- <string name="Light">
- Licht
- </string>
- <string name="KBShift">
- Umschalt-Taste
- </string>
- <string name="KBCtrl">
- Strg
- </string>
- <string name="Chest">
- Brust
- </string>
- <string name="Skull">
- Schädel
- </string>
- <string name="Left Shoulder">
- Linke Schulter
- </string>
- <string name="Right Shoulder">
- Rechte Schulter
- </string>
- <string name="Left Hand">
- Linke Hand
- </string>
- <string name="Right Hand">
- Rechte Hand
- </string>
- <string name="Left Foot">
- Linker Fuß
- </string>
- <string name="Right Foot">
- Rechter Fuß
- </string>
- <string name="Spine">
- Wirbelsäule
- </string>
- <string name="Pelvis">
- Becken
- </string>
- <string name="Mouth">
- Mund
- </string>
- <string name="Chin">
- Kinn
- </string>
- <string name="Left Ear">
- Linkes Ohr
- </string>
- <string name="Right Ear">
- Rechtes Ohr
- </string>
- <string name="Left Eyeball">
- Linker Augapfel
- </string>
- <string name="Right Eyeball">
- Rechter Augapfel
- </string>
- <string name="Nose">
- Nase
- </string>
- <string name="R Upper Arm">
- R Oberarm
- </string>
- <string name="R Forearm">
- R Unterarm
- </string>
- <string name="L Upper Arm">
- L Oberarm
- </string>
- <string name="L Forearm">
- L Unterarm
- </string>
- <string name="Right Hip">
- Rechte Hüfte
- </string>
- <string name="R Upper Leg">
- R Oberschenkel
- </string>
- <string name="R Lower Leg">
- R Unterschenkel
- </string>
- <string name="Left Hip">
- Linke Hüfte
- </string>
- <string name="L Upper Leg">
- L Oberschenkel
- </string>
- <string name="L Lower Leg">
- L Unterschenkel
- </string>
- <string name="Stomach">
- Bauch
- </string>
- <string name="Left Pec">
- Linke Brust
- </string>
- <string name="Right Pec">
- Rechts
- </string>
- <string name="YearsMonthsOld">
- [AGEYEARS] [AGEMONTHS] alt
- </string>
- <string name="YearsOld">
- [AGEYEARS] alt
- </string>
- <string name="MonthsOld">
- [AGEMONTHS] alt
- </string>
- <string name="WeeksOld">
- [AGEWEEKS] alt
- </string>
- <string name="DaysOld">
- [AGEDAYS] alt
- </string>
- <string name="TodayOld">
- Seit heute Mitglied
- </string>
- <string name="AgeYearsA">
- [COUNT] Jahr
- </string>
- <string name="AgeYearsB">
- [COUNT] Jahre
- </string>
- <string name="AgeYearsC">
- [COUNT] Jahre
- </string>
- <string name="AgeMonthsA">
- [COUNT] Monat
- </string>
- <string name="AgeMonthsB">
- [COUNT] Monate
- </string>
- <string name="AgeMonthsC">
- [COUNT] Monate
- </string>
- <string name="AgeWeeksA">
- [COUNT] Woche
- </string>
- <string name="AgeWeeksB">
- [COUNT] Wochen
- </string>
- <string name="AgeWeeksC">
- [COUNT] Wochen
- </string>
- <string name="AgeDaysA">
- [COUNT] Tag
- </string>
- <string name="AgeDaysB">
- [COUNT] Tage
- </string>
- <string name="AgeDaysC">
- [COUNT] Tage
- </string>
- <string name="AcctTypeResident">
- Einwohner
- </string>
- <string name="AcctTypeTrial">
- Test
- </string>
- <string name="AcctTypeCharterMember">
- Charta-Mitglied
- </string>
- <string name="AcctTypeEmployee">
- Linden Lab-Mitarbeiter
- </string>
- <string name="PaymentInfoUsed">
- Zahlungsinfo verwendet
- </string>
- <string name="PaymentInfoOnFile">
- Zahlungsinfo archiviert
- </string>
- <string name="NoPaymentInfoOnFile">
- Keine Zahlungsinfo archiviert
- </string>
- <string name="AgeVerified">
- Altersgeprüft
- </string>
- <string name="NotAgeVerified">
- Nicht altersgeprüft
- </string>
- <string name="Center 2">
- Mitte 2
- </string>
- <string name="Top Right">
- Oben rechts
- </string>
- <string name="Top">
- Oben
- </string>
- <string name="Top Left">
- Oben links
- </string>
- <string name="Center">
- Zentrieren
- </string>
- <string name="Bottom Left">
- Unten links
- </string>
- <string name="Bottom">
- Unten
- </string>
- <string name="Bottom Right">
- Unten rechts
- </string>
- <string name="CompileQueueDownloadedCompiling">
- Heruntergeladen, wird kompiliert
- </string>
- <string name="CompileQueueScriptNotFound">
- Skript wurde auf Server nicht gefunden.
- </string>
- <string name="CompileQueueProblemDownloading">
- Beim Herunterladen ist ein Problem aufgetreten
- </string>
- <string name="CompileQueueInsufficientPermDownload">
- Unzureichende Rechte zum Herunterladen eines Skripts.
- </string>
- <string name="CompileQueueInsufficientPermFor">
- Unzureichende Berechtigungen für
- </string>
- <string name="CompileQueueUnknownFailure">
- Unbekannter Fehler beim Herunterladen
- </string>
- <string name="CompileQueueTitle">
- Rekompilierung
- </string>
- <string name="CompileQueueStart">
- rekompilieren
- </string>
- <string name="ResetQueueTitle">
- Zurücksetzen
- </string>
- <string name="ResetQueueStart">
- Zurücksetzen
- </string>
- <string name="RunQueueTitle">
- Skript ausführen
- </string>
- <string name="RunQueueStart">
- Skript ausführen
- </string>
- <string name="NotRunQueueTitle">
- Skript anhalten
- </string>
- <string name="NotRunQueueStart">
- Skript anhalten
- </string>
- <string name="CompileSuccessful">
- Kompilieren erfolgreich abgeschlossen!
- </string>
- <string name="CompileSuccessfulSaving">
- Kompilieren erfolgreich abgeschlossen, speichern...
- </string>
- <string name="SaveComplete">
- Speichervorgang abgeschlossen.
- </string>
- <string name="ObjectOutOfRange">
- Skript (Objekt außerhalb des Bereichs)
- </string>
- <string name="GodToolsObjectOwnedBy">
- Objekt [OBJECT], Besitzer [OWNER]
- </string>
- <string name="GroupsNone">
- keine
- </string>
- <string name="Unknown">
- (unbekannt)
- </string>
- <string name="Balance">
- Kontostand
- </string>
- <string name="Credits">
- Danksagung
- </string>
- <string name="Debits">
- Soll
- </string>
- <string name="Total">
- Gesamtbetrag
- </string>
- <string name="NoGroupDataFound">
- Für Gruppe wurden keine Gruppendaten gefunden
- </string>
- <string name="IMParentEstate">
- parent estate
- </string>
- <string name="IMMainland">
- Mainland
- </string>
- <string name="IMTeen">
- Teen
- </string>
- <string name="RegionInfoError">
- Fehler
- </string>
- <string name="RegionInfoAllEstatesOwnedBy">
- alle Grundstücke gehören [OWNER]
- </string>
- <string name="RegionInfoAllEstatesYouOwn">
- alle Grundstücke, die Ihnen gehört haben
- </string>
- <string name="RegionInfoAllEstatesYouManage">
- alle Grundstücke, die Sie für [OWNER] verwaltet haben
- </string>
- <string name="RegionInfoAllowedResidents">
- Zulässige Einwohner: ([ALLOWEDAGENTS], max [MAXACCESS])
- </string>
- <string name="RegionInfoAllowedGroups">
- Zulässige Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS])
- </string>
- <string name="CursorPos">
- Zeile [LINE], Spalte [COLUMN]
- </string>
- <string name="PanelDirCountFound">
- [COUNT] gefunden
- </string>
- <string name="PanelContentsNewScript">
- Neues Skript
- </string>
- <string name="MuteByName">
- (nach Namen)
- </string>
- <string name="MuteAgent">
- (Einwohner)
- </string>
- <string name="MuteObject">
- (Objekt)
- </string>
- <string name="MuteGroup">
- (Gruppe)
- </string>
- <string name="RegionNoCovenant">
- Für dieses Grundstück liegt kein Vertrag vor.
- </string>
- <string name="RegionNoCovenantOtherOwner">
- Für dieses Grundstück liegt kein Vertrag vor. Das Land auf diesem Grundstück wird vom Grundstückseigentümer und nicht von Linden Lab verkauft. Für Informationen zum Verkauf setzen Sie sich bitte mit dem Grundstückseigentümer in Verbindung.
- </string>
- <string name="covenant_last_modified">
- Zuletzt geändert:
- </string>
- <string name="GroupOwned">
- In Gruppenbesitz
- </string>
- <string name="Public">
- Öffentlich
- </string>
- <string name="ClassifiedClicksTxt">
- Klicks: [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil
- </string>
- <string name="ClassifiedUpdateAfterPublish">
- (wird nach Veröffentlichung aktualisiert)
- </string>
- <string name="GroupVoteYes">
- Ja
- </string>
- <string name="GroupVoteNo">
- Nein
- </string>
- <string name="GroupVoteNoActiveProposals">
- Zurzeit sind keine Umfragen aktiv
- </string>
- <string name="GroupVoteNoArchivedProposals">
- Zurzeit sind keine Umfragen aktiv
- </string>
- <string name="GroupVoteRetrievingArchivedProposals">
- Archivierte Umfragen werden geladen
- </string>
- <string name="GroupVoteRetrievingActiveProposals">
- Aktive Umfragen werden geladen
- </string>
- <string name="MultiPreviewTitle">
- Vorschau
- </string>
- <string name="MultiPropertiesTitle">
- Eigenschaften
- </string>
- <string name="InvOfferAnObjectNamed">
- Ein Objekt namens
- </string>
- <string name="InvOfferOwnedByGroup">
- im Besitz der Gruppe
- </string>
- <string name="InvOfferOwnedByUnknownGroup">
- im Besitz einer unbekannten Gruppe
- </string>
- <string name="InvOfferOwnedBy">
- im Besitz von
- </string>
- <string name="InvOfferOwnedByUnknownUser">
- im Besitz eines unbekannten Einwohners
- </string>
- <string name="InvOfferGaveYou">
- hat Ihnen folgendes übergeben
- </string>
- <string name="InvOfferYouDecline">
- Sie lehnen folgendes ab:
- </string>
- <string name="InvOfferFrom">
- von
- </string>
- <string name="GroupMoneyTotal">
- Gesamtbetrag
- </string>
- <string name="GroupMoneyBought">
- gekauft
- </string>
- <string name="GroupMoneyPaidYou">
- bezahlte Ihnen
- </string>
- <string name="GroupMoneyPaidInto">
- bezahlte an
- </string>
- <string name="GroupMoneyBoughtPassTo">
- kaufte Pass für
- </string>
- <string name="GroupMoneyPaidFeeForEvent">
- bezahlte Gebühr für Event
- </string>
- <string name="GroupMoneyPaidPrizeForEvent">
- bezahlte Preis für Event
- </string>
- <string name="GroupMoneyBalance">
- Kontostand
- </string>
- <string name="GroupMoneyCredits">
- Danksagung
- </string>
- <string name="GroupMoneyDebits">
- Soll
- </string>
- <string name="ViewerObjectContents">
- Inhalte
- </string>
- <string name="AcquiredItems">
- Erworbene Artikel
- </string>
- <string name="Cancel">
- Abbrechen
- </string>
- <string name="UploadingCosts">
- Hochladen von %s kostet
- </string>
- <string name="UnknownFileExtension">
- Unbekanntes Dateiformat .%s
-Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
- </string>
- <string name="AddLandmarkNavBarMenu">
- Landmarke hinzufügen...
- </string>
- <string name="EditLandmarkNavBarMenu">
- Landmarke bearbeiten...
- </string>
- <string name="accel-mac-control">
- ⌃
- </string>
- <string name="accel-mac-command">
- ⌘
- </string>
- <string name="accel-mac-option">
- ⌥
- </string>
- <string name="accel-mac-shift">
- ⇧
- </string>
- <string name="accel-win-control">
- Strg+
- </string>
- <string name="accel-win-alt">
- Alt+
- </string>
- <string name="accel-win-shift">
- Umschalt+
- </string>
- <string name="FileSaved">
- Datei wurde gespeichert
- </string>
- <string name="Receiving">
- Daten werden empfangen
- </string>
- <string name="AM">
- Uhr
- </string>
- <string name="PM">
- Uhr
- </string>
- <string name="PST">
- PST
- </string>
- <string name="PDT">
- PDT
- </string>
- <string name="Forward">
- Vorwärts
- </string>
- <string name="Left">
- Links
- </string>
- <string name="Right">
- Rechts
- </string>
- <string name="Back">
- Zurück
- </string>
- <string name="North">
- Norden
- </string>
- <string name="South">
- Süden
- </string>
- <string name="West">
- Westen
- </string>
- <string name="East">
- Osten
- </string>
- <string name="Up">
- Nach oben
- </string>
- <string name="Down">
- Nach unten
- </string>
- <string name="Any Category">
- Alle Kategorien
- </string>
- <string name="Shopping">
- Shopping
- </string>
- <string name="Land Rental">
- Land mieten
- </string>
- <string name="Property Rental">
- Immobilie mieten
- </string>
- <string name="Special Attraction">
- Attraktionen
- </string>
- <string name="New Products">
- Neue Produkte
- </string>
- <string name="Employment">
- Stellenangebote
- </string>
- <string name="Wanted">
- Gesucht
- </string>
- <string name="Service">
- Dienstleistungen
- </string>
- <string name="Personal">
- Verschiedenes
- </string>
- <string name="None">
- Keiner
- </string>
- <string name="Linden Location">
- Lindenort
- </string>
- <string name="Adult">
- Adult
- </string>
- <string name="Arts&amp;Culture">
- Kunst &amp; Kultur
- </string>
- <string name="Business">
- Business
- </string>
- <string name="Educational">
- Bildung
- </string>
- <string name="Gaming">
- Spielen
- </string>
- <string name="Hangout">
- Treffpunkt
- </string>
- <string name="Newcomer Friendly">
- Anfängergerecht
- </string>
- <string name="Parks&amp;Nature">
- Parks und Natur
- </string>
- <string name="Residential">
- Wohngebiet
- </string>
- <string name="Stage">
- Phase
- </string>
- <string name="Other">
- Sonstige
- </string>
- <string name="Any">
- Alle
- </string>
- <string name="You">
- Sie
- </string>
- <string name=":">
- :
- </string>
- <string name=",">
- ,
- </string>
- <string name="...">
- ...
- </string>
- <string name="***">
- ***
- </string>
- <string name="(">
- (
- </string>
- <string name=")">
- )
- </string>
- <string name=".">
- .
- </string>
- <string name="&apos;">
- &apos;
- </string>
- <string name="---">
- ---
- </string>
- <string name="MBCmdLineError">
- Beim Parsen der Befehlszeile wurde ein Fehler festgestellt.
-Weitere Informationen: http://wiki.secondlife.com/wiki/Client_parameters (EN)
-Fehler:
- </string>
- <string name="MBCmdLineUsg">
- [APP_NAME] Verwendung in Befehlszeile:
- </string>
- <string name="MBUnableToAccessFile">
- [APP_NAME] kann auf die erforderliche Datei nicht zugreifen.
-
-Grund hierfür ist, dass Sie entweder mehrere Instanzen gleichzeitig ausführen oder dass Ihr System denkt, eine Datei sei geöffnet.
-Falls diese Nachricht erneut angezeigt wird, starten Sie bitte Ihren Computer neu und probieren Sie es noch einmal.
-Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem System de-installieren und erneut installieren.
- </string>
- <string name="MBFatalError">
- Unbehebbarer Fehler
- </string>
- <string name="MBRequiresAltiVec">
- [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später).
- </string>
- <string name="MBAlreadyRunning">
- [APP_NAME] läuft bereits.
-Bitte sehen Sie in Ihrer Menüleiste nach, dort sollte ein Symbol für das Programm angezeigt werden.
-Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte neu.
- </string>
- <string name="MBFrozenCrashed">
- [APP_NAME] scheint eingefroren zu sein oder ist abgestürzt.
-Möchten Sie einen Absturz-Bericht einschicken?
- </string>
- <string name="MBAlert">
- Alarm
- </string>
- <string name="MBNoDirectX">
- [APP_NAME] kann DirectX 9.0b oder höher nicht feststellen.
-[APP_NAME] verwendet DirectX, um nach Hardware und/oder veralteten Treibern zu suchen, die zu Problemen mit der Stabilität, Leistung und Abstürzen führen können. Sie können [APP_NAME] auch so ausführen, wir empfehlen jedoch, dass DirectX 9.0b vorhanden ist und ausgeführt wird.
-
-Möchten Sie fortfahren?
- </string>
- <string name="MBWarning">
- Hinweis
- </string>
- <string name="MBNoAutoUpdate">
- Für Linux ist zur Zeit noch kein automatisches Aktualisieren möglich.
-Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.
- </string>
- <string name="MBRegClassFailed">
- RegisterClass fehlgeschlagen
- </string>
- <string name="MBError">
- Fehler
- </string>
- <string name="MBFullScreenErr">
- Vollbildschirm mit [WIDTH] x [HEIGHT] kann nicht ausgeführt werden.
-Ausführung erfolgt in Fenster.
- </string>
- <string name="MBDestroyWinFailed">
- Fehler beim Herunterfahren während Fenster geschlossen wurde (DestroyWindow() fehlgeschlagen)
- </string>
- <string name="MBShutdownErr">
- Fehler beim Herunterfahren
- </string>
- <string name="MBDevContextErr">
- Kann keinen Kontext für GL-Gerät erstellen
- </string>
- <string name="MBPixelFmtErr">
- Passendes Pixelformat wurde nicht gefunden
- </string>
- <string name="MBPixelFmtDescErr">
- Beschreibung für Pixelformat nicht verfügbar
- </string>
- <string name="MBTrueColorWindow">
- Um [APP_NAME] in einem Fenster auszuführen, ist True Color (32-bit) erforderlich.
-Klicken Sie auf Systemsteuerung &gt; Anzeige &gt; Einstellungen und stellen Sie den Bildschirm auf 32-bit Farbe ein.
-Wenn Sie die Anwendung im Modus Vollbildschirm ausführen möchten, dann wird [APP_NAME] den Bildschirm automatisch während der Ausführung anpassen.
- </string>
- <string name="MBAlpha">
- [APP_NAME] kann nicht ausgeführt werden, da kein 8-Bit-Alpha-Kanal verfügbar ist. Dies geschieht normalerweise bei Problemen mit dem Treiber der Video-Karte.
-Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für Ihre Videokarte installiert haben.
-Vergewissern Sie sich außerdem, dass Ihr Bildschirm auf True Color (32-Bit) eingestellt ist (Systemsteuerung &gt; Anzeige &gt; Einstellungen).
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
- </string>
- <string name="MBPixelFmtSetErr">
- Pixel-Format kann nicht eingestellt werden.
- </string>
- <string name="MBGLContextErr">
- Kann keinen Kontext für GL-Gerät erstellen
- </string>
- <string name="MBGLContextActErr">
- Kann keinen Kontext für GL-Gerät aktivieren
- </string>
- <string name="MBVideoDrvErr">
- [APP_NAME] kann nicht ausgeführt werden, da die Treiber Ihrer Videokarte entweder nicht richtig installiert oder veraltet sind, oder die entsprechende Hardware nicht unterstützt wird. Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für die Videokarte installiert haben. Falls Sie die aktuellsten Treiber bereits installiert haben, installieren Sie diese bitte erneut.
-
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
- </string>
- <string name="5 O&apos;Clock Shadow">
- Bartschatten
- </string>
- <string name="All White">
- Ganz weiß
- </string>
- <string name="Anime Eyes">
- Anime-Augen
- </string>
- <string name="Arced">
- Gewölbt
- </string>
- <string name="Arm Length">
- Armlänge
- </string>
- <string name="Attached">
- Angewachsen
- </string>
- <string name="Attached Earlobes">
- Angewachsene Ohrläppchen
- </string>
- <string name="Back Bangs">
- Nackenhaar
- </string>
- <string name="Back Bangs Down">
- Lang
- </string>
- <string name="Back Bangs Up">
- Kurz
- </string>
- <string name="Back Fringe">
- Nackenfransen
- </string>
- <string name="Back Hair">
- Hinterkopfhaar
- </string>
- <string name="Back Hair Down">
- lang
- </string>
- <string name="Back Hair Up">
- kurz
- </string>
- <string name="Baggy">
- Tränensäcke
- </string>
- <string name="Bangs">
- Pony
- </string>
- <string name="Bangs Down">
- Pony lang
- </string>
- <string name="Bangs Up">
- Pony kurz
- </string>
- <string name="Beady Eyes">
- Knopfaugen
- </string>
- <string name="Belly Size">
- Bauchgröße
- </string>
- <string name="Big">
- Groß
- </string>
- <string name="Big Butt">
- Großer Hintern
- </string>
- <string name="Big Eyeball">
- Großer Augapfel
- </string>
- <string name="Big Hair Back">
- Volumen: Hinten
- </string>
- <string name="Big Hair Front">
- Volumen: Vorne
- </string>
- <string name="Big Hair Top">
- Volumen: Oben
- </string>
- <string name="Big Head">
- Großer Kopf
- </string>
- <string name="Big Pectorals">
- Große Brustmuskeln
- </string>
- <string name="Big Spikes">
- Große Stacheln
- </string>
- <string name="Black">
- Schwarz
- </string>
- <string name="Blonde">
- Blond
- </string>
- <string name="Blonde Hair">
- Blondes Haar
- </string>
- <string name="Blush">
- Rouge
- </string>
- <string name="Blush Color">
- Rougefarbe
- </string>
- <string name="Blush Opacity">
- Rouge Deckkraft
- </string>
- <string name="Body Definition">
- Körperkonturen
- </string>
- <string name="Body Fat">
- Körperfett
- </string>
- <string name="Body Freckles">
- Sommersprossen
- </string>
- <string name="Body Thick">
- Körper - breit
- </string>
- <string name="Body Thickness">
- Körperbreite
- </string>
- <string name="Body Thin">
- Körper - schmal
- </string>
- <string name="Bow Legged">
- o-beinig
- </string>
- <string name="Breast Buoyancy">
- Brust, Straffheit
- </string>
- <string name="Breast Cleavage">
- Dekolleté
- </string>
- <string name="Breast Size">
- Brustgröße
- </string>
- <string name="Bridge Width">
- Rückenbreite
- </string>
- <string name="Broad">
- Breit
- </string>
- <string name="Brow Size">
- Brauengröße
- </string>
- <string name="Bug Eyes">
- Glubschaugen
- </string>
- <string name="Bugged Eyes">
- Hervortretend
- </string>
- <string name="Bulbous">
- Knollennase
- </string>
- <string name="Bulbous Nose">
- Knollennase
- </string>
- <string name="Bushy Eyebrows">
- Buschige Augenbrauen
- </string>
- <string name="Bushy Hair">
- Buschiges Haar
- </string>
- <string name="Butt Size">
- Hintern, Größe
- </string>
- <string name="bustle skirt">
- Tournürenrock
- </string>
- <string name="no bustle">
- Ohne
- </string>
- <string name="more bustle">
- Mit
- </string>
- <string name="Chaplin">
- Chaplin
- </string>
- <string name="Cheek Bones">
- Wangenknochen
- </string>
- <string name="Chest Size">
- Brustgröße
- </string>
- <string name="Chin Angle">
- Kinnwinkel
- </string>
- <string name="Chin Cleft">
- Kinnspalte
- </string>
- <string name="Chin Curtains">
- Schifferfräse
- </string>
- <string name="Chin Depth">
- Kinnlänge
- </string>
- <string name="Chin Heavy">
- Kinn ausgeprägt
- </string>
- <string name="Chin In">
- Kinn zurück
- </string>
- <string name="Chin Out">
- Kinn nach vorne
- </string>
- <string name="Chin-Neck">
- Kinn-Hals
- </string>
- <string name="Clear">
- Löschen
- </string>
- <string name="Cleft">
- Spalte
- </string>
- <string name="Close Set Eyes">
- Eng stehende Augen
- </string>
- <string name="Closed">
- Geschlossen
- </string>
- <string name="Closed Back">
- Hinten geschlossen
- </string>
- <string name="Closed Front">
- Vorne geschlossen
- </string>
- <string name="Closed Left">
- Links geschlossen
- </string>
- <string name="Closed Right">
- Rechts geschlossen
- </string>
- <string name="Coin Purse">
- Klein
- </string>
- <string name="Collar Back">
- Kragen hinten
- </string>
- <string name="Collar Front">
- Kragen vorne
- </string>
- <string name="Corner Down">
- Nach unten
- </string>
- <string name="Corner Normal">
- Normal
- </string>
- <string name="Corner Up">
- Nach oben
- </string>
- <string name="Creased">
- Schlupflid
- </string>
- <string name="Crooked Nose">
- Krumme Nase
- </string>
- <string name="Cropped Hair">
- Kurze Haare
- </string>
- <string name="Cuff Flare">
- Hosenaufschlag
- </string>
- <string name="Dark">
- Dunkel
- </string>
- <string name="Dark Green">
- Dunkelgrün
- </string>
- <string name="Darker">
- Dunkler
- </string>
- <string name="Deep">
- Tief
- </string>
- <string name="Default Heels">
- Standardabsätze
- </string>
- <string name="Default Toe">
- Standardspitze
- </string>
- <string name="Dense">
- Dicht
- </string>
- <string name="Dense hair">
- Dichtes Haar
- </string>
- <string name="Double Chin">
- Doppelkinn
- </string>
- <string name="Downturned">
- Nach unten
- </string>
- <string name="Duffle Bag">
- Groß
- </string>
- <string name="Ear Angle">
- Ohrenwinkel
- </string>
- <string name="Ear Size">
- Ohrengröße
- </string>
- <string name="Ear Tips">
- Ohrenspitzen
- </string>
- <string name="Egg Head">
- Eierkopf
- </string>
- <string name="Eye Bags">
- Augenränder
- </string>
- <string name="Eye Color">
- Augenfarbe
- </string>
- <string name="Eye Depth">
- Augentiefe
- </string>
- <string name="Eye Lightness">
- Helligkeit
- </string>
- <string name="Eye Opening">
- Öffnung
- </string>
- <string name="Eye Pop">
- Symmetrie
- </string>
- <string name="Eye Size">
- Augengröße
- </string>
- <string name="Eye Spacing">
- Augenstand
- </string>
- <string name="Eyeball Size">
- Größe des Augapfels
- </string>
- <string name="Eyebrow Arc">
- Brauenbogen
- </string>
- <string name="Eyebrow Density">
- Brauendichte
- </string>
- <string name="Eyebrow Height">
- Brauenhöhe
- </string>
- <string name="Eyebrow Points">
- Brauenenden
- </string>
- <string name="Eyebrow Size">
- Brauengröße
- </string>
- <string name="Eyelash Length">
- Wimpernlänge
- </string>
- <string name="Eyeliner">
- Eyeliner
- </string>
- <string name="Eyeliner Color">
- Farbe des Eyeliners
- </string>
- <string name="Eyes Back">
- Augen zurück
- </string>
- <string name="Eyes Bugged">
- Glubschaugen
- </string>
- <string name="Eyes Forward">
- Augen nach vorne
- </string>
- <string name="Eyes Long Head">
- Augen langer Kopf
- </string>
- <string name="Eyes Shear Left Up">
- Augen Verzerrung links hoch
- </string>
- <string name="Eyes Shear Right Up">
- Augen Verzerrung rechts hoch
- </string>
- <string name="Eyes Short Head">
- Augen kurzer Kopf
- </string>
- <string name="Eyes Spread">
- Augen auseinander
- </string>
- <string name="Eyes Sunken">
- eingesunkene Augen
- </string>
- <string name="Eyes Together">
- Augen zusammen
- </string>
- <string name="Face Shear">
- Gesichtsverzerrung
- </string>
- <string name="Facial Definition">
- Gesichtskonturen
- </string>
- <string name="Far Set Eyes">
- Weit auseinander
- </string>
- <string name="Fat">
- Dick
- </string>
- <string name="Fat Head">
- Dicker Kopf
- </string>
- <string name="Fat Lips">
- Volle Lippen
- </string>
- <string name="Fat Lower">
- Volle Unterlippe
- </string>
- <string name="Fat Lower Lip">
- Volle Unterlippe
- </string>
- <string name="Fat Torso">
- Dicker Körper
- </string>
- <string name="Fat Upper">
- Volle Oberlippe
- </string>
- <string name="Fat Upper Lip">
- Volle Oberlippe
- </string>
- <string name="Female">
- weiblich
- </string>
- <string name="Fingerless">
- Ohne Finger
- </string>
- <string name="Fingers">
- Finger
- </string>
- <string name="Flared Cuffs">
- Ausgestellt
- </string>
- <string name="Flat">
- Flach
- </string>
- <string name="Flat Butt">
- Flacher Hintern
- </string>
- <string name="Flat Head">
- Flacher Kopf
- </string>
- <string name="Flat Toe">
- Flache Spitze
- </string>
- <string name="Foot Size">
- Fußgröße
- </string>
- <string name="Forehead Angle">
- Stirnwinkel
- </string>
- <string name="Forehead Heavy">
- Stirn ausgeprägt
- </string>
- <string name="Freckles">
- Sommersprossen
- </string>
- <string name="Front Bangs Down">
- Langer Pony
- </string>
- <string name="Front Bangs Up">
- Kurzer Pony
- </string>
- <string name="Front Fringe">
- Fransen, vorne
- </string>
- <string name="Front Hair">
- Vorderhaar
- </string>
- <string name="Front Hair Down">
- langes Vorderhaar
- </string>
- <string name="Front Hair Up">
- Kurzes Vorderhaar
- </string>
- <string name="Full Back">
- Hinten volles Haar
- </string>
- <string name="Full Eyeliner">
- Starker Eyeliner
- </string>
- <string name="Full Front">
- Vorne volles Haar
- </string>
- <string name="Full Hair Sides">
- Seitlich volles Haar
- </string>
- <string name="Full Sides">
- Volle Seiten
- </string>
- <string name="Glossy">
- Glänzend
- </string>
- <string name="Glove Fingers">
- Handschuhfinger
- </string>
- <string name="Glove Length">
- Handschuhlänge
- </string>
- <string name="Hair">
- Haare
- </string>
- <string name="Hair Back">
- Haare: Hinten
- </string>
- <string name="Hair Front">
- Haare: Vorne
- </string>
- <string name="Hair Sides">
- Haare: Seiten
- </string>
- <string name="Hair Sweep">
- Haartolle
- </string>
- <string name="Hair Thickess">
- Haardicke
- </string>
- <string name="Hair Thickness">
- Haardicke
- </string>
- <string name="Hair Tilt">
- Haarneigung
- </string>
- <string name="Hair Tilted Left">
- Nach links
- </string>
- <string name="Hair Tilted Right">
- Nach rechts
- </string>
- <string name="Hair Volume">
- Haare: Volumen
- </string>
- <string name="Hand Size">
- Handgröße
- </string>
- <string name="Handlebars">
- Zwirbelbart
- </string>
- <string name="Head Length">
- Kopflänge
- </string>
- <string name="Head Shape">
- Kopfform
- </string>
- <string name="Head Size">
- Kopfgröße
- </string>
- <string name="Head Stretch">
- Kopfstreckung
- </string>
- <string name="Heel Height">
- Absatzhöhe
- </string>
- <string name="Heel Shape">
- Absatzform
- </string>
- <string name="Height">
- Höhe
- </string>
- <string name="High">
- Hoch
- </string>
- <string name="High Heels">
- Hohe Absätze
- </string>
- <string name="High Jaw">
- Hoch
- </string>
- <string name="High Platforms">
- Hohe Plattformsohlen
- </string>
- <string name="High and Tight">
- Hoch und eng
- </string>
- <string name="Higher">
- Höhere
- </string>
- <string name="Hip Length">
- Länge der Hüfte
- </string>
- <string name="Hip Width">
- Breite der Hüfte
- </string>
- <string name="In">
- In
- </string>
- <string name="In Shdw Color">
- Farbe Innenseite
- </string>
- <string name="In Shdw Opacity">
- Deckkraft: innerer Lidschatten
- </string>
- <string name="Inner Eye Corner">
- Ecke: Nasenseite
- </string>
- <string name="Inner Eye Shadow">
- Innerer Lidschatten
- </string>
- <string name="Inner Shadow">
- Innerer Lidschatten
- </string>
- <string name="Jacket Length">
- Jackenlänge
- </string>
- <string name="Jacket Wrinkles">
- Jackenfalten
- </string>
- <string name="Jaw Angle">
- Kinnansatz
- </string>
- <string name="Jaw Jut">
- Kinnposition
- </string>
- <string name="Jaw Shape">
- Kinnform
- </string>
- <string name="Join">
- Zusammen
- </string>
- <string name="Jowls">
- Hängebacken
- </string>
- <string name="Knee Angle">
- Kniewinkel
- </string>
- <string name="Knock Kneed">
- X-beinig
- </string>
- <string name="Large">
- Groß
- </string>
- <string name="Large Hands">
- Große Hände
- </string>
- <string name="Left Part">
- Linksscheitel
- </string>
- <string name="Leg Length">
- Beinlänge
- </string>
- <string name="Leg Muscles">
- Beinmuskeln
- </string>
- <string name="Less">
- Weniger
- </string>
- <string name="Less Body Fat">
- Weniger Speck
- </string>
- <string name="Less Curtains">
- Weniger
- </string>
- <string name="Less Freckles">
- Weniger
- </string>
- <string name="Less Full">
- Weniger
- </string>
- <string name="Less Gravity">
- Weniger
- </string>
- <string name="Less Love">
- Weniger
- </string>
- <string name="Less Muscles">
- Weniger
- </string>
- <string name="Less Muscular">
- Weniger
- </string>
- <string name="Less Rosy">
- Weniger
- </string>
- <string name="Less Round">
- Weniger
- </string>
- <string name="Less Saddle">
- Weniger
- </string>
- <string name="Less Square">
- Weniger
- </string>
- <string name="Less Volume">
- Weniger
- </string>
- <string name="Less soul">
- Weniger
- </string>
- <string name="Lighter">
- Heller
- </string>
- <string name="Lip Cleft">
- Amorbogen
- </string>
- <string name="Lip Cleft Depth">
- Tiefe: Amorbogen
- </string>
- <string name="Lip Fullness">
- Fülle
- </string>
- <string name="Lip Pinkness">
- Pinkton
- </string>
- <string name="Lip Ratio">
- Lippenproportionen
- </string>
- <string name="Lip Thickness">
- Lippendicke
- </string>
- <string name="Lip Width">
- Mundbreite
- </string>
- <string name="Lipgloss">
- Lipgloss
- </string>
- <string name="Lipstick">
- Lippenstift
- </string>
- <string name="Lipstick Color">
- Farbe
- </string>
- <string name="Long">
- Lang
- </string>
- <string name="Long Head">
- Langer Kopf
- </string>
- <string name="Long Hips">
- Lange Hüften
- </string>
- <string name="Long Legs">
- Lange Beine
- </string>
- <string name="Long Neck">
- Langer Hals
- </string>
- <string name="Long Pigtails">
- Lange Zöpfe
- </string>
- <string name="Long Ponytail">
- Langer Pferdeschwanz
- </string>
- <string name="Long Torso">
- Langer Oberkörper
- </string>
- <string name="Long arms">
- Lange Arme
- </string>
- <string name="Longcuffs">
- Manschetten
- </string>
- <string name="Loose Pants">
- Weite Hosen
- </string>
- <string name="Loose Shirt">
- Weites Hemd
- </string>
- <string name="Loose Sleeves">
- Weite Ärmel
- </string>
- <string name="Love Handles">
- Fettpölsterchen
- </string>
- <string name="Low">
- Niedrig
- </string>
- <string name="Low Heels">
- Niedrig
- </string>
- <string name="Low Jaw">
- Niedrig
- </string>
- <string name="Low Platforms">
- Niedrig
- </string>
- <string name="Low and Loose">
- Weit
- </string>
- <string name="Lower">
- Absenken
- </string>
- <string name="Lower Bridge">
- Brücke, Unterer Teil
- </string>
- <string name="Lower Cheeks">
- Wangen, unterer Bereich
- </string>
- <string name="Male">
- Männlich
- </string>
- <string name="Middle Part">
- Mittelscheitel
- </string>
- <string name="More">
- Mehr
- </string>
- <string name="More Blush">
- Mehr
- </string>
- <string name="More Body Fat">
- Mehr Speck
- </string>
- <string name="More Curtains">
- Mehr
- </string>
- <string name="More Eyeshadow">
- Mehr
- </string>
- <string name="More Freckles">
- Mehr
- </string>
- <string name="More Full">
- Voller
- </string>
- <string name="More Gravity">
- Mehr
- </string>
- <string name="More Lipstick">
- Mehr
- </string>
- <string name="More Love">
- Mehr
- </string>
- <string name="More Lower Lip">
- Größer
- </string>
- <string name="More Muscles">
- Mehr
- </string>
- <string name="More Muscular">
- Mehr
- </string>
- <string name="More Rosy">
- Mehr
- </string>
- <string name="More Round">
- Runder
- </string>
- <string name="More Saddle">
- Mehr
- </string>
- <string name="More Sloped">
- Mehr
- </string>
- <string name="More Square">
- Mehr
- </string>
- <string name="More Upper Lip">
- Mehr
- </string>
- <string name="More Vertical">
- Mehr
- </string>
- <string name="More Volume">
- Mehr
- </string>
- <string name="More soul">
- Mehr
- </string>
- <string name="Moustache">
- Schnauzer
- </string>
- <string name="Mouth Corner">
- Mundwinkel
- </string>
- <string name="Mouth Position">
- Mundposition
- </string>
- <string name="Mowhawk">
- Irokese
- </string>
- <string name="Muscular">
- Muskulös
- </string>
- <string name="Mutton Chops">
- Koteletten
- </string>
- <string name="Nail Polish">
- Nagellack
- </string>
- <string name="Nail Polish Color">
- Farbe
- </string>
- <string name="Narrow">
- Schmal
- </string>
- <string name="Narrow Back">
- Wenig
- </string>
- <string name="Narrow Front">
- Wenig
- </string>
- <string name="Narrow Lips">
- Schmale Lippen
- </string>
- <string name="Natural">
- Natürlich
- </string>
- <string name="Neck Length">
- Halslänge
- </string>
- <string name="Neck Thickness">
- Halsdicke
- </string>
- <string name="No Blush">
- Kein Rouge
- </string>
- <string name="No Eyeliner">
- Kein Eyeliner
- </string>
- <string name="No Eyeshadow">
- Kein Lidschatten
- </string>
- <string name="No Heels">
- Keine Absätze
- </string>
- <string name="No Lipgloss">
- Kein Lipgloss
- </string>
- <string name="No Lipstick">
- Kein Lippenstift
- </string>
- <string name="No Part">
- Kein Scheitel
- </string>
- <string name="No Polish">
- Kein Nagellack
- </string>
- <string name="No Red">
- Nicht rot
- </string>
- <string name="No Spikes">
- Keine Stachel
- </string>
- <string name="No White">
- Kein Weiß
- </string>
- <string name="No Wrinkles">
- Keine Falten
- </string>
- <string name="Normal Lower">
- Normal unten
- </string>
- <string name="Normal Upper">
- Normal oben
- </string>
- <string name="Nose Left">
- Links
- </string>
- <string name="Nose Right">
- Rechts
- </string>
- <string name="Nose Size">
- Größe
- </string>
- <string name="Nose Thickness">
- Dicke
- </string>
- <string name="Nose Tip Angle">
- Nasenspitze
- </string>
- <string name="Nose Tip Shape">
- Nasenspitze
- </string>
- <string name="Nose Width">
- Nasenbreite
- </string>
- <string name="Nostril Division">
- Teilung
- </string>
- <string name="Nostril Width">
- Größe
- </string>
- <string name="Old">
- Alt
- </string>
- <string name="Opaque">
- Deckend
- </string>
- <string name="Open">
- Öffnen
- </string>
- <string name="Open Back">
- Hinten offen
- </string>
- <string name="Open Front">
- Vorne offen
- </string>
- <string name="Open Left">
- Links offen
- </string>
- <string name="Open Right">
- Rechts offen
- </string>
- <string name="Orange">
- Orange
- </string>
- <string name="Out">
- Aus
- </string>
- <string name="Out Shdw Color">
- Farbe: Oberer Lidschatten
- </string>
- <string name="Out Shdw Opacity">
- Deckkraft: Oberer Lidschatten
- </string>
- <string name="Outer Eye Corner">
- Äußerer Augenwinkel
- </string>
- <string name="Outer Eye Shadow">
- Lidschatten: Oben
- </string>
- <string name="Outer Shadow">
- Lidschatten: Oben
- </string>
- <string name="Overbite">
- Überbiss
- </string>
- <string name="Package">
- Ausbeulung
- </string>
- <string name="Painted Nails">
- Lackierte Nägel
- </string>
- <string name="Pale">
- Blass
- </string>
- <string name="Pants Crotch">
- Schritt
- </string>
- <string name="Pants Fit">
- Passform
- </string>
- <string name="Pants Length">
- Hosenlänge
- </string>
- <string name="Pants Waist">
- Hüfte
- </string>
- <string name="Pants Wrinkles">
- Falten
- </string>
- <string name="Part">
- Scheitel
- </string>
- <string name="Part Bangs">
- Pony scheiteln
- </string>
- <string name="Pectorals">
- Brustmuskel
- </string>
- <string name="Pigment">
- Pigmentierung
- </string>
- <string name="Pigtails">
- Zöpfe
- </string>
- <string name="Pink">
- Pink
- </string>
- <string name="Pinker">
- Mehr Pink
- </string>
- <string name="Platform Height">
- Höhe
- </string>
- <string name="Platform Width">
- Breite
- </string>
- <string name="Pointy">
- Spitz
- </string>
- <string name="Pointy Heels">
- Pfennigabsätze
- </string>
- <string name="Pointy Toe">
- Spitz
- </string>
- <string name="Ponytail">
- Pferdeschwanz
- </string>
- <string name="Poofy Skirt">
- Weit ausgestellt
- </string>
- <string name="Pop Left Eye">
- Linkes Auge größer
- </string>
- <string name="Pop Right Eye">
- Rechtes Auge größer
- </string>
- <string name="Puffy">
- Geschwollen
- </string>
- <string name="Puffy Eyelids">
- Geschwollene Lider
- </string>
- <string name="Rainbow Color">
- Regenbogenfarben
- </string>
- <string name="Red Hair">
- Rote Haare
- </string>
- <string name="Red Skin">
- Rote Haut
- </string>
- <string name="Regular">
- Normal
- </string>
- <string name="Regular Muscles">
- Normal muskulös
- </string>
- <string name="Right Part">
- Scheitel rechts
- </string>
- <string name="Rosy Complexion">
- Rosiger Teint
- </string>
- <string name="Round">
- Rund
- </string>
- <string name="Round Forehead">
- Runde Stirn
- </string>
- <string name="Ruddiness">
- Röte
- </string>
- <string name="Ruddy">
- Rötlich
- </string>
- <string name="Rumpled Hair">
- Zerzauste Haare
- </string>
- <string name="Saddle Bags">
- Hüftspeck
- </string>
- <string name="Saddlebags">
- Hüftspeck
- </string>
- <string name="Scrawny">
- Dürr
- </string>
- <string name="Scrawny Leg">
- Dürres Bein
- </string>
- <string name="Separate">
- Auseinander
- </string>
- <string name="Shading">
- Schattierung
- </string>
- <string name="Shadow hair">
- Schattenhaar
- </string>
- <string name="Shallow">
- Flach
- </string>
- <string name="Shear Back">
- Hinterkopf rasiert
- </string>
- <string name="Shear Face">
- Gesicht verzerren
- </string>
- <string name="Shear Front">
- Vorne rasiert
- </string>
- <string name="Shear Left">
- Links
- </string>
- <string name="Shear Left Up">
- Links
- </string>
- <string name="Shear Right">
- Rechts
- </string>
- <string name="Shear Right Up">
- Rechts
- </string>
- <string name="Sheared Back">
- Hinterkopf rasiert
- </string>
- <string name="Sheared Front">
- Vorne rasiert
- </string>
- <string name="Shift Left">
- Nach links
- </string>
- <string name="Shift Mouth">
- Mund verschieben
- </string>
- <string name="Shift Right">
- Nach rechts
- </string>
- <string name="Shirt Bottom">
- Hemdlänge
- </string>
- <string name="Shirt Fit">
- Passform
- </string>
- <string name="Shirt Wrinkles">
- Falten
- </string>
- <string name="Shoe Height">
- Höhe
- </string>
- <string name="Short">
- Kurz
- </string>
- <string name="Short Arms">
- Kurze Arme
- </string>
- <string name="Short Legs">
- Kurze Beine
- </string>
- <string name="Short Neck">
- Kurzer Hals
- </string>
- <string name="Short Pigtails">
- Kurze Zöpfe
- </string>
- <string name="Short Ponytail">
- Kurzer Pferdeschwanz
- </string>
- <string name="Short Sideburns">
- Kurze Koteletten
- </string>
- <string name="Short Torso">
- Kurzer Oberkörper
- </string>
- <string name="Short hips">
- Kurze Hüften
- </string>
- <string name="Shoulders">
- Schultern
- </string>
- <string name="Side Bangs">
- Seitlicher Pony
- </string>
- <string name="Side Bangs Down">
- Lang
- </string>
- <string name="Side Bangs Up">
- Kurz
- </string>
- <string name="Side Fringe">
- Seitliche Fransen
- </string>
- <string name="Sideburns">
- Koteletten
- </string>
- <string name="Sides Hair">
- Seitliches Haar
- </string>
- <string name="Sides Hair Down">
- Lang
- </string>
- <string name="Sides Hair Up">
- Kurz
- </string>
- <string name="Skinny">
- Dünn
- </string>
- <string name="Skinny Neck">
- Dünner Hals
- </string>
- <string name="Skirt Fit">
- Passform
- </string>
- <string name="Skirt Length">
- Rocklänge
- </string>
- <string name="Slanted Forehead">
- Fliehende Stirn
- </string>
- <string name="Sleeve Length">
- Ärmellänge
- </string>
- <string name="Sleeve Looseness">
- Passform Ärmel
- </string>
- <string name="Slit Back">
- Schlitz: Hinten
- </string>
- <string name="Slit Front">
- Schlitz: Vorne
- </string>
- <string name="Slit Left">
- Schlitz: Links
- </string>
- <string name="Slit Right">
- Schlitz: Rechts
- </string>
- <string name="Small">
- Klein
- </string>
- <string name="Small Hands">
- Kleine Hände
- </string>
- <string name="Small Head">
- Kleiner Kopf
- </string>
- <string name="Smooth">
- Glätten
- </string>
- <string name="Smooth Hair">
- Glattes Haar
- </string>
- <string name="Socks Length">
- Strumpflänge
- </string>
- <string name="Some">
- Etwas
- </string>
- <string name="Soulpatch">
- Unterlippenbart
- </string>
- <string name="Sparse">
- Wenig
- </string>
- <string name="Spiked Hair">
- Stachelhaare
- </string>
- <string name="Square">
- Rechteck
- </string>
- <string name="Square Toe">
- Eckig
- </string>
- <string name="Squash Head">
- Gestaucht
- </string>
- <string name="Squash/Stretch Head">
- Gestretcht/Gestaucht
- </string>
- <string name="Stretch Head">
- Gestreckt
- </string>
- <string name="Sunken">
- Eingefallen
- </string>
- <string name="Sunken Chest">
- Trichterbrust
- </string>
- <string name="Sunken Eyes">
- Eingesunkene Augen
- </string>
- <string name="Sweep Back">
- Nach hinten
- </string>
- <string name="Sweep Forward">
- Nach vorne
- </string>
- <string name="Swept Back">
- Nach hinten
- </string>
- <string name="Swept Back Hair">
- Haar nach hinten
- </string>
- <string name="Swept Forward">
- Haare nach vorne
- </string>
- <string name="Swept Forward Hair">
- Haare nach vorne
- </string>
- <string name="Tall">
- Groß
- </string>
- <string name="Taper Back">
- Ansatzbreite hinten
- </string>
- <string name="Taper Front">
- Ansatzbreite vorne
- </string>
- <string name="Thick Heels">
- Dicke Absätze
- </string>
- <string name="Thick Neck">
- Dicker Hals
- </string>
- <string name="Thick Toe">
- Dick
- </string>
- <string name="Thickness">
- Dicke
- </string>
- <string name="Thin">
- Dünn
- </string>
- <string name="Thin Eyebrows">
- Dünne Augenbrauen
- </string>
- <string name="Thin Lips">
- Dünne Lippen
- </string>
- <string name="Thin Nose">
- Dünne Nase
- </string>
- <string name="Tight Chin">
- Straffes Kinn
- </string>
- <string name="Tight Cuffs">
- Eng
- </string>
- <string name="Tight Pants">
- Enge Hosen
- </string>
- <string name="Tight Shirt">
- Enges Hemd
- </string>
- <string name="Tight Skirt">
- Enger Rock
- </string>
- <string name="Tight Sleeves">
- Enge Ärmel
- </string>
- <string name="Tilt Left">
- Nach links
- </string>
- <string name="Tilt Right">
- Nach rechts
- </string>
- <string name="Toe Shape">
- Spitze
- </string>
- <string name="Toe Thickness">
- Dicke
- </string>
- <string name="Torso Length">
- Länge des Oberkörpers
- </string>
- <string name="Torso Muscles">
- Muskeln
- </string>
- <string name="Torso Scrawny">
- Dürr
- </string>
- <string name="Unattached">
- Frei
- </string>
- <string name="Uncreased">
- Straffes Lid
- </string>
- <string name="Underbite">
- Unterbiss
- </string>
- <string name="Unnatural">
- Unnatürlich
- </string>
- <string name="Upper Bridge">
- Brücke, oberer Teil
- </string>
- <string name="Upper Cheeks">
- Obere Wangen
- </string>
- <string name="Upper Chin Cleft">
- Obere Kinnspalte
- </string>
- <string name="Upper Eyelid Fold">
- Obere Lidfalte
- </string>
- <string name="Upturned">
- Stupsnase
- </string>
- <string name="Very Red">
- Sehr rot
- </string>
- <string name="Waist Height">
- Bund
- </string>
- <string name="Well-Fed">
- Gut genährt
- </string>
- <string name="White Hair">
- Weiße Haare
- </string>
- <string name="Wide">
- Breit
- </string>
- <string name="Wide Back">
- Breit
- </string>
- <string name="Wide Front">
- Breit
- </string>
- <string name="Wide Lips">
- Breit
- </string>
- <string name="Wild">
- Wild
- </string>
- <string name="Wrinkles">
- Falten
- </string>
- <string name="LocationCtrlAddLandmarkTooltip">
- Zu meinen Landmarken hinzufügen
- </string>
- <string name="LocationCtrlEditLandmarkTooltip">
- Meine Landmarken bearbeiten
- </string>
- <string name="UpdaterWindowTitle">
- [APP_NAME] Aktualisierung
- </string>
- <string name="UpdaterNowUpdating">
- [APP_NAME] wird aktualisiert...
- </string>
- <string name="UpdaterNowInstalling">
- [APP_NAME] wird installiert...
- </string>
- <string name="UpdaterUpdatingDescriptive">
- Ihr [APP_NAME]-Viewer wird aktualisiert. Dies kann einen Moment dauern. Wir bitten um Ihr Verständnis.
- </string>
- <string name="UpdaterProgressBarTextWithEllipses">
- Aktualisierung wird heruntergeladen...
- </string>
- <string name="UpdaterProgressBarText">
- Aktualisierung wird heruntergeladen
- </string>
- <string name="UpdaterFailDownloadTitle">
- Herunterladen ist fehlgeschlagen
- </string>
- <string name="UpdaterFailUpdateDescriptive">
- Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.
- </string>
- <string name="UpdaterFailInstallTitle">
- Aktualisierung konnte nicht installiert werden
- </string>
- <string name="UpdaterFailStartTitle">
- Viewer konnte nicht gestartet werden
- </string>
- <string name="only_user_message">
- Sie sind der einzige Benutzer in dieser Sitzung.
- </string>
- <string name="offline_message">
- [FIRST] [LAST] ist offline.
- </string>
- <string name="invite_message">
- Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.
- </string>
- <string name="generic_request_error">
- Fehler bei Anfrage, bitte versuchen Sie es später.
- </string>
- <string name="insufficient_perms_error">
- Sie sind dazu nicht berechtigt.
- </string>
- <string name="session_does_not_exist_error">
- Die Sitzung ist abgelaufen
- </string>
- <string name="no_ability_error">
- Sie besitzen diese Fähigkeit nicht.
- </string>
- <string name="no_ability">
- Sie besitzen diese Fähigkeit nicht.
- </string>
- <string name="not_a_mod_error">
- Sie sind kein Sitzungsmoderator.
- </string>
- <string name="muted_error">
- Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
- </string>
- <string name="add_session_event">
- Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
- </string>
- <string name="message_session_event">
- Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
- </string>
- <string name="removed_from_group">
- Sie wurden von der Gruppe ausgeschlossen.
- </string>
- <string name="close_on_no_ability">
- Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen.
- </string>
-</strings>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+ It is only for those strings which do not belong in a floater.
+ For example, the strings used in avatar chat bubbles, and strings
+ that are returned from one component and may appear in many places-->
+<strings>
+ <string name="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Second Life
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Second Life-Grid:
+ </string>
+ <string name="SUPPORT_SITE">
+ Second Life Support-Portal
+ </string>
+ <string name="StartupDetectingHardware">
+ Hardware wird erfasst...
+ </string>
+ <string name="StartupLoading">
+ Wird geladen
+ </string>
+ <string name="Fullbright">
+ Fullbright (Legacy)
+ </string>
+ <string name="LoginInProgress">
+ Anmeldevorgang gestartet. [APP_NAME] reagiert möglicherweise nicht. Bitte warten.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Anmeldung erfolgt...
+ </string>
+ <string name="LoginAuthenticating">
+ Authentifizierung
+ </string>
+ <string name="LoginMaintenance">
+ Account wird aktualisiert...
+ </string>
+ <string name="LoginAttempt">
+ Ein früherer Anmeldeversuch ist fehlgeschlagen. Anmeldung, Versuch [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Welt wird geladen...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Integrierter Webbrowser wird initialisiert...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Multimedia wird initialisiert...
+ </string>
+ <string name="LoginVerifyingCache">
+ Cache-Dateien werden überprüft (dauert 60-90 Sekunden)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Antwort wird verarbeitet...
+ </string>
+ <string name="LoginInitializingWorld">
+ Welt wird initialisiert...
+ </string>
+ <string name="LoginDecodingImages">
+ Bilder werden entpackt...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ QuickTime wird initialisiert...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ QuickTime nicht gefunden - Initialisierung nicht möglich.
+ </string>
+ <string name="LoginQuicktimeOK">
+ QuickTime wurde initialisiert.
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Region-Handshake...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Region-Verbindung...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Kleidung wird geladen...
+ </string>
+ <string name="AgentLostConnection">
+ In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung.
+ </string>
+ <string name="TooltipPerson">
+ Person
+ </string>
+ <string name="TooltipNoName">
+ (namenlos)
+ </string>
+ <string name="TooltipOwner">
+ Eigentümer:
+ </string>
+ <string name="TooltipPublic">
+ Öffentlich
+ </string>
+ <string name="TooltipIsGroup">
+ (Gruppe)
+ </string>
+ <string name="TooltipForSaleL$">
+ Zum Verkauf: [AMOUNT] L$
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Gruppenbau
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Bauen aus
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Gruppenbau
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Unsicher
+ </string>
+ <string name="TooltipFlagNoFly">
+ Fliegen aus
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Gruppenskripte
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Skripte aus
+ </string>
+ <string name="TooltipLand">
+ Land:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Sie können nur ein einzelnes Objekt hierher ziehen
+ </string>
+ <string name="TooltipHttpUrl">
+ Anklicken, um Webseite anzuzeigen
+ </string>
+ <string name="TooltipSLURL">
+ Anklicken, um Informationen zu diesem Standort anzuzeigen
+ </string>
+ <string name="TooltipAgentUrl">
+ Anklicken, um das Profil dieses Einwohners anzuzeigen
+ </string>
+ <string name="TooltipGroupUrl">
+ Anklicken, um Beschreibung der Gruppe anzuzeigen
+ </string>
+ <string name="TooltipEventUrl">
+ Anklicken, um Beschreibung der Veranstaltung anzuzeigen
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Anklicken, um diese Anzeige anzuzeigen
+ </string>
+ <string name="TooltipParcelUrl">
+ Anklicken, um Beschreibung der Parzelle anzuzeigen
+ </string>
+ <string name="TooltipTeleportUrl">
+ Anklicken, um zu diesem Standort zu teleportieren
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Anklicken, um Beschreibung des Objekts anzuzeigen
+ </string>
+ <string name="TooltipSLAPP">
+ Anklicken, um Befehl secondlife:// auszuführen
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Schließen (⌘-W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Schließen (Strg+W)
+ </string>
+ <string name="BUTTON_RESTORE">
+ Wiederherstellen
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimieren
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Abnehmen
+ </string>
+ <string name="BUTTON_DOCK">
+ Andocken
+ </string>
+ <string name="BUTTON_UNDOCK">
+ Abkoppeln
+ </string>
+ <string name="BUTTON_HELP">
+ Hilfe anzeigen
+ </string>
+ <string name="RetrievingData">
+ Laden...
+ </string>
+ <string name="ReleaseNotes">
+ Versionshinweise
+ </string>
+ <string name="LoadingData">
+ Wird geladen...
+ </string>
+ <string name="AvatarNameNobody">
+ (niemand)
+ </string>
+ <string name="AvatarNameWaiting">
+ (wartet)
+ </string>
+ <string name="AvatarNameHippos">
+ (hippos)
+ </string>
+ <string name="GroupNameNone">
+ (keiner)
+ </string>
+ <string name="AssetErrorNone">
+ Kein Fehler
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Asset-Anforderung: fehlgeschlagen
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Asset-Anforderung: Datei existiert nicht
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Asset-Anforderung: Asset in Datenbank nicht gefunden
+ </string>
+ <string name="AssetErrorEOF">
+ Ende der Datei
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Datei kann nicht geöffnet werden
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Datei nicht gefunden
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Zeitüberschreitung bei Dateiübertragung
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Verbindung verloren
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Viewer und Server sind sich nicht über Preis einig
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Status unbekannt
+ </string>
+ <string name="texture">
+ Textur
+ </string>
+ <string name="sound">
+ Sound
+ </string>
+ <string name="calling card">
+ Visitenkarte
+ </string>
+ <string name="landmark">
+ Landmarke
+ </string>
+ <string name="legacy script">
+ Skript (veraltet)
+ </string>
+ <string name="clothing">
+ Kleidung
+ </string>
+ <string name="object">
+ Objekt
+ </string>
+ <string name="note card">
+ Notizkarte
+ </string>
+ <string name="folder">
+ Ordner
+ </string>
+ <string name="root">
+ Hauptverzeichnis
+ </string>
+ <string name="lsl2 script">
+ LSL2 Skript
+ </string>
+ <string name="lsl bytecode">
+ LSL Bytecode
+ </string>
+ <string name="tga texture">
+ tga-Textur
+ </string>
+ <string name="body part">
+ Körperteil
+ </string>
+ <string name="snapshot">
+ Foto
+ </string>
+ <string name="lost and found">
+ Fundbüro
+ </string>
+ <string name="targa image">
+ targa-Bild
+ </string>
+ <string name="trash">
+ Papierkorb
+ </string>
+ <string name="jpeg image">
+ jpeg-Bild
+ </string>
+ <string name="animation">
+ Animation
+ </string>
+ <string name="gesture">
+ Geste
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ Favoriten
+ </string>
+ <string name="symbolic link">
+ Link
+ </string>
+ <string name="AvatarAway">
+ Abwesend
+ </string>
+ <string name="AvatarBusy">
+ Beschäftigt
+ </string>
+ <string name="AvatarMuted">
+ Stummgeschaltet
+ </string>
+ <string name="anim_express_afraid">
+ Ängstlich
+ </string>
+ <string name="anim_express_anger">
+ Verärgert
+ </string>
+ <string name="anim_away">
+ Abwesend
+ </string>
+ <string name="anim_backflip">
+ Rückwärtssalto
+ </string>
+ <string name="anim_express_laugh">
+ Lachkrampf
+ </string>
+ <string name="anim_express_toothsmile">
+ Grinsen
+ </string>
+ <string name="anim_blowkiss">
+ Kusshand
+ </string>
+ <string name="anim_express_bored">
+ Gelangweilt
+ </string>
+ <string name="anim_bow">
+ Verbeugen
+ </string>
+ <string name="anim_clap">
+ Klatschen
+ </string>
+ <string name="anim_courtbow">
+ Diener
+ </string>
+ <string name="anim_express_cry">
+ Weinen
+ </string>
+ <string name="anim_dance1">
+ Tanz 1
+ </string>
+ <string name="anim_dance2">
+ Tanz 2
+ </string>
+ <string name="anim_dance3">
+ Tanz 3
+ </string>
+ <string name="anim_dance4">
+ Tanz 4
+ </string>
+ <string name="anim_dance5">
+ Tanz 5
+ </string>
+ <string name="anim_dance6">
+ Tanz 6
+ </string>
+ <string name="anim_dance7">
+ Tanz 7
+ </string>
+ <string name="anim_dance8">
+ Tanz 8
+ </string>
+ <string name="anim_express_disdain">
+ Verachten
+ </string>
+ <string name="anim_drink">
+ Trinken
+ </string>
+ <string name="anim_express_embarrased">
+ Verlegen
+ </string>
+ <string name="anim_angry_fingerwag">
+ Drohen
+ </string>
+ <string name="anim_fist_pump">
+ Faust pumpen
+ </string>
+ <string name="anim_yoga_float">
+ Yogaflieger
+ </string>
+ <string name="anim_express_frown">
+ Stirnrunzeln
+ </string>
+ <string name="anim_impatient">
+ Ungeduldig
+ </string>
+ <string name="anim_jumpforjoy">
+ Freudensprung
+ </string>
+ <string name="anim_kissmybutt">
+ LMA
+ </string>
+ <string name="anim_express_kiss">
+ Küssen
+ </string>
+ <string name="anim_laugh_short">
+ Lachen
+ </string>
+ <string name="anim_musclebeach">
+ Posen
+ </string>
+ <string name="anim_no_unhappy">
+ Nein (Bedauernd)
+ </string>
+ <string name="anim_no_head">
+ Nein
+ </string>
+ <string name="anim_nyanya">
+ Ällabätsch
+ </string>
+ <string name="anim_punch_onetwo">
+ Eins-Zwei-Punch
+ </string>
+ <string name="anim_express_open_mouth">
+ Mund offen
+ </string>
+ <string name="anim_peace">
+ Friede
+ </string>
+ <string name="anim_point_you">
+ Auf anderen zeigen
+ </string>
+ <string name="anim_point_me">
+ Auf mich zeigen
+ </string>
+ <string name="anim_punch_l">
+ Linker Haken
+ </string>
+ <string name="anim_punch_r">
+ Rechter Haken
+ </string>
+ <string name="anim_rps_countdown">
+ SSP zählen
+ </string>
+ <string name="anim_rps_paper">
+ SSP Papier
+ </string>
+ <string name="anim_rps_rock">
+ SSP Stein
+ </string>
+ <string name="anim_rps_scissors">
+ SSP Schere
+ </string>
+ <string name="anim_express_repulsed">
+ Angewidert
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Rundkick
+ </string>
+ <string name="anim_express_sad">
+ Traurig
+ </string>
+ <string name="anim_salute">
+ Salutieren
+ </string>
+ <string name="anim_shout">
+ Rufen
+ </string>
+ <string name="anim_express_shrug">
+ Schulterzucken
+ </string>
+ <string name="anim_express_smile">
+ Lächeln
+ </string>
+ <string name="anim_smoke_idle">
+ Zigarette halten
+ </string>
+ <string name="anim_smoke_inhale">
+ Rauchen
+ </string>
+ <string name="anim_smoke_throw_down">
+ Zigarette wegwerfen
+ </string>
+ <string name="anim_express_surprise">
+ Überraschung
+ </string>
+ <string name="anim_sword_strike_r">
+ Schwerthieb
+ </string>
+ <string name="anim_angry_tantrum">
+ Wutanfall
+ </string>
+ <string name="anim_express_tongue_out">
+ Zunge rausstrecken
+ </string>
+ <string name="anim_hello">
+ Winken
+ </string>
+ <string name="anim_whisper">
+ Flüstern
+ </string>
+ <string name="anim_whistle">
+ Pfeifen
+ </string>
+ <string name="anim_express_wink">
+ Zwinkern
+ </string>
+ <string name="anim_wink_hollywood">
+ Zwinkern (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Sorgenvoll
+ </string>
+ <string name="anim_yes_happy">
+ Ja (Erfreut)
+ </string>
+ <string name="anim_yes_head">
+ Ja
+ </string>
+ <string name="texture_loading">
+ Wird geladen...
+ </string>
+ <string name="worldmap_offline">
+ Offline
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Unvollständige Datei
+ </string>
+ <string name="ST_NO_JOINT">
+ HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.
+ </string>
+ <string name="whisper">
+ flüstert:
+ </string>
+ <string name="shout">
+ ruft:
+ </string>
+ <string name="ringing">
+ Verbindung mit In-Welt-Voice-Chat...
+ </string>
+ <string name="connected">
+ Verbunden
+ </string>
+ <string name="unavailable">
+ Der aktuelle Standort unterstützt keine Voice-Kommunikation
+ </string>
+ <string name="hang_up">
+ Verbindung mit In-Welt-Voice-Chat getrennt
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung erteilt: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung verweigert: [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ Linden-Dollar (L$) von Ihnen nehmen
+ </string>
+ <string name="ActOnControlInputs">
+ Steuerung festlegen
+ </string>
+ <string name="RemapControlInputs">
+ Steuerung neu zuweisen
+ </string>
+ <string name="AnimateYourAvatar">
+ Avatar animieren
+ </string>
+ <string name="AttachToYourAvatar">
+ An Avatar anhängen
+ </string>
+ <string name="ReleaseOwnership">
+ Eigentum aufgeben und öffentlich machen
+ </string>
+ <string name="LinkAndDelink">
+ Mit Objekten verknüpfen und davon trennen
+ </string>
+ <string name="AddAndRemoveJoints">
+ Verbindungen zu anderen Objekten hinzufügen und entfernen
+ </string>
+ <string name="ChangePermissions">
+ Berechtigungen ändern
+ </string>
+ <string name="TrackYourCamera">
+ Kameraverfolgung
+ </string>
+ <string name="ControlYourCamera">
+ Kamerasteuerung
+ </string>
+ <string name="SIM_ACCESS_PG">
+ PG
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Mature
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adult
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Offline
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Unbekannt
+ </string>
+ <string name="land_type_unknown">
+ (unbekannt)
+ </string>
+ <string name="all_files">
+ Alle Dateien
+ </string>
+ <string name="sound_files">
+ Sounds
+ </string>
+ <string name="animation_files">
+ Animationen
+ </string>
+ <string name="image_files">
+ Bilder
+ </string>
+ <string name="save_file_verb">
+ Speichern
+ </string>
+ <string name="load_file_verb">
+ Laden
+ </string>
+ <string name="targa_image_files">
+ Targa-Bilder
+ </string>
+ <string name="bitmap_image_files">
+ Bitmap-Bilder
+ </string>
+ <string name="avi_movie_file">
+ AVI-Filmdatei
+ </string>
+ <string name="xaf_animation_file">
+ XAF Anim-Datei
+ </string>
+ <string name="xml_file">
+ XML-Datei
+ </string>
+ <string name="dot_raw_file">
+ RAW-Datei
+ </string>
+ <string name="compressed_image_files">
+ Komprimierte Bilder
+ </string>
+ <string name="load_files">
+ Dateien laden
+ </string>
+ <string name="choose_the_directory">
+ Verzeichnis auswählen
+ </string>
+ <string name="AvatarSetNotAway">
+ Als anwesend anzeigen
+ </string>
+ <string name="AvatarSetAway">
+ Als abwesend anzeigen
+ </string>
+ <string name="AvatarSetNotBusy">
+ Als nicht beschäftigt anzeigen
+ </string>
+ <string name="AvatarSetBusy">
+ Als beschäftigt anzeigen
+ </string>
+ <string name="shape">
+ Form
+ </string>
+ <string name="skin">
+ Haut
+ </string>
+ <string name="hair">
+ Haare
+ </string>
+ <string name="eyes">
+ Augen
+ </string>
+ <string name="shirt">
+ Hemd
+ </string>
+ <string name="pants">
+ Hose
+ </string>
+ <string name="shoes">
+ Schuhe
+ </string>
+ <string name="socks">
+ Socken
+ </string>
+ <string name="jacket">
+ Jacke
+ </string>
+ <string name="gloves">
+ Handschuhe
+ </string>
+ <string name="undershirt">
+ Unterhemd
+ </string>
+ <string name="underpants">
+ Unterhose
+ </string>
+ <string name="skirt">
+ Rock
+ </string>
+ <string name="invalid">
+ ungültig
+ </string>
+ <string name="BodyPartsRightArm">
+ Rechter Arm
+ </string>
+ <string name="BodyPartsHead">
+ Kopf
+ </string>
+ <string name="BodyPartsLeftArm">
+ Linker Arm
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Linkes Bein
+ </string>
+ <string name="BodyPartsTorso">
+ Oberkörper
+ </string>
+ <string name="BodyPartsRightLeg">
+ Rechtes Bein
+ </string>
+ <string name="GraphicsQualityLow">
+ Niedrig
+ </string>
+ <string name="GraphicsQualityMid">
+ Mittel
+ </string>
+ <string name="GraphicsQualityHigh">
+ Hoch
+ </string>
+ <string name="LeaveMouselook">
+ ESC drücken, um zur Normalansicht zurückzukehren
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Im Inventar wurden keine passenden Artikel gefunden.
+ </string>
+ <string name="InventoryNoTexture">
+ Sie haben keine Kopie dieser Textur in Ihrem Inventar.
+ </string>
+ <string name="LoadingContents">
+ Inhalte werden geladen...
+ </string>
+ <string name="NoContents">
+ Keine Inhalte
+ </string>
+ <string name="InvFolder My Inventory">
+ Mein Inventar
+ </string>
+ <string name="InvFolder My Favorites">
+ Meine Favoriten
+ </string>
+ <string name="InvFolder Library">
+ Bibliothek
+ </string>
+ <string name="InvFolder Textures">
+ Texturen
+ </string>
+ <string name="InvFolder Sounds">
+ Sounds
+ </string>
+ <string name="InvFolder Calling Cards">
+ Visitenkarten
+ </string>
+ <string name="InvFolder Landmarks">
+ Landmarken
+ </string>
+ <string name="InvFolder Scripts">
+ Skripts
+ </string>
+ <string name="InvFolder Clothing">
+ Kleidung
+ </string>
+ <string name="InvFolder Objects">
+ Objekte
+ </string>
+ <string name="InvFolder Notecards">
+ Notizkarten
+ </string>
+ <string name="InvFolder New Folder">
+ Neuer Ordner
+ </string>
+ <string name="InvFolder Inventory">
+ Inventar
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Nicht-Komprimierte Bilder
+ </string>
+ <string name="InvFolder Body Parts">
+ Körperteile
+ </string>
+ <string name="InvFolder Trash">
+ Papierkorb
+ </string>
+ <string name="InvFolder Photo Album">
+ Fotoalbum
+ </string>
+ <string name="InvFolder Lost And Found">
+ Fundbüro
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Nicht-Komprimierte Sounds
+ </string>
+ <string name="InvFolder Animations">
+ Animationen
+ </string>
+ <string name="InvFolder Gestures">
+ Gesten
+ </string>
+ <string name="InvFolder favorite">
+ Favoriten
+ </string>
+ <string name="InvFolder Current Outfit">
+ Aktuelles Outfit
+ </string>
+ <string name="InvFolder My Outfits">
+ Meine Outfits
+ </string>
+ <string name="InvFolder Friends">
+ Freunde
+ </string>
+ <string name="InvFolder All">
+ Alle
+ </string>
+ <string name="Buy">
+ Kaufen
+ </string>
+ <string name="BuyforL$">
+ Kaufen für L$
+ </string>
+ <string name="Stone">
+ Stein
+ </string>
+ <string name="Metal">
+ Metall
+ </string>
+ <string name="Glass">
+ Glas
+ </string>
+ <string name="Wood">
+ Holz
+ </string>
+ <string name="Flesh">
+ Fleisch
+ </string>
+ <string name="Plastic">
+ Plastik
+ </string>
+ <string name="Rubber">
+ Gummi
+ </string>
+ <string name="Light">
+ Licht
+ </string>
+ <string name="KBShift">
+ Umschalt-Taste
+ </string>
+ <string name="KBCtrl">
+ Strg
+ </string>
+ <string name="Chest">
+ Brust
+ </string>
+ <string name="Skull">
+ Schädel
+ </string>
+ <string name="Left Shoulder">
+ Linke Schulter
+ </string>
+ <string name="Right Shoulder">
+ Rechte Schulter
+ </string>
+ <string name="Left Hand">
+ Linke Hand
+ </string>
+ <string name="Right Hand">
+ Rechte Hand
+ </string>
+ <string name="Left Foot">
+ Linker Fuß
+ </string>
+ <string name="Right Foot">
+ Rechter Fuß
+ </string>
+ <string name="Spine">
+ Wirbelsäule
+ </string>
+ <string name="Pelvis">
+ Becken
+ </string>
+ <string name="Mouth">
+ Mund
+ </string>
+ <string name="Chin">
+ Kinn
+ </string>
+ <string name="Left Ear">
+ Linkes Ohr
+ </string>
+ <string name="Right Ear">
+ Rechtes Ohr
+ </string>
+ <string name="Left Eyeball">
+ Linker Augapfel
+ </string>
+ <string name="Right Eyeball">
+ Rechter Augapfel
+ </string>
+ <string name="Nose">
+ Nase
+ </string>
+ <string name="R Upper Arm">
+ R Oberarm
+ </string>
+ <string name="R Forearm">
+ R Unterarm
+ </string>
+ <string name="L Upper Arm">
+ L Oberarm
+ </string>
+ <string name="L Forearm">
+ L Unterarm
+ </string>
+ <string name="Right Hip">
+ Rechte Hüfte
+ </string>
+ <string name="R Upper Leg">
+ R Oberschenkel
+ </string>
+ <string name="R Lower Leg">
+ R Unterschenkel
+ </string>
+ <string name="Left Hip">
+ Linke Hüfte
+ </string>
+ <string name="L Upper Leg">
+ L Oberschenkel
+ </string>
+ <string name="L Lower Leg">
+ L Unterschenkel
+ </string>
+ <string name="Stomach">
+ Bauch
+ </string>
+ <string name="Left Pec">
+ Linke Brust
+ </string>
+ <string name="Right Pec">
+ Rechts
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] alt
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] alt
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] alt
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] alt
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] alt
+ </string>
+ <string name="TodayOld">
+ Seit heute Mitglied
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] Jahr
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] Jahre
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] Jahre
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] Monat
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] Monate
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] Monate
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] Woche
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] Wochen
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] Wochen
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] Tag
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] Tage
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] Tage
+ </string>
+ <string name="AcctTypeResident">
+ Einwohner
+ </string>
+ <string name="AcctTypeTrial">
+ Test
+ </string>
+ <string name="AcctTypeCharterMember">
+ Charta-Mitglied
+ </string>
+ <string name="AcctTypeEmployee">
+ Linden Lab-Mitarbeiter
+ </string>
+ <string name="PaymentInfoUsed">
+ Zahlungsinfo verwendet
+ </string>
+ <string name="PaymentInfoOnFile">
+ Zahlungsinfo archiviert
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Keine Zahlungsinfo archiviert
+ </string>
+ <string name="AgeVerified">
+ Altersgeprüft
+ </string>
+ <string name="NotAgeVerified">
+ Nicht altersgeprüft
+ </string>
+ <string name="Center 2">
+ Mitte 2
+ </string>
+ <string name="Top Right">
+ Oben rechts
+ </string>
+ <string name="Top">
+ Oben
+ </string>
+ <string name="Top Left">
+ Oben links
+ </string>
+ <string name="Center">
+ Zentrieren
+ </string>
+ <string name="Bottom Left">
+ Unten links
+ </string>
+ <string name="Bottom">
+ Unten
+ </string>
+ <string name="Bottom Right">
+ Unten rechts
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Heruntergeladen, wird kompiliert
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Skript wurde auf Server nicht gefunden.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Beim Herunterladen ist ein Problem aufgetreten
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Unzureichende Rechte zum Herunterladen eines Skripts.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Unzureichende Berechtigungen für
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Unbekannter Fehler beim Herunterladen
+ </string>
+ <string name="CompileQueueTitle">
+ Rekompilierung
+ </string>
+ <string name="CompileQueueStart">
+ rekompilieren
+ </string>
+ <string name="ResetQueueTitle">
+ Zurücksetzen
+ </string>
+ <string name="ResetQueueStart">
+ Zurücksetzen
+ </string>
+ <string name="RunQueueTitle">
+ Skript ausführen
+ </string>
+ <string name="RunQueueStart">
+ Skript ausführen
+ </string>
+ <string name="NotRunQueueTitle">
+ Skript anhalten
+ </string>
+ <string name="NotRunQueueStart">
+ Skript anhalten
+ </string>
+ <string name="CompileSuccessful">
+ Kompilieren erfolgreich abgeschlossen!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Kompilieren erfolgreich abgeschlossen, speichern...
+ </string>
+ <string name="SaveComplete">
+ Speichervorgang abgeschlossen.
+ </string>
+ <string name="ObjectOutOfRange">
+ Skript (Objekt außerhalb des Bereichs)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Objekt [OBJECT], Besitzer [OWNER]
+ </string>
+ <string name="GroupsNone">
+ keine
+ </string>
+ <string name="Unknown">
+ (unbekannt)
+ </string>
+ <string name="Balance">
+ Kontostand
+ </string>
+ <string name="Credits">
+ Danksagung
+ </string>
+ <string name="Debits">
+ Soll
+ </string>
+ <string name="Total">
+ Gesamtbetrag
+ </string>
+ <string name="NoGroupDataFound">
+ Für Gruppe wurden keine Gruppendaten gefunden
+ </string>
+ <string name="IMParentEstate">
+ parent estate
+ </string>
+ <string name="IMMainland">
+ Mainland
+ </string>
+ <string name="IMTeen">
+ Teen
+ </string>
+ <string name="RegionInfoError">
+ Fehler
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ alle Grundstücke gehören [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ alle Grundstücke, die Ihnen gehört haben
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ alle Grundstücke, die Sie für [OWNER] verwaltet haben
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Zulässige Einwohner: ([ALLOWEDAGENTS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Zulässige Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS])
+ </string>
+ <string name="CursorPos">
+ Zeile [LINE], Spalte [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] gefunden
+ </string>
+ <string name="PanelContentsNewScript">
+ Neues Skript
+ </string>
+ <string name="MuteByName">
+ (nach Namen)
+ </string>
+ <string name="MuteAgent">
+ (Einwohner)
+ </string>
+ <string name="MuteObject">
+ (Objekt)
+ </string>
+ <string name="MuteGroup">
+ (Gruppe)
+ </string>
+ <string name="RegionNoCovenant">
+ Für dieses Grundstück liegt kein Vertrag vor.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Für dieses Grundstück liegt kein Vertrag vor. Das Land auf diesem Grundstück wird vom Grundstückseigentümer und nicht von Linden Lab verkauft. Für Informationen zum Verkauf setzen Sie sich bitte mit dem Grundstückseigentümer in Verbindung.
+ </string>
+ <string name="covenant_last_modified">
+ Zuletzt geändert:
+ </string>
+ <string name="GroupOwned">
+ In Gruppenbesitz
+ </string>
+ <string name="Public">
+ Öffentlich
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Klicks: [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (wird nach Veröffentlichung aktualisiert)
+ </string>
+ <string name="GroupVoteYes">
+ Ja
+ </string>
+ <string name="GroupVoteNo">
+ Nein
+ </string>
+ <string name="GroupVoteNoActiveProposals">
+ Zurzeit sind keine Umfragen aktiv
+ </string>
+ <string name="GroupVoteNoArchivedProposals">
+ Zurzeit sind keine Umfragen aktiv
+ </string>
+ <string name="GroupVoteRetrievingArchivedProposals">
+ Archivierte Umfragen werden geladen
+ </string>
+ <string name="GroupVoteRetrievingActiveProposals">
+ Aktive Umfragen werden geladen
+ </string>
+ <string name="MultiPreviewTitle">
+ Vorschau
+ </string>
+ <string name="MultiPropertiesTitle">
+ Eigenschaften
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Ein Objekt namens
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ im Besitz der Gruppe
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ im Besitz einer unbekannten Gruppe
+ </string>
+ <string name="InvOfferOwnedBy">
+ im Besitz von
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ im Besitz eines unbekannten Einwohners
+ </string>
+ <string name="InvOfferGaveYou">
+ hat Ihnen folgendes übergeben
+ </string>
+ <string name="InvOfferYouDecline">
+ Sie lehnen folgendes ab:
+ </string>
+ <string name="InvOfferFrom">
+ von
+ </string>
+ <string name="GroupMoneyTotal">
+ Gesamtbetrag
+ </string>
+ <string name="GroupMoneyBought">
+ gekauft
+ </string>
+ <string name="GroupMoneyPaidYou">
+ bezahlte Ihnen
+ </string>
+ <string name="GroupMoneyPaidInto">
+ bezahlte an
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ kaufte Pass für
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ bezahlte Gebühr für Event
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ bezahlte Preis für Event
+ </string>
+ <string name="GroupMoneyBalance">
+ Kontostand
+ </string>
+ <string name="GroupMoneyCredits">
+ Danksagung
+ </string>
+ <string name="GroupMoneyDebits">
+ Soll
+ </string>
+ <string name="ViewerObjectContents">
+ Inhalte
+ </string>
+ <string name="AcquiredItems">
+ Erworbene Artikel
+ </string>
+ <string name="Cancel">
+ Abbrechen
+ </string>
+ <string name="UploadingCosts">
+ Hochladen von %s kostet
+ </string>
+ <string name="UnknownFileExtension">
+ Unbekanntes Dateiformat .%s
+Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Landmarke hinzufügen...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Landmarke bearbeiten...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Strg+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Umschalt+
+ </string>
+ <string name="FileSaved">
+ Datei wurde gespeichert
+ </string>
+ <string name="Receiving">
+ Daten werden empfangen
+ </string>
+ <string name="AM">
+ Uhr
+ </string>
+ <string name="PM">
+ Uhr
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Forward">
+ Vorwärts
+ </string>
+ <string name="Left">
+ Links
+ </string>
+ <string name="Right">
+ Rechts
+ </string>
+ <string name="Back">
+ Zurück
+ </string>
+ <string name="North">
+ Norden
+ </string>
+ <string name="South">
+ Süden
+ </string>
+ <string name="West">
+ Westen
+ </string>
+ <string name="East">
+ Osten
+ </string>
+ <string name="Up">
+ Nach oben
+ </string>
+ <string name="Down">
+ Nach unten
+ </string>
+ <string name="Any Category">
+ Alle Kategorien
+ </string>
+ <string name="Shopping">
+ Shopping
+ </string>
+ <string name="Land Rental">
+ Land mieten
+ </string>
+ <string name="Property Rental">
+ Immobilie mieten
+ </string>
+ <string name="Special Attraction">
+ Attraktionen
+ </string>
+ <string name="New Products">
+ Neue Produkte
+ </string>
+ <string name="Employment">
+ Stellenangebote
+ </string>
+ <string name="Wanted">
+ Gesucht
+ </string>
+ <string name="Service">
+ Dienstleistungen
+ </string>
+ <string name="Personal">
+ Verschiedenes
+ </string>
+ <string name="None">
+ Keiner
+ </string>
+ <string name="Linden Location">
+ Lindenort
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ Kunst &amp; Kultur
+ </string>
+ <string name="Business">
+ Business
+ </string>
+ <string name="Educational">
+ Bildung
+ </string>
+ <string name="Gaming">
+ Spielen
+ </string>
+ <string name="Hangout">
+ Treffpunkt
+ </string>
+ <string name="Newcomer Friendly">
+ Anfängergerecht
+ </string>
+ <string name="Parks&amp;Nature">
+ Parks und Natur
+ </string>
+ <string name="Residential">
+ Wohngebiet
+ </string>
+ <string name="Stage">
+ Phase
+ </string>
+ <string name="Other">
+ Sonstige
+ </string>
+ <string name="Any">
+ Alle
+ </string>
+ <string name="You">
+ Sie
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="&apos;">
+ &apos;
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="MBCmdLineError">
+ Beim Parsen der Befehlszeile wurde ein Fehler festgestellt.
+Weitere Informationen: http://wiki.secondlife.com/wiki/Client_parameters (EN)
+Fehler:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Verwendung in Befehlszeile:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] kann auf die erforderliche Datei nicht zugreifen.
+
+Grund hierfür ist, dass Sie entweder mehrere Instanzen gleichzeitig ausführen oder dass Ihr System denkt, eine Datei sei geöffnet.
+Falls diese Nachricht erneut angezeigt wird, starten Sie bitte Ihren Computer neu und probieren Sie es noch einmal.
+Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem System de-installieren und erneut installieren.
+ </string>
+ <string name="MBFatalError">
+ Unbehebbarer Fehler
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] läuft bereits.
+Bitte sehen Sie in Ihrer Menüleiste nach, dort sollte ein Symbol für das Programm angezeigt werden.
+Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte neu.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] scheint eingefroren zu sein oder ist abgestürzt.
+Möchten Sie einen Absturz-Bericht einschicken?
+ </string>
+ <string name="MBAlert">
+ Alarm
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] kann DirectX 9.0b oder höher nicht feststellen.
+[APP_NAME] verwendet DirectX, um nach Hardware und/oder veralteten Treibern zu suchen, die zu Problemen mit der Stabilität, Leistung und Abstürzen führen können. Sie können [APP_NAME] auch so ausführen, wir empfehlen jedoch, dass DirectX 9.0b vorhanden ist und ausgeführt wird.
+
+Möchten Sie fortfahren?
+ </string>
+ <string name="MBWarning">
+ Hinweis
+ </string>
+ <string name="MBNoAutoUpdate">
+ Für Linux ist zur Zeit noch kein automatisches Aktualisieren möglich.
+Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass fehlgeschlagen
+ </string>
+ <string name="MBError">
+ Fehler
+ </string>
+ <string name="MBFullScreenErr">
+ Vollbildschirm mit [WIDTH] x [HEIGHT] kann nicht ausgeführt werden.
+Ausführung erfolgt in Fenster.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Fehler beim Herunterfahren während Fenster geschlossen wurde (DestroyWindow() fehlgeschlagen)
+ </string>
+ <string name="MBShutdownErr">
+ Fehler beim Herunterfahren
+ </string>
+ <string name="MBDevContextErr">
+ Kann keinen Kontext für GL-Gerät erstellen
+ </string>
+ <string name="MBPixelFmtErr">
+ Passendes Pixelformat wurde nicht gefunden
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Beschreibung für Pixelformat nicht verfügbar
+ </string>
+ <string name="MBTrueColorWindow">
+ Um [APP_NAME] in einem Fenster auszuführen, ist True Color (32-bit) erforderlich.
+Klicken Sie auf Systemsteuerung &gt; Anzeige &gt; Einstellungen und stellen Sie den Bildschirm auf 32-bit Farbe ein.
+Wenn Sie die Anwendung im Modus Vollbildschirm ausführen möchten, dann wird [APP_NAME] den Bildschirm automatisch während der Ausführung anpassen.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] kann nicht ausgeführt werden, da kein 8-Bit-Alpha-Kanal verfügbar ist. Dies geschieht normalerweise bei Problemen mit dem Treiber der Video-Karte.
+Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für Ihre Videokarte installiert haben.
+Vergewissern Sie sich außerdem, dass Ihr Bildschirm auf True Color (32-Bit) eingestellt ist (Systemsteuerung &gt; Anzeige &gt; Einstellungen).
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Pixel-Format kann nicht eingestellt werden.
+ </string>
+ <string name="MBGLContextErr">
+ Kann keinen Kontext für GL-Gerät erstellen
+ </string>
+ <string name="MBGLContextActErr">
+ Kann keinen Kontext für GL-Gerät aktivieren
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] kann nicht ausgeführt werden, da die Treiber Ihrer Videokarte entweder nicht richtig installiert oder veraltet sind, oder die entsprechende Hardware nicht unterstützt wird. Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für die Videokarte installiert haben. Falls Sie die aktuellsten Treiber bereits installiert haben, installieren Sie diese bitte erneut.
+
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Bartschatten
+ </string>
+ <string name="All White">
+ Ganz weiß
+ </string>
+ <string name="Anime Eyes">
+ Anime-Augen
+ </string>
+ <string name="Arced">
+ Gewölbt
+ </string>
+ <string name="Arm Length">
+ Armlänge
+ </string>
+ <string name="Attached">
+ Angewachsen
+ </string>
+ <string name="Attached Earlobes">
+ Angewachsene Ohrläppchen
+ </string>
+ <string name="Back Bangs">
+ Nackenhaar
+ </string>
+ <string name="Back Bangs Down">
+ Lang
+ </string>
+ <string name="Back Bangs Up">
+ Kurz
+ </string>
+ <string name="Back Fringe">
+ Nackenfransen
+ </string>
+ <string name="Back Hair">
+ Hinterkopfhaar
+ </string>
+ <string name="Back Hair Down">
+ lang
+ </string>
+ <string name="Back Hair Up">
+ kurz
+ </string>
+ <string name="Baggy">
+ Tränensäcke
+ </string>
+ <string name="Bangs">
+ Pony
+ </string>
+ <string name="Bangs Down">
+ Pony lang
+ </string>
+ <string name="Bangs Up">
+ Pony kurz
+ </string>
+ <string name="Beady Eyes">
+ Knopfaugen
+ </string>
+ <string name="Belly Size">
+ Bauchgröße
+ </string>
+ <string name="Big">
+ Groß
+ </string>
+ <string name="Big Butt">
+ Großer Hintern
+ </string>
+ <string name="Big Eyeball">
+ Großer Augapfel
+ </string>
+ <string name="Big Hair Back">
+ Volumen: Hinten
+ </string>
+ <string name="Big Hair Front">
+ Volumen: Vorne
+ </string>
+ <string name="Big Hair Top">
+ Volumen: Oben
+ </string>
+ <string name="Big Head">
+ Großer Kopf
+ </string>
+ <string name="Big Pectorals">
+ Große Brustmuskeln
+ </string>
+ <string name="Big Spikes">
+ Große Stacheln
+ </string>
+ <string name="Black">
+ Schwarz
+ </string>
+ <string name="Blonde">
+ Blond
+ </string>
+ <string name="Blonde Hair">
+ Blondes Haar
+ </string>
+ <string name="Blush">
+ Rouge
+ </string>
+ <string name="Blush Color">
+ Rougefarbe
+ </string>
+ <string name="Blush Opacity">
+ Rouge Deckkraft
+ </string>
+ <string name="Body Definition">
+ Körperkonturen
+ </string>
+ <string name="Body Fat">
+ Körperfett
+ </string>
+ <string name="Body Freckles">
+ Sommersprossen
+ </string>
+ <string name="Body Thick">
+ Körper - breit
+ </string>
+ <string name="Body Thickness">
+ Körperbreite
+ </string>
+ <string name="Body Thin">
+ Körper - schmal
+ </string>
+ <string name="Bow Legged">
+ o-beinig
+ </string>
+ <string name="Breast Buoyancy">
+ Brust, Straffheit
+ </string>
+ <string name="Breast Cleavage">
+ Dekolleté
+ </string>
+ <string name="Breast Size">
+ Brustgröße
+ </string>
+ <string name="Bridge Width">
+ Rückenbreite
+ </string>
+ <string name="Broad">
+ Breit
+ </string>
+ <string name="Brow Size">
+ Brauengröße
+ </string>
+ <string name="Bug Eyes">
+ Glubschaugen
+ </string>
+ <string name="Bugged Eyes">
+ Hervortretend
+ </string>
+ <string name="Bulbous">
+ Knollennase
+ </string>
+ <string name="Bulbous Nose">
+ Knollennase
+ </string>
+ <string name="Bushy Eyebrows">
+ Buschige Augenbrauen
+ </string>
+ <string name="Bushy Hair">
+ Buschiges Haar
+ </string>
+ <string name="Butt Size">
+ Hintern, Größe
+ </string>
+ <string name="bustle skirt">
+ Tournürenrock
+ </string>
+ <string name="no bustle">
+ Ohne
+ </string>
+ <string name="more bustle">
+ Mit
+ </string>
+ <string name="Chaplin">
+ Chaplin
+ </string>
+ <string name="Cheek Bones">
+ Wangenknochen
+ </string>
+ <string name="Chest Size">
+ Brustgröße
+ </string>
+ <string name="Chin Angle">
+ Kinnwinkel
+ </string>
+ <string name="Chin Cleft">
+ Kinnspalte
+ </string>
+ <string name="Chin Curtains">
+ Schifferfräse
+ </string>
+ <string name="Chin Depth">
+ Kinnlänge
+ </string>
+ <string name="Chin Heavy">
+ Kinn ausgeprägt
+ </string>
+ <string name="Chin In">
+ Kinn zurück
+ </string>
+ <string name="Chin Out">
+ Kinn nach vorne
+ </string>
+ <string name="Chin-Neck">
+ Kinn-Hals
+ </string>
+ <string name="Clear">
+ Löschen
+ </string>
+ <string name="Cleft">
+ Spalte
+ </string>
+ <string name="Close Set Eyes">
+ Eng stehende Augen
+ </string>
+ <string name="Closed">
+ Geschlossen
+ </string>
+ <string name="Closed Back">
+ Hinten geschlossen
+ </string>
+ <string name="Closed Front">
+ Vorne geschlossen
+ </string>
+ <string name="Closed Left">
+ Links geschlossen
+ </string>
+ <string name="Closed Right">
+ Rechts geschlossen
+ </string>
+ <string name="Coin Purse">
+ Klein
+ </string>
+ <string name="Collar Back">
+ Kragen hinten
+ </string>
+ <string name="Collar Front">
+ Kragen vorne
+ </string>
+ <string name="Corner Down">
+ Nach unten
+ </string>
+ <string name="Corner Normal">
+ Normal
+ </string>
+ <string name="Corner Up">
+ Nach oben
+ </string>
+ <string name="Creased">
+ Schlupflid
+ </string>
+ <string name="Crooked Nose">
+ Krumme Nase
+ </string>
+ <string name="Cropped Hair">
+ Kurze Haare
+ </string>
+ <string name="Cuff Flare">
+ Hosenaufschlag
+ </string>
+ <string name="Dark">
+ Dunkel
+ </string>
+ <string name="Dark Green">
+ Dunkelgrün
+ </string>
+ <string name="Darker">
+ Dunkler
+ </string>
+ <string name="Deep">
+ Tief
+ </string>
+ <string name="Default Heels">
+ Standardabsätze
+ </string>
+ <string name="Default Toe">
+ Standardspitze
+ </string>
+ <string name="Dense">
+ Dicht
+ </string>
+ <string name="Dense hair">
+ Dichtes Haar
+ </string>
+ <string name="Double Chin">
+ Doppelkinn
+ </string>
+ <string name="Downturned">
+ Nach unten
+ </string>
+ <string name="Duffle Bag">
+ Groß
+ </string>
+ <string name="Ear Angle">
+ Ohrenwinkel
+ </string>
+ <string name="Ear Size">
+ Ohrengröße
+ </string>
+ <string name="Ear Tips">
+ Ohrenspitzen
+ </string>
+ <string name="Egg Head">
+ Eierkopf
+ </string>
+ <string name="Eye Bags">
+ Augenränder
+ </string>
+ <string name="Eye Color">
+ Augenfarbe
+ </string>
+ <string name="Eye Depth">
+ Augentiefe
+ </string>
+ <string name="Eye Lightness">
+ Helligkeit
+ </string>
+ <string name="Eye Opening">
+ Öffnung
+ </string>
+ <string name="Eye Pop">
+ Symmetrie
+ </string>
+ <string name="Eye Size">
+ Augengröße
+ </string>
+ <string name="Eye Spacing">
+ Augenstand
+ </string>
+ <string name="Eyeball Size">
+ Größe des Augapfels
+ </string>
+ <string name="Eyebrow Arc">
+ Brauenbogen
+ </string>
+ <string name="Eyebrow Density">
+ Brauendichte
+ </string>
+ <string name="Eyebrow Height">
+ Brauenhöhe
+ </string>
+ <string name="Eyebrow Points">
+ Brauenenden
+ </string>
+ <string name="Eyebrow Size">
+ Brauengröße
+ </string>
+ <string name="Eyelash Length">
+ Wimpernlänge
+ </string>
+ <string name="Eyeliner">
+ Eyeliner
+ </string>
+ <string name="Eyeliner Color">
+ Farbe des Eyeliners
+ </string>
+ <string name="Eyes Back">
+ Augen zurück
+ </string>
+ <string name="Eyes Bugged">
+ Glubschaugen
+ </string>
+ <string name="Eyes Forward">
+ Augen nach vorne
+ </string>
+ <string name="Eyes Long Head">
+ Augen langer Kopf
+ </string>
+ <string name="Eyes Shear Left Up">
+ Augen Verzerrung links hoch
+ </string>
+ <string name="Eyes Shear Right Up">
+ Augen Verzerrung rechts hoch
+ </string>
+ <string name="Eyes Short Head">
+ Augen kurzer Kopf
+ </string>
+ <string name="Eyes Spread">
+ Augen auseinander
+ </string>
+ <string name="Eyes Sunken">
+ eingesunkene Augen
+ </string>
+ <string name="Eyes Together">
+ Augen zusammen
+ </string>
+ <string name="Face Shear">
+ Gesichtsverzerrung
+ </string>
+ <string name="Facial Definition">
+ Gesichtskonturen
+ </string>
+ <string name="Far Set Eyes">
+ Weit auseinander
+ </string>
+ <string name="Fat">
+ Dick
+ </string>
+ <string name="Fat Head">
+ Dicker Kopf
+ </string>
+ <string name="Fat Lips">
+ Volle Lippen
+ </string>
+ <string name="Fat Lower">
+ Volle Unterlippe
+ </string>
+ <string name="Fat Lower Lip">
+ Volle Unterlippe
+ </string>
+ <string name="Fat Torso">
+ Dicker Körper
+ </string>
+ <string name="Fat Upper">
+ Volle Oberlippe
+ </string>
+ <string name="Fat Upper Lip">
+ Volle Oberlippe
+ </string>
+ <string name="Female">
+ weiblich
+ </string>
+ <string name="Fingerless">
+ Ohne Finger
+ </string>
+ <string name="Fingers">
+ Finger
+ </string>
+ <string name="Flared Cuffs">
+ Ausgestellt
+ </string>
+ <string name="Flat">
+ Flach
+ </string>
+ <string name="Flat Butt">
+ Flacher Hintern
+ </string>
+ <string name="Flat Head">
+ Flacher Kopf
+ </string>
+ <string name="Flat Toe">
+ Flache Spitze
+ </string>
+ <string name="Foot Size">
+ Fußgröße
+ </string>
+ <string name="Forehead Angle">
+ Stirnwinkel
+ </string>
+ <string name="Forehead Heavy">
+ Stirn ausgeprägt
+ </string>
+ <string name="Freckles">
+ Sommersprossen
+ </string>
+ <string name="Front Bangs Down">
+ Langer Pony
+ </string>
+ <string name="Front Bangs Up">
+ Kurzer Pony
+ </string>
+ <string name="Front Fringe">
+ Fransen, vorne
+ </string>
+ <string name="Front Hair">
+ Vorderhaar
+ </string>
+ <string name="Front Hair Down">
+ langes Vorderhaar
+ </string>
+ <string name="Front Hair Up">
+ Kurzes Vorderhaar
+ </string>
+ <string name="Full Back">
+ Hinten volles Haar
+ </string>
+ <string name="Full Eyeliner">
+ Starker Eyeliner
+ </string>
+ <string name="Full Front">
+ Vorne volles Haar
+ </string>
+ <string name="Full Hair Sides">
+ Seitlich volles Haar
+ </string>
+ <string name="Full Sides">
+ Volle Seiten
+ </string>
+ <string name="Glossy">
+ Glänzend
+ </string>
+ <string name="Glove Fingers">
+ Handschuhfinger
+ </string>
+ <string name="Glove Length">
+ Handschuhlänge
+ </string>
+ <string name="Hair">
+ Haare
+ </string>
+ <string name="Hair Back">
+ Haare: Hinten
+ </string>
+ <string name="Hair Front">
+ Haare: Vorne
+ </string>
+ <string name="Hair Sides">
+ Haare: Seiten
+ </string>
+ <string name="Hair Sweep">
+ Haartolle
+ </string>
+ <string name="Hair Thickess">
+ Haardicke
+ </string>
+ <string name="Hair Thickness">
+ Haardicke
+ </string>
+ <string name="Hair Tilt">
+ Haarneigung
+ </string>
+ <string name="Hair Tilted Left">
+ Nach links
+ </string>
+ <string name="Hair Tilted Right">
+ Nach rechts
+ </string>
+ <string name="Hair Volume">
+ Haare: Volumen
+ </string>
+ <string name="Hand Size">
+ Handgröße
+ </string>
+ <string name="Handlebars">
+ Zwirbelbart
+ </string>
+ <string name="Head Length">
+ Kopflänge
+ </string>
+ <string name="Head Shape">
+ Kopfform
+ </string>
+ <string name="Head Size">
+ Kopfgröße
+ </string>
+ <string name="Head Stretch">
+ Kopfstreckung
+ </string>
+ <string name="Heel Height">
+ Absatzhöhe
+ </string>
+ <string name="Heel Shape">
+ Absatzform
+ </string>
+ <string name="Height">
+ Höhe
+ </string>
+ <string name="High">
+ Hoch
+ </string>
+ <string name="High Heels">
+ Hohe Absätze
+ </string>
+ <string name="High Jaw">
+ Hoch
+ </string>
+ <string name="High Platforms">
+ Hohe Plattformsohlen
+ </string>
+ <string name="High and Tight">
+ Hoch und eng
+ </string>
+ <string name="Higher">
+ Höhere
+ </string>
+ <string name="Hip Length">
+ Länge der Hüfte
+ </string>
+ <string name="Hip Width">
+ Breite der Hüfte
+ </string>
+ <string name="In">
+ In
+ </string>
+ <string name="In Shdw Color">
+ Farbe Innenseite
+ </string>
+ <string name="In Shdw Opacity">
+ Deckkraft: innerer Lidschatten
+ </string>
+ <string name="Inner Eye Corner">
+ Ecke: Nasenseite
+ </string>
+ <string name="Inner Eye Shadow">
+ Innerer Lidschatten
+ </string>
+ <string name="Inner Shadow">
+ Innerer Lidschatten
+ </string>
+ <string name="Jacket Length">
+ Jackenlänge
+ </string>
+ <string name="Jacket Wrinkles">
+ Jackenfalten
+ </string>
+ <string name="Jaw Angle">
+ Kinnansatz
+ </string>
+ <string name="Jaw Jut">
+ Kinnposition
+ </string>
+ <string name="Jaw Shape">
+ Kinnform
+ </string>
+ <string name="Join">
+ Zusammen
+ </string>
+ <string name="Jowls">
+ Hängebacken
+ </string>
+ <string name="Knee Angle">
+ Kniewinkel
+ </string>
+ <string name="Knock Kneed">
+ X-beinig
+ </string>
+ <string name="Large">
+ Groß
+ </string>
+ <string name="Large Hands">
+ Große Hände
+ </string>
+ <string name="Left Part">
+ Linksscheitel
+ </string>
+ <string name="Leg Length">
+ Beinlänge
+ </string>
+ <string name="Leg Muscles">
+ Beinmuskeln
+ </string>
+ <string name="Less">
+ Weniger
+ </string>
+ <string name="Less Body Fat">
+ Weniger Speck
+ </string>
+ <string name="Less Curtains">
+ Weniger
+ </string>
+ <string name="Less Freckles">
+ Weniger
+ </string>
+ <string name="Less Full">
+ Weniger
+ </string>
+ <string name="Less Gravity">
+ Weniger
+ </string>
+ <string name="Less Love">
+ Weniger
+ </string>
+ <string name="Less Muscles">
+ Weniger
+ </string>
+ <string name="Less Muscular">
+ Weniger
+ </string>
+ <string name="Less Rosy">
+ Weniger
+ </string>
+ <string name="Less Round">
+ Weniger
+ </string>
+ <string name="Less Saddle">
+ Weniger
+ </string>
+ <string name="Less Square">
+ Weniger
+ </string>
+ <string name="Less Volume">
+ Weniger
+ </string>
+ <string name="Less soul">
+ Weniger
+ </string>
+ <string name="Lighter">
+ Heller
+ </string>
+ <string name="Lip Cleft">
+ Amorbogen
+ </string>
+ <string name="Lip Cleft Depth">
+ Tiefe: Amorbogen
+ </string>
+ <string name="Lip Fullness">
+ Fülle
+ </string>
+ <string name="Lip Pinkness">
+ Pinkton
+ </string>
+ <string name="Lip Ratio">
+ Lippenproportionen
+ </string>
+ <string name="Lip Thickness">
+ Lippendicke
+ </string>
+ <string name="Lip Width">
+ Mundbreite
+ </string>
+ <string name="Lipgloss">
+ Lipgloss
+ </string>
+ <string name="Lipstick">
+ Lippenstift
+ </string>
+ <string name="Lipstick Color">
+ Farbe
+ </string>
+ <string name="Long">
+ Lang
+ </string>
+ <string name="Long Head">
+ Langer Kopf
+ </string>
+ <string name="Long Hips">
+ Lange Hüften
+ </string>
+ <string name="Long Legs">
+ Lange Beine
+ </string>
+ <string name="Long Neck">
+ Langer Hals
+ </string>
+ <string name="Long Pigtails">
+ Lange Zöpfe
+ </string>
+ <string name="Long Ponytail">
+ Langer Pferdeschwanz
+ </string>
+ <string name="Long Torso">
+ Langer Oberkörper
+ </string>
+ <string name="Long arms">
+ Lange Arme
+ </string>
+ <string name="Longcuffs">
+ Manschetten
+ </string>
+ <string name="Loose Pants">
+ Weite Hosen
+ </string>
+ <string name="Loose Shirt">
+ Weites Hemd
+ </string>
+ <string name="Loose Sleeves">
+ Weite Ärmel
+ </string>
+ <string name="Love Handles">
+ Fettpölsterchen
+ </string>
+ <string name="Low">
+ Niedrig
+ </string>
+ <string name="Low Heels">
+ Niedrig
+ </string>
+ <string name="Low Jaw">
+ Niedrig
+ </string>
+ <string name="Low Platforms">
+ Niedrig
+ </string>
+ <string name="Low and Loose">
+ Weit
+ </string>
+ <string name="Lower">
+ Absenken
+ </string>
+ <string name="Lower Bridge">
+ Brücke, Unterer Teil
+ </string>
+ <string name="Lower Cheeks">
+ Wangen, unterer Bereich
+ </string>
+ <string name="Male">
+ Männlich
+ </string>
+ <string name="Middle Part">
+ Mittelscheitel
+ </string>
+ <string name="More">
+ Mehr
+ </string>
+ <string name="More Blush">
+ Mehr
+ </string>
+ <string name="More Body Fat">
+ Mehr Speck
+ </string>
+ <string name="More Curtains">
+ Mehr
+ </string>
+ <string name="More Eyeshadow">
+ Mehr
+ </string>
+ <string name="More Freckles">
+ Mehr
+ </string>
+ <string name="More Full">
+ Voller
+ </string>
+ <string name="More Gravity">
+ Mehr
+ </string>
+ <string name="More Lipstick">
+ Mehr
+ </string>
+ <string name="More Love">
+ Mehr
+ </string>
+ <string name="More Lower Lip">
+ Größer
+ </string>
+ <string name="More Muscles">
+ Mehr
+ </string>
+ <string name="More Muscular">
+ Mehr
+ </string>
+ <string name="More Rosy">
+ Mehr
+ </string>
+ <string name="More Round">
+ Runder
+ </string>
+ <string name="More Saddle">
+ Mehr
+ </string>
+ <string name="More Sloped">
+ Mehr
+ </string>
+ <string name="More Square">
+ Mehr
+ </string>
+ <string name="More Upper Lip">
+ Mehr
+ </string>
+ <string name="More Vertical">
+ Mehr
+ </string>
+ <string name="More Volume">
+ Mehr
+ </string>
+ <string name="More soul">
+ Mehr
+ </string>
+ <string name="Moustache">
+ Schnauzer
+ </string>
+ <string name="Mouth Corner">
+ Mundwinkel
+ </string>
+ <string name="Mouth Position">
+ Mundposition
+ </string>
+ <string name="Mowhawk">
+ Irokese
+ </string>
+ <string name="Muscular">
+ Muskulös
+ </string>
+ <string name="Mutton Chops">
+ Koteletten
+ </string>
+ <string name="Nail Polish">
+ Nagellack
+ </string>
+ <string name="Nail Polish Color">
+ Farbe
+ </string>
+ <string name="Narrow">
+ Schmal
+ </string>
+ <string name="Narrow Back">
+ Wenig
+ </string>
+ <string name="Narrow Front">
+ Wenig
+ </string>
+ <string name="Narrow Lips">
+ Schmale Lippen
+ </string>
+ <string name="Natural">
+ Natürlich
+ </string>
+ <string name="Neck Length">
+ Halslänge
+ </string>
+ <string name="Neck Thickness">
+ Halsdicke
+ </string>
+ <string name="No Blush">
+ Kein Rouge
+ </string>
+ <string name="No Eyeliner">
+ Kein Eyeliner
+ </string>
+ <string name="No Eyeshadow">
+ Kein Lidschatten
+ </string>
+ <string name="No Heels">
+ Keine Absätze
+ </string>
+ <string name="No Lipgloss">
+ Kein Lipgloss
+ </string>
+ <string name="No Lipstick">
+ Kein Lippenstift
+ </string>
+ <string name="No Part">
+ Kein Scheitel
+ </string>
+ <string name="No Polish">
+ Kein Nagellack
+ </string>
+ <string name="No Red">
+ Nicht rot
+ </string>
+ <string name="No Spikes">
+ Keine Stachel
+ </string>
+ <string name="No White">
+ Kein Weiß
+ </string>
+ <string name="No Wrinkles">
+ Keine Falten
+ </string>
+ <string name="Normal Lower">
+ Normal unten
+ </string>
+ <string name="Normal Upper">
+ Normal oben
+ </string>
+ <string name="Nose Left">
+ Links
+ </string>
+ <string name="Nose Right">
+ Rechts
+ </string>
+ <string name="Nose Size">
+ Größe
+ </string>
+ <string name="Nose Thickness">
+ Dicke
+ </string>
+ <string name="Nose Tip Angle">
+ Nasenspitze
+ </string>
+ <string name="Nose Tip Shape">
+ Nasenspitze
+ </string>
+ <string name="Nose Width">
+ Nasenbreite
+ </string>
+ <string name="Nostril Division">
+ Teilung
+ </string>
+ <string name="Nostril Width">
+ Größe
+ </string>
+ <string name="Old">
+ Alt
+ </string>
+ <string name="Opaque">
+ Deckend
+ </string>
+ <string name="Open">
+ Öffnen
+ </string>
+ <string name="Open Back">
+ Hinten offen
+ </string>
+ <string name="Open Front">
+ Vorne offen
+ </string>
+ <string name="Open Left">
+ Links offen
+ </string>
+ <string name="Open Right">
+ Rechts offen
+ </string>
+ <string name="Orange">
+ Orange
+ </string>
+ <string name="Out">
+ Aus
+ </string>
+ <string name="Out Shdw Color">
+ Farbe: Oberer Lidschatten
+ </string>
+ <string name="Out Shdw Opacity">
+ Deckkraft: Oberer Lidschatten
+ </string>
+ <string name="Outer Eye Corner">
+ Äußerer Augenwinkel
+ </string>
+ <string name="Outer Eye Shadow">
+ Lidschatten: Oben
+ </string>
+ <string name="Outer Shadow">
+ Lidschatten: Oben
+ </string>
+ <string name="Overbite">
+ Überbiss
+ </string>
+ <string name="Package">
+ Ausbeulung
+ </string>
+ <string name="Painted Nails">
+ Lackierte Nägel
+ </string>
+ <string name="Pale">
+ Blass
+ </string>
+ <string name="Pants Crotch">
+ Schritt
+ </string>
+ <string name="Pants Fit">
+ Passform
+ </string>
+ <string name="Pants Length">
+ Hosenlänge
+ </string>
+ <string name="Pants Waist">
+ Hüfte
+ </string>
+ <string name="Pants Wrinkles">
+ Falten
+ </string>
+ <string name="Part">
+ Scheitel
+ </string>
+ <string name="Part Bangs">
+ Pony scheiteln
+ </string>
+ <string name="Pectorals">
+ Brustmuskel
+ </string>
+ <string name="Pigment">
+ Pigmentierung
+ </string>
+ <string name="Pigtails">
+ Zöpfe
+ </string>
+ <string name="Pink">
+ Pink
+ </string>
+ <string name="Pinker">
+ Mehr Pink
+ </string>
+ <string name="Platform Height">
+ Höhe
+ </string>
+ <string name="Platform Width">
+ Breite
+ </string>
+ <string name="Pointy">
+ Spitz
+ </string>
+ <string name="Pointy Heels">
+ Pfennigabsätze
+ </string>
+ <string name="Pointy Toe">
+ Spitz
+ </string>
+ <string name="Ponytail">
+ Pferdeschwanz
+ </string>
+ <string name="Poofy Skirt">
+ Weit ausgestellt
+ </string>
+ <string name="Pop Left Eye">
+ Linkes Auge größer
+ </string>
+ <string name="Pop Right Eye">
+ Rechtes Auge größer
+ </string>
+ <string name="Puffy">
+ Geschwollen
+ </string>
+ <string name="Puffy Eyelids">
+ Geschwollene Lider
+ </string>
+ <string name="Rainbow Color">
+ Regenbogenfarben
+ </string>
+ <string name="Red Hair">
+ Rote Haare
+ </string>
+ <string name="Red Skin">
+ Rote Haut
+ </string>
+ <string name="Regular">
+ Normal
+ </string>
+ <string name="Regular Muscles">
+ Normal muskulös
+ </string>
+ <string name="Right Part">
+ Scheitel rechts
+ </string>
+ <string name="Rosy Complexion">
+ Rosiger Teint
+ </string>
+ <string name="Round">
+ Rund
+ </string>
+ <string name="Round Forehead">
+ Runde Stirn
+ </string>
+ <string name="Ruddiness">
+ Röte
+ </string>
+ <string name="Ruddy">
+ Rötlich
+ </string>
+ <string name="Rumpled Hair">
+ Zerzauste Haare
+ </string>
+ <string name="Saddle Bags">
+ Hüftspeck
+ </string>
+ <string name="Saddlebags">
+ Hüftspeck
+ </string>
+ <string name="Scrawny">
+ Dürr
+ </string>
+ <string name="Scrawny Leg">
+ Dürres Bein
+ </string>
+ <string name="Separate">
+ Auseinander
+ </string>
+ <string name="Shading">
+ Schattierung
+ </string>
+ <string name="Shadow hair">
+ Schattenhaar
+ </string>
+ <string name="Shallow">
+ Flach
+ </string>
+ <string name="Shear Back">
+ Hinterkopf rasiert
+ </string>
+ <string name="Shear Face">
+ Gesicht verzerren
+ </string>
+ <string name="Shear Front">
+ Vorne rasiert
+ </string>
+ <string name="Shear Left">
+ Links
+ </string>
+ <string name="Shear Left Up">
+ Links
+ </string>
+ <string name="Shear Right">
+ Rechts
+ </string>
+ <string name="Shear Right Up">
+ Rechts
+ </string>
+ <string name="Sheared Back">
+ Hinterkopf rasiert
+ </string>
+ <string name="Sheared Front">
+ Vorne rasiert
+ </string>
+ <string name="Shift Left">
+ Nach links
+ </string>
+ <string name="Shift Mouth">
+ Mund verschieben
+ </string>
+ <string name="Shift Right">
+ Nach rechts
+ </string>
+ <string name="Shirt Bottom">
+ Hemdlänge
+ </string>
+ <string name="Shirt Fit">
+ Passform
+ </string>
+ <string name="Shirt Wrinkles">
+ Falten
+ </string>
+ <string name="Shoe Height">
+ Höhe
+ </string>
+ <string name="Short">
+ Kurz
+ </string>
+ <string name="Short Arms">
+ Kurze Arme
+ </string>
+ <string name="Short Legs">
+ Kurze Beine
+ </string>
+ <string name="Short Neck">
+ Kurzer Hals
+ </string>
+ <string name="Short Pigtails">
+ Kurze Zöpfe
+ </string>
+ <string name="Short Ponytail">
+ Kurzer Pferdeschwanz
+ </string>
+ <string name="Short Sideburns">
+ Kurze Koteletten
+ </string>
+ <string name="Short Torso">
+ Kurzer Oberkörper
+ </string>
+ <string name="Short hips">
+ Kurze Hüften
+ </string>
+ <string name="Shoulders">
+ Schultern
+ </string>
+ <string name="Side Bangs">
+ Seitlicher Pony
+ </string>
+ <string name="Side Bangs Down">
+ Lang
+ </string>
+ <string name="Side Bangs Up">
+ Kurz
+ </string>
+ <string name="Side Fringe">
+ Seitliche Fransen
+ </string>
+ <string name="Sideburns">
+ Koteletten
+ </string>
+ <string name="Sides Hair">
+ Seitliches Haar
+ </string>
+ <string name="Sides Hair Down">
+ Lang
+ </string>
+ <string name="Sides Hair Up">
+ Kurz
+ </string>
+ <string name="Skinny">
+ Dünn
+ </string>
+ <string name="Skinny Neck">
+ Dünner Hals
+ </string>
+ <string name="Skirt Fit">
+ Passform
+ </string>
+ <string name="Skirt Length">
+ Rocklänge
+ </string>
+ <string name="Slanted Forehead">
+ Fliehende Stirn
+ </string>
+ <string name="Sleeve Length">
+ Ärmellänge
+ </string>
+ <string name="Sleeve Looseness">
+ Passform Ärmel
+ </string>
+ <string name="Slit Back">
+ Schlitz: Hinten
+ </string>
+ <string name="Slit Front">
+ Schlitz: Vorne
+ </string>
+ <string name="Slit Left">
+ Schlitz: Links
+ </string>
+ <string name="Slit Right">
+ Schlitz: Rechts
+ </string>
+ <string name="Small">
+ Klein
+ </string>
+ <string name="Small Hands">
+ Kleine Hände
+ </string>
+ <string name="Small Head">
+ Kleiner Kopf
+ </string>
+ <string name="Smooth">
+ Glätten
+ </string>
+ <string name="Smooth Hair">
+ Glattes Haar
+ </string>
+ <string name="Socks Length">
+ Strumpflänge
+ </string>
+ <string name="Some">
+ Etwas
+ </string>
+ <string name="Soulpatch">
+ Unterlippenbart
+ </string>
+ <string name="Sparse">
+ Wenig
+ </string>
+ <string name="Spiked Hair">
+ Stachelhaare
+ </string>
+ <string name="Square">
+ Rechteck
+ </string>
+ <string name="Square Toe">
+ Eckig
+ </string>
+ <string name="Squash Head">
+ Gestaucht
+ </string>
+ <string name="Squash/Stretch Head">
+ Gestretcht/Gestaucht
+ </string>
+ <string name="Stretch Head">
+ Gestreckt
+ </string>
+ <string name="Sunken">
+ Eingefallen
+ </string>
+ <string name="Sunken Chest">
+ Trichterbrust
+ </string>
+ <string name="Sunken Eyes">
+ Eingesunkene Augen
+ </string>
+ <string name="Sweep Back">
+ Nach hinten
+ </string>
+ <string name="Sweep Forward">
+ Nach vorne
+ </string>
+ <string name="Swept Back">
+ Nach hinten
+ </string>
+ <string name="Swept Back Hair">
+ Haar nach hinten
+ </string>
+ <string name="Swept Forward">
+ Haare nach vorne
+ </string>
+ <string name="Swept Forward Hair">
+ Haare nach vorne
+ </string>
+ <string name="Tall">
+ Groß
+ </string>
+ <string name="Taper Back">
+ Ansatzbreite hinten
+ </string>
+ <string name="Taper Front">
+ Ansatzbreite vorne
+ </string>
+ <string name="Thick Heels">
+ Dicke Absätze
+ </string>
+ <string name="Thick Neck">
+ Dicker Hals
+ </string>
+ <string name="Thick Toe">
+ Dick
+ </string>
+ <string name="Thickness">
+ Dicke
+ </string>
+ <string name="Thin">
+ Dünn
+ </string>
+ <string name="Thin Eyebrows">
+ Dünne Augenbrauen
+ </string>
+ <string name="Thin Lips">
+ Dünne Lippen
+ </string>
+ <string name="Thin Nose">
+ Dünne Nase
+ </string>
+ <string name="Tight Chin">
+ Straffes Kinn
+ </string>
+ <string name="Tight Cuffs">
+ Eng
+ </string>
+ <string name="Tight Pants">
+ Enge Hosen
+ </string>
+ <string name="Tight Shirt">
+ Enges Hemd
+ </string>
+ <string name="Tight Skirt">
+ Enger Rock
+ </string>
+ <string name="Tight Sleeves">
+ Enge Ärmel
+ </string>
+ <string name="Tilt Left">
+ Nach links
+ </string>
+ <string name="Tilt Right">
+ Nach rechts
+ </string>
+ <string name="Toe Shape">
+ Spitze
+ </string>
+ <string name="Toe Thickness">
+ Dicke
+ </string>
+ <string name="Torso Length">
+ Länge des Oberkörpers
+ </string>
+ <string name="Torso Muscles">
+ Muskeln
+ </string>
+ <string name="Torso Scrawny">
+ Dürr
+ </string>
+ <string name="Unattached">
+ Frei
+ </string>
+ <string name="Uncreased">
+ Straffes Lid
+ </string>
+ <string name="Underbite">
+ Unterbiss
+ </string>
+ <string name="Unnatural">
+ Unnatürlich
+ </string>
+ <string name="Upper Bridge">
+ Brücke, oberer Teil
+ </string>
+ <string name="Upper Cheeks">
+ Obere Wangen
+ </string>
+ <string name="Upper Chin Cleft">
+ Obere Kinnspalte
+ </string>
+ <string name="Upper Eyelid Fold">
+ Obere Lidfalte
+ </string>
+ <string name="Upturned">
+ Stupsnase
+ </string>
+ <string name="Very Red">
+ Sehr rot
+ </string>
+ <string name="Waist Height">
+ Bund
+ </string>
+ <string name="Well-Fed">
+ Gut genährt
+ </string>
+ <string name="White Hair">
+ Weiße Haare
+ </string>
+ <string name="Wide">
+ Breit
+ </string>
+ <string name="Wide Back">
+ Breit
+ </string>
+ <string name="Wide Front">
+ Breit
+ </string>
+ <string name="Wide Lips">
+ Breit
+ </string>
+ <string name="Wild">
+ Wild
+ </string>
+ <string name="Wrinkles">
+ Falten
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Zu meinen Landmarken hinzufügen
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Meine Landmarken bearbeiten
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Aktualisierung
+ </string>
+ <string name="UpdaterNowUpdating">
+ [APP_NAME] wird aktualisiert...
+ </string>
+ <string name="UpdaterNowInstalling">
+ [APP_NAME] wird installiert...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Ihr [APP_NAME]-Viewer wird aktualisiert. Dies kann einen Moment dauern. Wir bitten um Ihr Verständnis.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Aktualisierung wird heruntergeladen...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Aktualisierung wird heruntergeladen
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Herunterladen ist fehlgeschlagen
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Aktualisierung konnte nicht installiert werden
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Viewer konnte nicht gestartet werden
+ </string>
+ <string name="only_user_message">
+ Sie sind der einzige Benutzer in dieser Sitzung.
+ </string>
+ <string name="offline_message">
+ [FIRST] [LAST] ist offline.
+ </string>
+ <string name="invite_message">
+ Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.
+ </string>
+ <string name="generic_request_error">
+ Fehler bei Anfrage, bitte versuchen Sie es später.
+ </string>
+ <string name="insufficient_perms_error">
+ Sie sind dazu nicht berechtigt.
+ </string>
+ <string name="session_does_not_exist_error">
+ Die Sitzung ist abgelaufen
+ </string>
+ <string name="no_ability_error">
+ Sie besitzen diese Fähigkeit nicht.
+ </string>
+ <string name="no_ability">
+ Sie besitzen diese Fähigkeit nicht.
+ </string>
+ <string name="not_a_mod_error">
+ Sie sind kein Sitzungsmoderator.
+ </string>
+ <string name="muted_error">
+ Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
+ </string>
+ <string name="add_session_event">
+ Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
+ </string>
+ <string name="message_session_event">
+ Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
+ </string>
+ <string name="removed_from_group">
+ Sie wurden von der Gruppe ausgeschlossen.
+ </string>
+ <string name="close_on_no_ability">
+ Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen.
+ </string>
+</strings>
diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml
index 231798c6a6..2c56eff0a3 100644
--- a/indra/newview/skins/default/xui/de/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/de/teleport_strings.xml
@@ -1,78 +1,78 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages name="">
- <message_set name="errors">
- <message name="invalid_tport">
- Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
- </message>
- <message name="invalid_region_handoff">
- Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen eventuell neu anmelden, um die Region wechseln zu können.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
- </message>
- <message name="blocked_tport">
- Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal.
-Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an.
- </message>
- <message name="nolandmark_tport">
- Das System konnte das Landmarken-Ziel nicht finden.
- </message>
- <message name="timeout_tport">
- Das System konnte keine Teleport-Verbindung herstellen.
-Versuchen Sie es später noch einmal.
- </message>
- <message name="noaccess_tport">
- Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
- </message>
- <message name="missing_attach_tport">
- Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen.
- </message>
- <message name="too_many_uploads_tport">
- Die Asset-Warteschlange in dieser Region ist zurzeit überlastet.
-Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region.
- </message>
- <message name="expired_tport">
- Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
- </message>
- <message name="expired_region_handoff">
- Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
- </message>
- <message name="no_host">
- Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut.
- </message>
- <message name="no_inventory_host">
- Das Inventarsystem ist zurzeit nicht verfügbar.
- </message>
- </message_set>
- <message_set name="progress">
- <message name="sending_dest">
- Transport zum Ziel.
- </message>
- <message name="redirecting">
- Weiterleitung an anderes Ziel.
- </message>
- <message name="relaying">
- Weiterleitung zum Ziel.
- </message>
- <message name="sending_home">
- Zuhause-Position wird ermittelt.
- </message>
- <message name="sending_landmark">
- Landmarken-Position wird ermittelt.
- </message>
- <message name="completing">
- Teleport wird abgeschlossen.
- </message>
- <message name="resolving">
- Ziel wird ermittelt.
- </message>
- <message name="contacting">
- Verbindung zu neuer Region.
- </message>
- <message name="arriving">
- Ziel erreicht...
- </message>
- <message name="requesting">
- Teleport wird initialisiert...
- </message>
- </message_set>
-</teleport_messages>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages name="">
+ <message_set name="errors">
+ <message name="invalid_tport">
+ Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen eventuell neu anmelden, um die Region wechseln zu können.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal.
+Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an.
+ </message>
+ <message name="nolandmark_tport">
+ Das System konnte das Landmarken-Ziel nicht finden.
+ </message>
+ <message name="timeout_tport">
+ Das System konnte keine Teleport-Verbindung herstellen.
+Versuchen Sie es später noch einmal.
+ </message>
+ <message name="noaccess_tport">
+ Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
+ </message>
+ <message name="missing_attach_tport">
+ Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen.
+ </message>
+ <message name="too_many_uploads_tport">
+ Die Asset-Warteschlange in dieser Region ist zurzeit überlastet.
+Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region.
+ </message>
+ <message name="expired_tport">
+ Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
+ </message>
+ <message name="expired_region_handoff">
+ Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
+ </message>
+ <message name="no_host">
+ Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut.
+ </message>
+ <message name="no_inventory_host">
+ Das Inventarsystem ist zurzeit nicht verfügbar.
+ </message>
+ </message_set>
+ <message_set name="progress">
+ <message name="sending_dest">
+ Transport zum Ziel.
+ </message>
+ <message name="redirecting">
+ Weiterleitung an anderes Ziel.
+ </message>
+ <message name="relaying">
+ Weiterleitung zum Ziel.
+ </message>
+ <message name="sending_home">
+ Zuhause-Position wird ermittelt.
+ </message>
+ <message name="sending_landmark">
+ Landmarken-Position wird ermittelt.
+ </message>
+ <message name="completing">
+ Teleport wird abgeschlossen.
+ </message>
+ <message name="resolving">
+ Ziel wird ermittelt.
+ </message>
+ <message name="contacting">
+ Verbindung zu neuer Region.
+ </message>
+ <message name="arriving">
+ Ziel erreicht...
+ </message>
+ <message name="requesting">
+ Teleport wird initialisiert...
+ </message>
+ </message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index a731996a1a..ef0bf72058 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -1,105 +1,105 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu
- create_jump_keys="true"
- layout="topleft"
- mouse_opaque="false"
- visible="false"
- name="Gear Menu">
- <menu_item_call
- label="View Profile"
- enabled="true"
- name="view_profile">
- <menu_item_call.on_click
- function="InspectAvatar.ViewProfile"/>
- </menu_item_call>
- <menu_item_call
- label="Add Friend"
- name="add_friend">
- <menu_item_call.on_click
- function="InspectAvatar.AddFriend"/>
- <menu_item_call.on_enable
- function="InspectAvatar.Gear.Enable"/>
- </menu_item_call>
- <menu_item_call
- label="IM"
- name="im">
- <menu_item_call.on_click
- function="InspectAvatar.IM"/>
- </menu_item_call>
- <menu_item_call
- label="Call"
- enabled="true"
- name="call">
- </menu_item_call>
- <menu_item_call
- label="Teleport"
- name="teleport">
- <menu_item_call.on_click
- function="InspectAvatar.Teleport"/>
- </menu_item_call>
- <menu_item_call
- label="Invite to Group"
- name="invite_to_group">
- <menu_item_call.on_click
- function="InspectAvatar.InviteToGroup"/>
- </menu_item_call>
- <menu_item_separator />
- <menu_item_call
- label="Block"
- name="block">
- <menu_item_call.on_click
- function="InspectAvatar.Block"/>
- </menu_item_call>
- <menu_item_call
- label="Report"
- name="report">
- <menu_item_call.on_click
- function="InspectAvatar.Report"/>
- </menu_item_call>
- <menu_item_call
- label="Freeze"
- name="freeze">
- <menu_item_call.on_click
- function="InspectAvatar.Freeze"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Eject"
- name="eject">
- <menu_item_call.on_click
- function="InspectAvatar.Eject"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFreezeEject"/>
- </menu_item_call>
- <menu_item_call
- label="Debug"
- name="debug">
- <menu_item_call.on_click
- function="Avatar.Debug"/>
- <menu_item_call.on_visible
- function="IsGodCustomerService"/>
- </menu_item_call>
- <menu_item_call
- label="Find On Map"
- name="find_on_map">
- <menu_item_call.on_click
- function="InspectAvatar.FindOnMap"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleFindOnMap"/>
- </menu_item_call>
- <menu_item_call
- label="Zoom In"
- name="zoom_in">
- <menu_item_call.on_click
- function="InspectAvatar.ZoomIn"/>
- <menu_item_call.on_visible
- function="InspectAvatar.VisibleZoomIn"/>
- </menu_item_call>
- <menu_item_call
- label="Pay"
- name="pay">
- <menu_item_call.on_click
- function="InspectAvatar.Pay"/>
- </menu_item_call>
-</menu>
+<?xml version="1.0" encoding="utf-8"?>
+<menu
+ create_jump_keys="true"
+ layout="topleft"
+ mouse_opaque="false"
+ visible="false"
+ name="Gear Menu">
+ <menu_item_call
+ label="View Profile"
+ enabled="true"
+ name="view_profile">
+ <menu_item_call.on_click
+ function="InspectAvatar.ViewProfile"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Add Friend"
+ name="add_friend">
+ <menu_item_call.on_click
+ function="InspectAvatar.AddFriend"/>
+ <menu_item_call.on_enable
+ function="InspectAvatar.Gear.Enable"/>
+ </menu_item_call>
+ <menu_item_call
+ label="IM"
+ name="im">
+ <menu_item_call.on_click
+ function="InspectAvatar.IM"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Call"
+ enabled="true"
+ name="call">
+ </menu_item_call>
+ <menu_item_call
+ label="Teleport"
+ name="teleport">
+ <menu_item_call.on_click
+ function="InspectAvatar.Teleport"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Invite to Group"
+ name="invite_to_group">
+ <menu_item_call.on_click
+ function="InspectAvatar.InviteToGroup"/>
+ </menu_item_call>
+ <menu_item_separator />
+ <menu_item_call
+ label="Block"
+ name="block">
+ <menu_item_call.on_click
+ function="InspectAvatar.Block"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Report"
+ name="report">
+ <menu_item_call.on_click
+ function="InspectAvatar.Report"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Freeze"
+ name="freeze">
+ <menu_item_call.on_click
+ function="InspectAvatar.Freeze"/>
+ <menu_item_call.on_visible
+ function="InspectAvatar.VisibleFreezeEject"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Eject"
+ name="eject">
+ <menu_item_call.on_click
+ function="InspectAvatar.Eject"/>
+ <menu_item_call.on_visible
+ function="InspectAvatar.VisibleFreezeEject"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Debug"
+ name="debug">
+ <menu_item_call.on_click
+ function="Avatar.Debug"/>
+ <menu_item_call.on_visible
+ function="IsGodCustomerService"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Find On Map"
+ name="find_on_map">
+ <menu_item_call.on_click
+ function="InspectAvatar.FindOnMap"/>
+ <menu_item_call.on_visible
+ function="InspectAvatar.VisibleFindOnMap"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Zoom In"
+ name="zoom_in">
+ <menu_item_call.on_click
+ function="InspectAvatar.ZoomIn"/>
+ <menu_item_call.on_visible
+ function="InspectAvatar.VisibleZoomIn"/>
+ </menu_item_call>
+ <menu_item_call
+ label="Pay"
+ name="pay">
+ <menu_item_call.on_click
+ function="InspectAvatar.Pay"/>
+ </menu_item_call>
+</menu>
diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml
index d22d58329c..2e4df92da4 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notify.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml
@@ -1,105 +1,105 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bevel_style="in"
- bg_alpha_color="0 0 0 0"
- height="90"
- label="instant_message"
- layout="topleft"
- left="0"
- name="panel_group_notify"
- top="0"
- width="305">
- <string
- name="message_max_lines_count"
- value="7" />
- <string
- name="subject_font"
- value="SANSSERIF_BIG" />
- <string
- name="date_font"
- value="SANSSERIF" />
- <panel
- background_visible="true"
- bevel_style="in"
- bg_alpha_color="black"
- follows="top"
- height="30"
- label="header"
- layout="topleft"
- left="0"
- name="header"
- top="0"
- width="305">
- <icon
- follows="left|top|right|bottom"
- height="20"
- layout="topleft"
- left="5"
- mouse_opaque="true"
- name="group_icon"
- top="5"
- width="20" />
- <text
- follows="left|top|right|bottom"
- font="SansSerifBigBold"
- height="20"
- layout="topleft"
- left_pad="10"
- name="title"
- text_color="GroupNotifyTextColor"
- top="5"
- use_ellipses="true"
- value="Sender Name / Group Name"
- width="230" />
- </panel>
- <text_editor
- allow_html="true"
- enabled="true"
- follows="left|top|bottom|right"
- height="0"
- layout="topleft"
- left="25"
- max_length="2147483647"
- name="message"
- parse_highlights="true"
- read_only="true"
- text_color="GroupNotifyTextColor"
- top="40"
- type="string"
- use_ellipses="true"
- value="message"
- width="270"
- word_wrap="true" >
- </text_editor>
- <icon
- bottom="60"
- follows="left|bottom|right"
- height="15"
- layout="topleft"
- left="25"
- mouse_opaque="true"
- name="attachment_icon"
- width="15" />
- <text
- bottom="60"
- follows="left|bottom|right"
- font="SansSerif"
- height="15"
- layout="topleft"
- left="45"
- name="attachment"
- text_color="GroupNotifyTextColor"
- value="Attachment"
- use_ellipses="true"
- width="250" />
- <button
- bottom="85"
- follows="bottom"
- height="20"
- label="OK"
- layout="topleft"
- left="25"
- name="btn_ok"
- width="70" />
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="true"
+ bevel_style="in"
+ bg_alpha_color="0 0 0 0"
+ height="90"
+ label="instant_message"
+ layout="topleft"
+ left="0"
+ name="panel_group_notify"
+ top="0"
+ width="305">
+ <string
+ name="message_max_lines_count"
+ value="7" />
+ <string
+ name="subject_font"
+ value="SANSSERIF_BIG" />
+ <string
+ name="date_font"
+ value="SANSSERIF" />
+ <panel
+ background_visible="true"
+ bevel_style="in"
+ bg_alpha_color="black"
+ follows="top"
+ height="30"
+ label="header"
+ layout="topleft"
+ left="0"
+ name="header"
+ top="0"
+ width="305">
+ <icon
+ follows="left|top|right|bottom"
+ height="20"
+ layout="topleft"
+ left="5"
+ mouse_opaque="true"
+ name="group_icon"
+ top="5"
+ width="20" />
+ <text
+ follows="left|top|right|bottom"
+ font="SansSerifBigBold"
+ height="20"
+ layout="topleft"
+ left_pad="10"
+ name="title"
+ text_color="GroupNotifyTextColor"
+ top="5"
+ use_ellipses="true"
+ value="Sender Name / Group Name"
+ width="230" />
+ </panel>
+ <text_editor
+ allow_html="true"
+ enabled="true"
+ follows="left|top|bottom|right"
+ height="0"
+ layout="topleft"
+ left="25"
+ max_length="2147483647"
+ name="message"
+ parse_highlights="true"
+ read_only="true"
+ text_color="GroupNotifyTextColor"
+ top="40"
+ type="string"
+ use_ellipses="true"
+ value="message"
+ width="270"
+ word_wrap="true" >
+ </text_editor>
+ <icon
+ bottom="60"
+ follows="left|bottom|right"
+ height="15"
+ layout="topleft"
+ left="25"
+ mouse_opaque="true"
+ name="attachment_icon"
+ width="15" />
+ <text
+ bottom="60"
+ follows="left|bottom|right"
+ font="SansSerif"
+ height="15"
+ layout="topleft"
+ left="45"
+ name="attachment"
+ text_color="GroupNotifyTextColor"
+ value="Attachment"
+ use_ellipses="true"
+ width="250" />
+ <button
+ bottom="85"
+ follows="bottom"
+ height="20"
+ label="OK"
+ layout="topleft"
+ left="25"
+ name="btn_ok"
+ width="70" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index fcee0ef953..a4149c174f 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -1,467 +1,467 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- follows="all"
- height="400"
- label="Things"
- layout="topleft"
- min_height="350"
- min_width="240"
- name="main inventory panel"
- width="330">
- <panel.string
- name="Title">
- Things
- </panel.string>
- <filter_editor
- text_pad_left="12"
- follows="left|top|right"
- font="SanSerif"
- height="20"
- label="Filter"
- layout="topleft"
- left="15"
- name="inventory search editor"
- top="34"
- width="300" />
- <tab_container
- follows="left|top|right|bottom"
- height="300"
- layout="topleft"
- left_delta="-4"
- name="inventory filter tabs"
- tab_position="top"
- top_pad="4"
- width="305">
- <inventory_panel
- follows="left|top|right|bottom"
- height="295"
- label="All Items"
- layout="topleft"
- left="1"
- name="All Items"
- top="16"
- width="290" />
- <inventory_panel
- follows="left|top|right|bottom"
- height="295"
- label="Recent Items"
- layout="topleft"
- left_delta="0"
- name="Recent Items"
- top_delta="0"
- width="290" />
- </tab_container>
-
- <panel
- background_visible="true"
- bevel_style="none"
- bottom="0"
- follows="left|right|bottom"
- height="30"
- layout="bottomleft"
- left="0"
- visible="true"
- name="bottom_panel"
- width="330">
- <button
- follows="bottom|left"
- tool_tip="Show additional options"
- height="18"
- image_disabled="OptionsMenu_Disabled"
- image_selected="OptionsMenu_Press"
- image_unselected="OptionsMenu_Off"
- layout="topleft"
- left="10"
- name="options_gear_btn"
- picture_style="true"
- top="6"
- width="18" />
- <button
- follows="bottom|left"
- height="18"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- image_disabled="AddItem_Disabled"
- layout="topleft"
- left_pad="5"
- name="add_btn"
- picture_style="true"
- tool_tip="Add new item"
- width="18" />
- <dnd_button
- follows="bottom|right"
- height="18"
- image_selected="TrashItem_Press"
- image_unselected="TrashItem_Off"
- layout="topleft"
- right="-5"
- name="trash_btn"
- picture_style="true"
- tool_tip="Remove selected item"
- top="6"
- width="18" />
- </panel>
-
- <menu_bar
- bg_visible="false"
- follows="left|top|right"
- height="18"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- name="Inventory Menu"
- top="15"
- visible="true"
- width="290">
- <menu
- height="101"
- label="File"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="File"
- tear_off="true"
- top="-117"
- width="128">
- <menu_item_call
- label="Open"
- layout="topleft"
- name="Open">
- <menu_item_call.on_click
- function="Inventory.DoToSelected"
- parameter="open" />
- </menu_item_call>
- <menu
- create_jump_keys="true"
- label="Upload"
- layout="topleft"
- name="upload"
- tear_off="true">
- <menu_item_call
- label="Image (L$[COST])..."
- layout="topleft"
- name="Upload Image"
- shortcut="control|U">
- <menu_item_call.on_click
- function="File.UploadImage"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUpload" />
- </menu_item_call>
- <menu_item_call
- label="Sound (L$[COST])..."
- layout="topleft"
- name="Upload Sound">
- <menu_item_call.on_click
- function="File.UploadSound"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUpload" />
- </menu_item_call>
- <menu_item_call
- label="Animation (L$[COST])..."
- layout="topleft"
- name="Upload Animation">
- <menu_item_call.on_click
- function="File.UploadAnim"
- parameter="" />
- <menu_item_call.on_enable
- function="File.EnableUpload" />
- </menu_item_call>
- <menu_item_call
- label="Bulk (L$[COST] per file)..."
- layout="topleft"
- name="Bulk Upload">
- <menu_item_call.on_click
- function="File.UploadBulk"
- parameter="" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft" />
- </menu>
- <menu_item_separator
- layout="topleft" />
- <menu_item_call
- label="New Window"
- layout="topleft"
- name="New Window">
- <menu_item_call.on_click
- function="Inventory.NewWindow" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft"
- name="separator2" />
- <menu_item_call
- label="Show Filters"
- layout="topleft"
- name="Show Filters">
- <menu_item_call.on_click
- function="Inventory.ShowFilters" />
- </menu_item_call>
- <menu_item_call
- label="Reset Filters"
- layout="topleft"
- name="Reset Current">
- <menu_item_call.on_click
- function="Inventory.ResetFilter" />
- </menu_item_call>
- <menu_item_call
- label="Close All Folders"
- layout="topleft"
- name="Close All Folders">
- <menu_item_call.on_click
- function="Inventory.CloseAllFolders" />
- </menu_item_call>
- <menu_item_separator
- layout="topleft"
- name="separator3" />
- <menu_item_call
- label="Empty Trash"
- layout="topleft"
- name="Empty Trash">
- <menu_item_call.on_click
- function="Inventory.EmptyTrash" />
- </menu_item_call>
- <menu_item_call
- label="Empty Lost And Found"
- layout="topleft"
- name="Empty Lost And Found">
- <menu_item_call.on_click
- function="Inventory.EmptyLostAndFound" />
- </menu_item_call>
- </menu>
- <menu
- height="121"
- label="Create"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="Create"
- tear_off="true"
- top="-201"
- width="121">
- <menu_item_call
- label="New Folder"
- layout="topleft"
- name="New Folder">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="category" />
- </menu_item_call>
- <menu_item_call
- label="New Script"
- layout="topleft"
- name="New Script">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="lsl" />
- </menu_item_call>
- <menu_item_call
- label="New Note"
- layout="topleft"
- name="New Note">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="notecard" />
- </menu_item_call>
- <menu_item_call
- label="New Gesture"
- layout="topleft"
- name="New Gesture">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="gesture" />
- </menu_item_call>
- <menu
- height="175"
- label="New Clothes"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- name="New Clothes"
- top_pad="514"
- width="125">
- <menu_item_call
- label="New Shirt"
- layout="topleft"
- name="New Shirt">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="shirt" />
- </menu_item_call>
- <menu_item_call
- label="New Pants"
- layout="topleft"
- name="New Pants">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="pants" />
- </menu_item_call>
- <menu_item_call
- label="New Shoes"
- layout="topleft"
- name="New Shoes">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="shoes" />
- </menu_item_call>
- <menu_item_call
- label="New Socks"
- layout="topleft"
- name="New Socks">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="socks" />
- </menu_item_call>
- <menu_item_call
- label="New Jacket"
- layout="topleft"
- name="New Jacket">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="jacket" />
- </menu_item_call>
- <menu_item_call
- label="New Skirt"
- layout="topleft"
- name="New Skirt">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="skirt" />
- </menu_item_call>
- <menu_item_call
- label="New Gloves"
- layout="topleft"
- name="New Gloves">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="gloves" />
- </menu_item_call>
- <menu_item_call
- label="New Undershirt"
- layout="topleft"
- name="New Undershirt">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="undershirt" />
- </menu_item_call>
- <menu_item_call
- label="New Underpants"
- layout="topleft"
- name="New Underpants">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="underpants" />
- </menu_item_call>
- <menu_item_call
- label="New Alpha"
- layout="topleft"
- name="New Alpha">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="alpha" />
- </menu_item_call>
- <menu_item_call
- label="New Tattoo"
- layout="topleft"
- name="New Tattoo">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="tattoo" />
- </menu_item_call>
- </menu>
- <menu
- height="85"
- label="New Body Parts"
- layout="topleft"
- left_delta="0"
- mouse_opaque="false"
- name="New Body Parts"
- top_pad="514"
- width="118">
- <menu_item_call
- label="New Shape"
- layout="topleft"
- name="New Shape">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="shape" />
- </menu_item_call>
- <menu_item_call
- label="New Skin"
- layout="topleft"
- name="New Skin">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="skin" />
- </menu_item_call>
- <menu_item_call
- label="New Hair"
- layout="topleft"
- name="New Hair">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="hair" />
- </menu_item_call>
- <menu_item_call
- label="New Eyes"
- layout="topleft"
- name="New Eyes">
- <menu_item_call.on_click
- function="Inventory.DoCreate"
- parameter="eyes" />
- </menu_item_call>
- </menu>
- </menu>
- <menu
- height="49"
- label="Sort"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="Sort"
- tear_off="true"
- top="-113"
- width="118">
- <menu_item_check
- control_name="Inventory.SortByName"
- label="By Name"
- layout="topleft"
- name="By Name">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="name" />
- </menu_item_check>
- <menu_item_check
- control_name="Inventory.SortByDate"
- label="By Date"
- layout="topleft"
- name="By Date">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="date" />
- </menu_item_check>
- <menu_item_separator
- layout="topleft" />
- <menu_item_check
- control_name="Inventory.FoldersAlwaysByName"
- label="Folders Always By Name"
- layout="topleft"
- name="Folders Always By Name">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="foldersalwaysbyname" />
- </menu_item_check>
- <menu_item_check
- control_name="Inventory.SystemFoldersToTop"
- label="System Folders To Top"
- layout="topleft"
- name="System Folders To Top">
- <menu_item_check.on_click
- function="Inventory.SetSortBy"
- parameter="systemfolderstotop" />
- </menu_item_check>
- </menu>
- </menu_bar>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="true"
+ follows="all"
+ height="400"
+ label="Things"
+ layout="topleft"
+ min_height="350"
+ min_width="240"
+ name="main inventory panel"
+ width="330">
+ <panel.string
+ name="Title">
+ Things
+ </panel.string>
+ <filter_editor
+ text_pad_left="12"
+ follows="left|top|right"
+ font="SanSerif"
+ height="20"
+ label="Filter"
+ layout="topleft"
+ left="15"
+ name="inventory search editor"
+ top="34"
+ width="300" />
+ <tab_container
+ follows="left|top|right|bottom"
+ height="300"
+ layout="topleft"
+ left_delta="-4"
+ name="inventory filter tabs"
+ tab_position="top"
+ top_pad="4"
+ width="305">
+ <inventory_panel
+ follows="left|top|right|bottom"
+ height="295"
+ label="All Items"
+ layout="topleft"
+ left="1"
+ name="All Items"
+ top="16"
+ width="290" />
+ <inventory_panel
+ follows="left|top|right|bottom"
+ height="295"
+ label="Recent Items"
+ layout="topleft"
+ left_delta="0"
+ name="Recent Items"
+ top_delta="0"
+ width="290" />
+ </tab_container>
+
+ <panel
+ background_visible="true"
+ bevel_style="none"
+ bottom="0"
+ follows="left|right|bottom"
+ height="30"
+ layout="bottomleft"
+ left="0"
+ visible="true"
+ name="bottom_panel"
+ width="330">
+ <button
+ follows="bottom|left"
+ tool_tip="Show additional options"
+ height="18"
+ image_disabled="OptionsMenu_Disabled"
+ image_selected="OptionsMenu_Press"
+ image_unselected="OptionsMenu_Off"
+ layout="topleft"
+ left="10"
+ name="options_gear_btn"
+ picture_style="true"
+ top="6"
+ width="18" />
+ <button
+ follows="bottom|left"
+ height="18"
+ image_selected="AddItem_Press"
+ image_unselected="AddItem_Off"
+ image_disabled="AddItem_Disabled"
+ layout="topleft"
+ left_pad="5"
+ name="add_btn"
+ picture_style="true"
+ tool_tip="Add new item"
+ width="18" />
+ <dnd_button
+ follows="bottom|right"
+ height="18"
+ image_selected="TrashItem_Press"
+ image_unselected="TrashItem_Off"
+ layout="topleft"
+ right="-5"
+ name="trash_btn"
+ picture_style="true"
+ tool_tip="Remove selected item"
+ top="6"
+ width="18" />
+ </panel>
+
+ <menu_bar
+ bg_visible="false"
+ follows="left|top|right"
+ height="18"
+ layout="topleft"
+ left_delta="0"
+ mouse_opaque="false"
+ name="Inventory Menu"
+ top="15"
+ visible="true"
+ width="290">
+ <menu
+ height="101"
+ label="File"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="File"
+ tear_off="true"
+ top="-117"
+ width="128">
+ <menu_item_call
+ label="Open"
+ layout="topleft"
+ name="Open">
+ <menu_item_call.on_click
+ function="Inventory.DoToSelected"
+ parameter="open" />
+ </menu_item_call>
+ <menu
+ create_jump_keys="true"
+ label="Upload"
+ layout="topleft"
+ name="upload"
+ tear_off="true">
+ <menu_item_call
+ label="Image (L$[COST])..."
+ layout="topleft"
+ name="Upload Image"
+ shortcut="control|U">
+ <menu_item_call.on_click
+ function="File.UploadImage"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="File.EnableUpload" />
+ </menu_item_call>
+ <menu_item_call
+ label="Sound (L$[COST])..."
+ layout="topleft"
+ name="Upload Sound">
+ <menu_item_call.on_click
+ function="File.UploadSound"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="File.EnableUpload" />
+ </menu_item_call>
+ <menu_item_call
+ label="Animation (L$[COST])..."
+ layout="topleft"
+ name="Upload Animation">
+ <menu_item_call.on_click
+ function="File.UploadAnim"
+ parameter="" />
+ <menu_item_call.on_enable
+ function="File.EnableUpload" />
+ </menu_item_call>
+ <menu_item_call
+ label="Bulk (L$[COST] per file)..."
+ layout="topleft"
+ name="Bulk Upload">
+ <menu_item_call.on_click
+ function="File.UploadBulk"
+ parameter="" />
+ </menu_item_call>
+ <menu_item_separator
+ layout="topleft" />
+ </menu>
+ <menu_item_separator
+ layout="topleft" />
+ <menu_item_call
+ label="New Window"
+ layout="topleft"
+ name="New Window">
+ <menu_item_call.on_click
+ function="Inventory.NewWindow" />
+ </menu_item_call>
+ <menu_item_separator
+ layout="topleft"
+ name="separator2" />
+ <menu_item_call
+ label="Show Filters"
+ layout="topleft"
+ name="Show Filters">
+ <menu_item_call.on_click
+ function="Inventory.ShowFilters" />
+ </menu_item_call>
+ <menu_item_call
+ label="Reset Filters"
+ layout="topleft"
+ name="Reset Current">
+ <menu_item_call.on_click
+ function="Inventory.ResetFilter" />
+ </menu_item_call>
+ <menu_item_call
+ label="Close All Folders"
+ layout="topleft"
+ name="Close All Folders">
+ <menu_item_call.on_click
+ function="Inventory.CloseAllFolders" />
+ </menu_item_call>
+ <menu_item_separator
+ layout="topleft"
+ name="separator3" />
+ <menu_item_call
+ label="Empty Trash"
+ layout="topleft"
+ name="Empty Trash">
+ <menu_item_call.on_click
+ function="Inventory.EmptyTrash" />
+ </menu_item_call>
+ <menu_item_call
+ label="Empty Lost And Found"
+ layout="topleft"
+ name="Empty Lost And Found">
+ <menu_item_call.on_click
+ function="Inventory.EmptyLostAndFound" />
+ </menu_item_call>
+ </menu>
+ <menu
+ height="121"
+ label="Create"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="Create"
+ tear_off="true"
+ top="-201"
+ width="121">
+ <menu_item_call
+ label="New Folder"
+ layout="topleft"
+ name="New Folder">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="category" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Script"
+ layout="topleft"
+ name="New Script">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="lsl" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Note"
+ layout="topleft"
+ name="New Note">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="notecard" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Gesture"
+ layout="topleft"
+ name="New Gesture">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="gesture" />
+ </menu_item_call>
+ <menu
+ height="175"
+ label="New Clothes"
+ layout="topleft"
+ left_delta="0"
+ mouse_opaque="false"
+ name="New Clothes"
+ top_pad="514"
+ width="125">
+ <menu_item_call
+ label="New Shirt"
+ layout="topleft"
+ name="New Shirt">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="shirt" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Pants"
+ layout="topleft"
+ name="New Pants">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="pants" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Shoes"
+ layout="topleft"
+ name="New Shoes">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="shoes" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Socks"
+ layout="topleft"
+ name="New Socks">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="socks" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Jacket"
+ layout="topleft"
+ name="New Jacket">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="jacket" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Skirt"
+ layout="topleft"
+ name="New Skirt">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="skirt" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Gloves"
+ layout="topleft"
+ name="New Gloves">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="gloves" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Undershirt"
+ layout="topleft"
+ name="New Undershirt">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="undershirt" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Underpants"
+ layout="topleft"
+ name="New Underpants">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="underpants" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Alpha"
+ layout="topleft"
+ name="New Alpha">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="alpha" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Tattoo"
+ layout="topleft"
+ name="New Tattoo">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="tattoo" />
+ </menu_item_call>
+ </menu>
+ <menu
+ height="85"
+ label="New Body Parts"
+ layout="topleft"
+ left_delta="0"
+ mouse_opaque="false"
+ name="New Body Parts"
+ top_pad="514"
+ width="118">
+ <menu_item_call
+ label="New Shape"
+ layout="topleft"
+ name="New Shape">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="shape" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Skin"
+ layout="topleft"
+ name="New Skin">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="skin" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Hair"
+ layout="topleft"
+ name="New Hair">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="hair" />
+ </menu_item_call>
+ <menu_item_call
+ label="New Eyes"
+ layout="topleft"
+ name="New Eyes">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="eyes" />
+ </menu_item_call>
+ </menu>
+ </menu>
+ <menu
+ height="49"
+ label="Sort"
+ layout="topleft"
+ left="0"
+ mouse_opaque="false"
+ name="Sort"
+ tear_off="true"
+ top="-113"
+ width="118">
+ <menu_item_check
+ control_name="Inventory.SortByName"
+ label="By Name"
+ layout="topleft"
+ name="By Name">
+ <menu_item_check.on_click
+ function="Inventory.SetSortBy"
+ parameter="name" />
+ </menu_item_check>
+ <menu_item_check
+ control_name="Inventory.SortByDate"
+ label="By Date"
+ layout="topleft"
+ name="By Date">
+ <menu_item_check.on_click
+ function="Inventory.SetSortBy"
+ parameter="date" />
+ </menu_item_check>
+ <menu_item_separator
+ layout="topleft" />
+ <menu_item_check
+ control_name="Inventory.FoldersAlwaysByName"
+ label="Folders Always By Name"
+ layout="topleft"
+ name="Folders Always By Name">
+ <menu_item_check.on_click
+ function="Inventory.SetSortBy"
+ parameter="foldersalwaysbyname" />
+ </menu_item_check>
+ <menu_item_check
+ control_name="Inventory.SystemFoldersToTop"
+ label="System Folders To Top"
+ layout="topleft"
+ name="System Folders To Top">
+ <menu_item_check.on_click
+ function="Inventory.SetSortBy"
+ parameter="systemfolderstotop" />
+ </menu_item_check>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 377d34cdcc..b8b3d993bd 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -1,127 +1,127 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- follows="all"
- height="570"
- label="Things"
- layout="topleft"
- min_height="350"
- min_width="240"
- name="objects panel"
- width="333">
- <panel
- follows="all"
- layout="topleft"
- left="0"
- name="sidepanel__inventory_panel"
- top="0"
- label=""
- height="570"
- visible="true"
- width="330">
- <panel
- class="panel_main_inventory"
- filename="panel_main_inventory.xml"
- follows="all"
- layout="topleft"
- left="0"
- name="panel_main_inventory"
- top="0"
- label=""
- height="500"
- width="330" />
- <panel
- height="25"
- layout="bottomright"
- help_topic="item_button_tab"
- name="button_panel"
- left="5"
- bottom="5"
- width="313">
- <button
- enabled="true"
- follows="bottom|left"
- font="SansSerifSmall"
- height="25"
- label="Info"
- layout="topleft"
- left="0"
- name="info_btn"
- top="0"
- width="60" />
- <button
- enabled="true"
- follows="bottom|left"
- font="SansSerifSmall"
- height="25"
- label="Share"
- layout="topleft"
- left_pad="5"
- name="share_btn"
- top="0"
- width="60" />
- <button
- enabled="false"
- follows="bottom|left"
- font="SansSerifSmall"
- height="25"
- label="Wear"
- layout="topleft"
- left="130"
- name="wear_btn"
- top="0"
- width="60" />
- <button
- enabled="false"
- follows="bottom|left"
- font="SansSerifSmall"
- height="25"
- label="Play"
- layout="topleft"
- name="play_btn"
- left="130"
- top="0"
- width="50" />
- <button
- enabled="false"
- follows="bottom|left"
- font="SansSerifSmall"
- height="25"
- label="Teleport"
- layout="topleft"
- left="130"
- name="teleport_btn"
- top="0"
- width="77" />
- </panel>
- </panel>
-
- <panel
- follows="all"
- layout="topleft"
- left="0"
- class="sidepanel_item_info"
- filename="sidepanel_item_info.xml"
- name="sidepanel__item_panel"
- top="0"
- label=""
- height="570"
- visible="false"
- width="330">
- </panel>
-
- <panel
- follows="all"
- layout="topleft"
- left="0"
- class="sidepanel_task_info"
- filename="sidepanel_task_info.xml"
- name="sidepanel__task_panel"
- top="0"
- label=""
- height="570"
- visible="false"
- width="330">
- </panel>
-
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="true"
+ follows="all"
+ height="570"
+ label="Things"
+ layout="topleft"
+ min_height="350"
+ min_width="240"
+ name="objects panel"
+ width="333">
+ <panel
+ follows="all"
+ layout="topleft"
+ left="0"
+ name="sidepanel__inventory_panel"
+ top="0"
+ label=""
+ height="570"
+ visible="true"
+ width="330">
+ <panel
+ class="panel_main_inventory"
+ filename="panel_main_inventory.xml"
+ follows="all"
+ layout="topleft"
+ left="0"
+ name="panel_main_inventory"
+ top="0"
+ label=""
+ height="500"
+ width="330" />
+ <panel
+ height="25"
+ layout="bottomright"
+ help_topic="item_button_tab"
+ name="button_panel"
+ left="5"
+ bottom="5"
+ width="313">
+ <button
+ enabled="true"
+ follows="bottom|left"
+ font="SansSerifSmall"
+ height="25"
+ label="Info"
+ layout="topleft"
+ left="0"
+ name="info_btn"
+ top="0"
+ width="60" />
+ <button
+ enabled="true"
+ follows="bottom|left"
+ font="SansSerifSmall"
+ height="25"
+ label="Share"
+ layout="topleft"
+ left_pad="5"
+ name="share_btn"
+ top="0"
+ width="60" />
+ <button
+ enabled="false"
+ follows="bottom|left"
+ font="SansSerifSmall"
+ height="25"
+ label="Wear"
+ layout="topleft"
+ left="130"
+ name="wear_btn"
+ top="0"
+ width="60" />
+ <button
+ enabled="false"
+ follows="bottom|left"
+ font="SansSerifSmall"
+ height="25"
+ label="Play"
+ layout="topleft"
+ name="play_btn"
+ left="130"
+ top="0"
+ width="50" />
+ <button
+ enabled="false"
+ follows="bottom|left"
+ font="SansSerifSmall"
+ height="25"
+ label="Teleport"
+ layout="topleft"
+ left="130"
+ name="teleport_btn"
+ top="0"
+ width="77" />
+ </panel>
+ </panel>
+
+ <panel
+ follows="all"
+ layout="topleft"
+ left="0"
+ class="sidepanel_item_info"
+ filename="sidepanel_item_info.xml"
+ name="sidepanel__item_panel"
+ top="0"
+ label=""
+ height="570"
+ visible="false"
+ width="330">
+ </panel>
+
+ <panel
+ follows="all"
+ layout="topleft"
+ left="0"
+ class="sidepanel_task_info"
+ filename="sidepanel_task_info.xml"
+ name="sidepanel__task_panel"
+ top="0"
+ label=""
+ height="570"
+ visible="false"
+ width="330">
+ </panel>
+
+</panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index 0c605650fc..6ae2477304 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -1,511 +1,511 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- auto_tile="true"
- height="570"
- layout="topleft"
- name="item properties"
- help_topic="item_properties"
- save_rect="true"
- title="Inventory Item Properties"
- width="333">
- <panel.string
- name="unknown">
- (unknown)
- </panel.string>
- <panel.string
- name="public">
- (public)
- </panel.string>
- <panel.string
- name="you_can">
- You can:
- </panel.string>
- <panel.string
- name="owner_can">
- Owner can:
- </panel.string>
- <panel.string
- name="acquiredDate">
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
- </panel.string>
- <icon
- follows="top|right"
- height="18"
- image_name="Lock"
- layout="topleft"
- right="-50"
- mouse_opaque="true"
- name="IconLocked"
- top="4"
- width="18" />
- <button
- follows="top|right"
- height="25"
- image_overlay="BackArrow_Off"
- layout="topleft"
- name="back_btn"
- picture_style="true"
- right="-5"
- tab_stop="false"
- top="0"
- width="25" />
- <panel
- follows="all"
- height="500"
- label=""
- layout="topleft"
- left="5"
- help_topic=""
- top="30"
- border="1"
- width="313">
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="5"
- name="LabelItemNameTitle"
- top="5"
- width="78">
- Name:
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- follows="left|top|right"
- height="16"
- layout="topleft"
- left_delta="78"
- max_length="63"
- name="LabelItemName"
- top_delta="0"
- width="225" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="5"
- name="LabelItemDescTitle"
- top_delta="20"
- width="78">
- Description:
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- follows="left|top|right"
- height="16"
- layout="topleft"
- left_delta="78"
- max_length="127"
- name="LabelItemDesc"
- top_delta="0"
- width="225" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="10"
- name="LabelCreatorTitle"
- top="65"
- width="78">
- Creator:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left_delta="78"
- name="LabelCreatorName"
- top_delta="0"
- width="200">
- Nicole Linden
- </text>
- <button
- follows="top|right"
- font="SansSerifSmall"
- height="16"
- label="Profile..."
- layout="topleft"
- left_delta="144"
- name="BtnCreator"
- top_delta="0"
- width="78" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="10"
- name="LabelOwnerTitle"
- top="85"
- width="78">
- Owner:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left_delta="78"
- name="LabelOwnerName"
- top_delta="0"
- width="200">
- Thrax Linden
- </text>
- <button
- follows="top|right"
- font="SansSerifSmall"
- height="16"
- label="Profile..."
- layout="topleft"
- left_delta="144"
- name="BtnOwner"
- top_delta="0"
- width="78" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="10"
- name="LabelAcquiredTitle"
- top="105"
- width="78">
- Acquired:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left_delta="78"
- name="LabelAcquiredDate"
- top_delta="0"
- width="252">
- Wed May 24 12:50:46 2006
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="OwnerLabel"
- top="125"
- width="78">
- You:
- </text>
- <check_box
- height="16"
- label="Edit"
- layout="topleft"
- left_pad="5"
- name="CheckOwnerModify"
- top_delta="0"
- width="78" />
- <check_box
- height="16"
- label="Copy"
- layout="topleft"
- left_delta="0"
- name="CheckOwnerCopy"
- top_pad="5"
- width="88" />
- <check_box
- height="16"
- label="Resell"
- layout="topleft"
- left_delta="0"
- name="CheckOwnerTransfer"
- top_pad="5"
- width="106" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="AnyoneLabel"
- top_pad="5"
- width="78">
- Anyone:
- </text>
- <check_box
- height="16"
- label="Copy"
- layout="topleft"
- left_pad="5"
- name="CheckEveryoneCopy"
- top_delta="0"
- width="130" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="GroupLabel"
- top_pad="5"
- width="78">
- Group:
- </text>
- <check_box
- height="16"
- label="Share"
- layout="topleft"
- left_pad="5"
- name="CheckShareWithGroup"
- top_delta="5"
- width="106" />
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="NextOwnerLabel"
- top_pad="5"
- width="78">
- Next owner:
- </text>
- <check_box
- height="16"
- label="Edit"
- layout="topleft"
- left_pad="5"
- name="CheckNextOwnerModify"
- top_delta="0"
- width="78" />
- <check_box
- height="16"
- label="Copy"
- layout="topleft"
- left_delta="0"
- name="CheckNextOwnerCopy"
- top_pad="5"
- width="88" />
- <check_box
- height="16"
- label="Resell"
- layout="topleft"
- left_delta="0"
- name="CheckNextOwnerTransfer"
- top_pad="5"
- width="106" />
- <check_box
- height="16"
- label="For Sale"
- layout="topleft"
- left="10"
- name="CheckPurchase"
- top_pad="5"
- width="78" />
- <combo_box
- height="19"
- left_pad="5"
- layout="topleft"
- follows="left|top"
- name="combobox sale copy"
- width="90">
- <combo_box.item
- label="Copy"
- name="Copy"
- value="Copy" />
- <combo_box.item
- label="Original"
- name="Original"
- value="Original" />
- </combo_box>
- <spinner
- follows="left|top"
- decimal_digits="0"
- increment="1"
- control_name="Edit Cost"
- name="Edit Cost"
- label="Price: L$"
- label_width="60"
- left="10"
- width="180"
- min_val="1"
- height="19"
- max_val="999999999"
- top_pad="5"/>
- <!--line_editor
- border_style="line"
- border_thickness="1"
- follows="left|top|right"
- height="16"
- layout="topleft"
- left_pad="5"
- max_length="25"
- name="EditPrice"
- top_delta="0"
- width="242" /-->
- <!--text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="BaseMaskDebug"
- top="155"
- width="330">
- B:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="60"
- name="OwnerMaskDebug"
- top_delta="0"
- width="270">
- O:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="60"
- name="GroupMaskDebug"
- top_delta="0"
- width="210">
- G:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="60"
- name="EveryoneMaskDebug"
- top_delta="0"
- width="150">
- E:
- </text>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left_delta="60"
- name="NextMaskDebug"
- top_delta="0"
- width="90">
- N:
- </text-->
- <!--text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="10"
- name="SaleLabel"
- top_pad="5"
- width="330">
- Mark Item:
- </text-->
- <!--radio_group
- draw_border="false"
- follows="left|top|right"
- height="16"
- layout="topleft"
- left_delta="78"
- name="RadioSaleType"
- top_delta="0"
- width="252">
- <radio_item
- height="16"
- label="Original"
- layout="topleft"
- left="0"
- name="radio"
- top="0"
- width="70" />
- <radio_item
- height="16"
- label="Copy"
- layout="topleft"
- left_delta="60"
- name="radio2"
- top_delta="0"
- width="70" />
- </radio_group-->
- <!--text
- type="string"
- length="1"
- follows="left|top"
- height="16"
- layout="topleft"
- left="10"
- name="TextPrice"
- top_pad="5"
- width="78">
- Price: L$
- </text-->
- </panel>
- <panel
- height="25"
- layout="bottomright"
- help_topic="button_tab"
- name="button_panel"
- left="5"
- bottom="5"
- width="313">
- <button
- follows="bottom|left"
- font="SansSerifSmall"
- height="25"
- label="Edit"
- layout="topleft"
- left="0"
- name="edit_btn"
- top="0"
- width="50" />
- <button
- follows="bottom|right"
- font="SansSerifSmall"
- height="25"
- label="Cancel"
- layout="topleft"
- name="cancel_btn"
- right="-1"
- top="0"
- width="70" />
- <button
- follows="bottom|right"
- font="SansSerifSmall"
- height="25"
- label="Save"
- layout="topleft"
- name="save_btn"
- left_pad="-135"
- top="0"
- width="60" />
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ auto_tile="true"
+ height="570"
+ layout="topleft"
+ name="item properties"
+ help_topic="item_properties"
+ save_rect="true"
+ title="Inventory Item Properties"
+ width="333">
+ <panel.string
+ name="unknown">
+ (unknown)
+ </panel.string>
+ <panel.string
+ name="public">
+ (public)
+ </panel.string>
+ <panel.string
+ name="you_can">
+ You can:
+ </panel.string>
+ <panel.string
+ name="owner_can">
+ Owner can:
+ </panel.string>
+ <panel.string
+ name="acquiredDate">
+ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ </panel.string>
+ <icon
+ follows="top|right"
+ height="18"
+ image_name="Lock"
+ layout="topleft"
+ right="-50"
+ mouse_opaque="true"
+ name="IconLocked"
+ top="4"
+ width="18" />
+ <button
+ follows="top|right"
+ height="25"
+ image_overlay="BackArrow_Off"
+ layout="topleft"
+ name="back_btn"
+ picture_style="true"
+ right="-5"
+ tab_stop="false"
+ top="0"
+ width="25" />
+ <panel
+ follows="all"
+ height="500"
+ label=""
+ layout="topleft"
+ left="5"
+ help_topic=""
+ top="30"
+ border="1"
+ width="313">
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="5"
+ name="LabelItemNameTitle"
+ top="5"
+ width="78">
+ Name:
+ </text>
+ <line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|top|right"
+ height="16"
+ layout="topleft"
+ left_delta="78"
+ max_length="63"
+ name="LabelItemName"
+ top_delta="0"
+ width="225" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="5"
+ name="LabelItemDescTitle"
+ top_delta="20"
+ width="78">
+ Description:
+ </text>
+ <line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|top|right"
+ height="16"
+ layout="topleft"
+ left_delta="78"
+ max_length="127"
+ name="LabelItemDesc"
+ top_delta="0"
+ width="225" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="LabelCreatorTitle"
+ top="65"
+ width="78">
+ Creator:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left_delta="78"
+ name="LabelCreatorName"
+ top_delta="0"
+ width="200">
+ Nicole Linden
+ </text>
+ <button
+ follows="top|right"
+ font="SansSerifSmall"
+ height="16"
+ label="Profile..."
+ layout="topleft"
+ left_delta="144"
+ name="BtnCreator"
+ top_delta="0"
+ width="78" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="LabelOwnerTitle"
+ top="85"
+ width="78">
+ Owner:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left_delta="78"
+ name="LabelOwnerName"
+ top_delta="0"
+ width="200">
+ Thrax Linden
+ </text>
+ <button
+ follows="top|right"
+ font="SansSerifSmall"
+ height="16"
+ label="Profile..."
+ layout="topleft"
+ left_delta="144"
+ name="BtnOwner"
+ top_delta="0"
+ width="78" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="LabelAcquiredTitle"
+ top="105"
+ width="78">
+ Acquired:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left_delta="78"
+ name="LabelAcquiredDate"
+ top_delta="0"
+ width="252">
+ Wed May 24 12:50:46 2006
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="OwnerLabel"
+ top="125"
+ width="78">
+ You:
+ </text>
+ <check_box
+ height="16"
+ label="Edit"
+ layout="topleft"
+ left_pad="5"
+ name="CheckOwnerModify"
+ top_delta="0"
+ width="78" />
+ <check_box
+ height="16"
+ label="Copy"
+ layout="topleft"
+ left_delta="0"
+ name="CheckOwnerCopy"
+ top_pad="5"
+ width="88" />
+ <check_box
+ height="16"
+ label="Resell"
+ layout="topleft"
+ left_delta="0"
+ name="CheckOwnerTransfer"
+ top_pad="5"
+ width="106" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="AnyoneLabel"
+ top_pad="5"
+ width="78">
+ Anyone:
+ </text>
+ <check_box
+ height="16"
+ label="Copy"
+ layout="topleft"
+ left_pad="5"
+ name="CheckEveryoneCopy"
+ top_delta="0"
+ width="130" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="GroupLabel"
+ top_pad="5"
+ width="78">
+ Group:
+ </text>
+ <check_box
+ height="16"
+ label="Share"
+ layout="topleft"
+ left_pad="5"
+ name="CheckShareWithGroup"
+ top_delta="5"
+ width="106" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="NextOwnerLabel"
+ top_pad="5"
+ width="78">
+ Next owner:
+ </text>
+ <check_box
+ height="16"
+ label="Edit"
+ layout="topleft"
+ left_pad="5"
+ name="CheckNextOwnerModify"
+ top_delta="0"
+ width="78" />
+ <check_box
+ height="16"
+ label="Copy"
+ layout="topleft"
+ left_delta="0"
+ name="CheckNextOwnerCopy"
+ top_pad="5"
+ width="88" />
+ <check_box
+ height="16"
+ label="Resell"
+ layout="topleft"
+ left_delta="0"
+ name="CheckNextOwnerTransfer"
+ top_pad="5"
+ width="106" />
+ <check_box
+ height="16"
+ label="For Sale"
+ layout="topleft"
+ left="10"
+ name="CheckPurchase"
+ top_pad="5"
+ width="78" />
+ <combo_box
+ height="19"
+ left_pad="5"
+ layout="topleft"
+ follows="left|top"
+ name="combobox sale copy"
+ width="90">
+ <combo_box.item
+ label="Copy"
+ name="Copy"
+ value="Copy" />
+ <combo_box.item
+ label="Original"
+ name="Original"
+ value="Original" />
+ </combo_box>
+ <spinner
+ follows="left|top"
+ decimal_digits="0"
+ increment="1"
+ control_name="Edit Cost"
+ name="Edit Cost"
+ label="Price: L$"
+ label_width="60"
+ left="10"
+ width="180"
+ min_val="1"
+ height="19"
+ max_val="999999999"
+ top_pad="5"/>
+ <!--line_editor
+ border_style="line"
+ border_thickness="1"
+ follows="left|top|right"
+ height="16"
+ layout="topleft"
+ left_pad="5"
+ max_length="25"
+ name="EditPrice"
+ top_delta="0"
+ width="242" /-->
+ <!--text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="BaseMaskDebug"
+ top="155"
+ width="330">
+ B:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="60"
+ name="OwnerMaskDebug"
+ top_delta="0"
+ width="270">
+ O:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="60"
+ name="GroupMaskDebug"
+ top_delta="0"
+ width="210">
+ G:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="60"
+ name="EveryoneMaskDebug"
+ top_delta="0"
+ width="150">
+ E:
+ </text>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="60"
+ name="NextMaskDebug"
+ top_delta="0"
+ width="90">
+ N:
+ </text-->
+ <!--text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left="10"
+ name="SaleLabel"
+ top_pad="5"
+ width="330">
+ Mark Item:
+ </text-->
+ <!--radio_group
+ draw_border="false"
+ follows="left|top|right"
+ height="16"
+ layout="topleft"
+ left_delta="78"
+ name="RadioSaleType"
+ top_delta="0"
+ width="252">
+ <radio_item
+ height="16"
+ label="Original"
+ layout="topleft"
+ left="0"
+ name="radio"
+ top="0"
+ width="70" />
+ <radio_item
+ height="16"
+ label="Copy"
+ layout="topleft"
+ left_delta="60"
+ name="radio2"
+ top_delta="0"
+ width="70" />
+ </radio_group-->
+ <!--text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="16"
+ layout="topleft"
+ left="10"
+ name="TextPrice"
+ top_pad="5"
+ width="78">
+ Price: L$
+ </text-->
+ </panel>
+ <panel
+ height="25"
+ layout="bottomright"
+ help_topic="button_tab"
+ name="button_panel"
+ left="5"
+ bottom="5"
+ width="313">
+ <button
+ follows="bottom|left"
+ font="SansSerifSmall"
+ height="25"
+ label="Edit"
+ layout="topleft"
+ left="0"
+ name="edit_btn"
+ top="0"
+ width="50" />
+ <button
+ follows="bottom|right"
+ font="SansSerifSmall"
+ height="25"
+ label="Cancel"
+ layout="topleft"
+ name="cancel_btn"
+ right="-1"
+ top="0"
+ width="70" />
+ <button
+ follows="bottom|right"
+ font="SansSerifSmall"
+ height="25"
+ label="Save"
+ layout="topleft"
+ name="save_btn"
+ left_pad="-135"
+ top="0"
+ width="60" />
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
index bcf4128e01..c12dd8d58c 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Residente" />
- <string name="AcctTypeTrial"
- value="Prueba" />
- <string name="AcctTypeCharterMember"
- value="Miembro fundador" />
- <string name="AcctTypeEmployee"
- value="Empleado de Linden Lab" />
- <string name="PaymentInfoUsed"
- value="Ha usado una forma de pago" />
- <string name="PaymentInfoOnFile"
- value="Hay infor. de la forma de pago" />
- <string name="NoPaymentInfoOnFile"
- value="Sin infor. de la forma de pago" />
- <string name="AgeVerified"
- value="Edad verificada" />
- <string name="NotAgeVerified"
- value="Edad no verificada" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=es
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Compañero/a:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Mensaje en el estado ocupado:
- </text>
- </panel>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident"
+ value="Residente" />
+ <string name="AcctTypeTrial"
+ value="Prueba" />
+ <string name="AcctTypeCharterMember"
+ value="Miembro fundador" />
+ <string name="AcctTypeEmployee"
+ value="Empleado de Linden Lab" />
+ <string name="PaymentInfoUsed"
+ value="Ha usado una forma de pago" />
+ <string name="PaymentInfoOnFile"
+ value="Hay infor. de la forma de pago" />
+ <string name="NoPaymentInfoOnFile"
+ value="Sin infor. de la forma de pago" />
+ <string name="AgeVerified"
+ value="Edad verificada" />
+ <string name="NotAgeVerified"
+ value="Edad no verificada" />
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=es
+ </string>
+ <panel name="scroll_content_panel">
+ <panel name="data_panel" >
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text">
+ [SECOND_LIFE]:
+ </text>
+ </panel>
+ </panel>
+ <text name="title_partner_text" value="Compañero/a:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="text_box3">
+ Mensaje en el estado ocupado:
+ </text>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index 8cd1ec4e09..e442d09e4d 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="A PROPOS DE [APP_NAME]">
- <tab_container name="about_tab">
- <panel label="Remerciements" name="credits_panel">
- <text_editor name="credits_editor">
- Second Life existe grâce aux efforts de Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, 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, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, 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 et de nombreuses autres personnes.
-
- Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu&apos;à présent) : able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
-
-
-
- Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant
- </text_editor>
- </panel>
- <panel label="Licences" 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 et Mark Adler.
- google-perftools Copyright (c) 2005, Google Inc.
-
- Tous droits réservés. Voir licenses.txt pour plus de détails.
-
- Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="A PROPOS DE [APP_NAME]">
+ <tab_container name="about_tab">
+ <panel label="Remerciements" name="credits_panel">
+ <text_editor name="credits_editor">
+ Second Life existe grâce aux efforts de Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, 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, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, 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 et de nombreuses autres personnes.
+
+ Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu&apos;à présent) : able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
+
+
+
+ Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant
+ </text_editor>
+ </panel>
+ <panel label="Licences" 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 et Mark Adler.
+ google-perftools Copyright (c) 2005, Google Inc.
+
+ Tous droits réservés. Voir licenses.txt pour plus de détails.
+
+ Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+ </text_editor>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index d1aea074e6..e2a567ff28 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -1,480 +1,480 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="À PROPOS DU TERRAIN">
- <floater.string name="Minutes">
- [MINUTES] minutes
- </floater.string>
- <floater.string name="Minute">
- minute
- </floater.string>
- <floater.string name="Seconds">
- [SECONDS] secondes
- </floater.string>
- <tab_container name="landtab">
- <panel label="Général" name="land_general_panel">
- <panel.string name="new users only">
- Nouveaux utilisateurs uniquement
- </panel.string>
- <panel.string name="anyone">
- Tout le monde
- </panel.string>
- <panel.string name="area_text">
- Surface
- </panel.string>
- <panel.string name="area_size_text">
- [AREA] m²
- </panel.string>
- <panel.string name="auction_id_text">
- Code de l&apos;enchère : [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- Pour modifier ce terrain, vous devez approuver votre achat.
- </panel.string>
- <panel.string name="group_owned_text">
- (propriété du groupe)
- </panel.string>
- <panel.string name="profile_text">
- Profil...
- </panel.string>
- <panel.string name="info_text">
- Infos...
- </panel.string>
- <panel.string name="public_text">
- (public)
- </panel.string>
- <panel.string name="none_text">
- (aucun)
- </panel.string>
- <panel.string name="sale_pending_text">
- (vente en cours)
- </panel.string>
- <panel.string name="no_selection_text">
- Aucune parcelle sélectionnée.
-Allez dans le menu Monde &gt; À propos du terrain ou sélectionnez une autre parcelle pour en afficher les détails.
- </panel.string>
- <text name="Name:">
- Nom :
- </text>
- <line_editor name="Name"/>
- <text name="Description:">
- Description :
- </text>
- <text_editor name="Description"/>
- <text name="LandType">
- Type :
- </text>
- <text name="LandTypeText">
- Continent / Homestead
- </text>
- <text name="ContentRating">
- Catégorie :
- </text>
- <text name="ContentRatingText">
- Adult
- </text>
- <text name="Owner:">
- Propriétaire :
- </text>
- <text name="OwnerText">
- Leyla Linden
- </text>
- <button label="Profil..." label_selected="Profil..." name="Profile..."/>
- <text name="Group:">
- Groupe :
- </text>
- <text name="GroupText"/>
- <button label="Définir..." label_selected="Définir..." name="Set..."/>
- <check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier peut céder ce terrain au groupe. Il viendra alors s&apos;ajouter au patrimoine du groupe."/>
- <button label="Céder..." label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d&apos;officier dans le groupe sélectionné."/>
- <check_box label="Le propriétaire contribue en cédant du terrain" name="check contrib" tool_tip="Lorsqu&apos;un terrain est cédé au groupe, l&apos;ancien propriétaire fait également un don de terrain suffisant."/>
- <text name="For Sale:">
- À vendre :
- </text>
- <text name="Not for sale.">
- Pas à vendre
- </text>
- <text name="For Sale: Price L$[PRICE].">
- Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²).
- </text>
- <text name="SalePending"/>
- <button label="Vendre le terrain..." label_selected="Vendre le terrain..." name="Sell Land..."/>
- <text name="For sale to">
- À vendre à : [BUYER]
- </text>
- <text name="Sell with landowners objects in parcel.">
- Objets inclus dans la vente.
- </text>
- <text name="Selling with no objects in parcel.">
- Objets non inclus dans la vente.
- </text>
- <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" left="275" name="Cancel Land Sale" width="165"/>
- <text name="Claimed:">
- Acquis :
- </text>
- <text name="DateClaimText">
- Tue Aug 15 13:47:25 2006
- </text>
- <text name="PriceLabel">
- Superficie :
- </text>
- <text name="PriceText">
- 4048 m²
- </text>
- <text name="Traffic:">
- Trafic :
- </text>
- <text name="DwellText">
- 0
- </text>
- <button label="Acheter le terrain..." label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/>
- <button label="Acheter pour le groupe..." label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
- <button label="Acheter un pass..." label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
- <button label="Abandonner le terrain..." label_selected="Abandonner le terrain..." name="Abandon Land..."/>
- <button label="Redemander le terrain..." label_selected="Redemander le terrain…" name="Reclaim Land..."/>
- <button label="Vente Linden..." label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
- </panel>
- <panel label="Règlement" name="land_covenant_panel">
- <panel.string name="can_resell">
- Le terrain acheté dans cette région peut être revendu.
- </panel.string>
- <panel.string name="can_not_resell">
- Le terrain acheté dans cette région ne peut pas être revendu.
- </panel.string>
- <panel.string name="can_change">
- Le terrain acheté dans cette région peut être fusionné
-ou divisé.
- </panel.string>
- <panel.string name="can_not_change">
- Le terrain acheté dans cette région ne peut pas être fusionné
-ou divisé.
- </panel.string>
- <text name="estate_section_lbl">
- Domaine :
- </text>
- <text name="estate_name_lbl">
- Nom :
- </text>
- <text name="estate_name_text">
- continent
- </text>
- <text name="estate_owner_lbl">
- Propriétaire :
- </text>
- <text name="estate_owner_text">
- (aucun)
- </text>
- <text_editor name="covenant_editor">
- Il n&apos;y a aucun règlement pour ce domaine.
- </text_editor>
- <text name="covenant_timestamp_text">
- Last Modified Wed Dec 31 16:00:00 1969
- </text>
- <text name="region_section_lbl">
- Région :
- </text>
- <text name="region_name_lbl">
- Nom :
- </text>
- <text name="region_name_text">
- leyla
- </text>
- <text name="region_landtype_lbl">
- Type :
- </text>
- <text name="region_landtype_text">
- Continent / Homestead
- </text>
- <text name="region_maturity_lbl">
- Catégorie :
- </text>
- <text name="region_maturity_text">
- Adult
- </text>
- <text name="resellable_lbl">
- Revendre :
- </text>
- <text name="resellable_clause">
- Le terrain dans cette région ne peut être revendu.
- </text>
- <text name="changeable_lbl">
- Sous-diviser :
- </text>
- <text name="changeable_clause">
- Le terrain dans cette région ne peut être fusionné/divisé.
- </text>
- </panel>
- <panel label="Objets" name="land_objects_panel">
- <panel.string name="objects_available_text">
- [COUNT] sur [MAX] ([AVAILABLE] disponibles)
- </panel.string>
- <panel.string name="objects_deleted_text">
- [COUNT] sur [MAX] ([DELETED] seront supprimés)
- </panel.string>
- <text name="parcel_object_bonus">
- Facteur Bonus Objets : [BONUS]
- </text>
- <text name="Simulator primitive usage:">
- Prims utilisées sur la parcelle :
- </text>
- <text left="214" name="objects_available" width="230">
- [COUNT] sur [MAX] ([AVAILABLE] disponibles)
- </text>
- <text name="Primitives parcel supports:" width="200">
- Prims max. sur la parcelle :
- </text>
- <text left="214" name="object_contrib_text" width="152">
- [COUNT]
- </text>
- <text name="Primitives on parcel:">
- Prims sur la parcelle :
- </text>
- <text left="214" name="total_objects_text" width="48">
- [COUNT]
- </text>
- <text left="14" name="Owned by parcel owner:" width="180">
- Appartenant au propriétaire :
- </text>
- <text left="214" name="owner_objects_text" width="48">
- [COUNT]
- </text>
- <button label="Afficher" label_selected="Afficher" name="ShowOwner" right="-135" width="60"/>
- <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
- <text left="14" name="Set to group:" width="180">
- Données au groupe :
- </text>
- <text left="214" name="group_objects_text" width="48">
- [COUNT]
- </text>
- <button label="Afficher" label_selected="Afficher" name="ShowGroup" right="-135" width="60"/>
- <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
- <text left="14" name="Owned by others:" width="128">
- Appartenant à d&apos;autres :
- </text>
- <text left="214" name="other_objects_text" width="48">
- [COUNT]
- </text>
- <button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/>
- <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
- <text left="14" name="Selected / sat upon:" width="193">
- Sélectionnées/où quelqu&apos;un est assis :
- </text>
- <text left="214" name="selected_objects_text" width="48">
- [COUNT]
- </text>
- <text left="4" name="Autoreturn" width="412">
- Renvoi automatique des objets des autres résidents (min., 0 pour désactiver) :
- </text>
- <line_editor name="clean other time" right="-6" width="36"/>
- <text name="Object Owners:">
- Propriétaires :
- </text>
- <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh List"/>
- <button label="Renvoyer les objets..." label_selected="Renvoyer les objets..." name="Return objects..."/>
- <name_list label="Plus récents" name="owner list">
- <name_list.columns label="Type" name="type"/>
- <name_list.columns name="online_status"/>
- <name_list.columns label="Nom" name="name"/>
- <name_list.columns label="Nombre" name="count"/>
- <name_list.columns label="Plus récents" name="mostrecent"/>
- </name_list>
- </panel>
- <panel label="Options" name="land_options_panel">
- <panel.string name="search_enabled_tooltip">
- Permettre aux autres résidents de voir cette parcelle dans les résultats de recherche
- </panel.string>
- <panel.string name="search_disabled_small_tooltip">
- Cette option est désactivée car la superficie de cette parcelle est inférieure ou égale à 128 m².
-Seules les parcelles de grande taille peuvent apparaître dans la recherche.
- </panel.string>
- <panel.string name="search_disabled_permissions_tooltip">
- Cette option est désactivée car vous ne pouvez pas modifier les options de cette parcelle.
- </panel.string>
- <panel.string name="mature_check_mature">
- Contenu Mature
- </panel.string>
- <panel.string name="mature_check_adult">
- Contenu Adult
- </panel.string>
- <panel.string name="mature_check_mature_tooltip">
- Les informations ou contenu de votre parcelle sont classés Mature.
- </panel.string>
- <panel.string name="mature_check_adult_tooltip">
- Les informations ou contenu de votre parcelle sont classés Adult.
- </panel.string>
- <panel.string name="landing_point_none">
- (aucun)
- </panel.string>
- <panel.string name="push_restrict_text">
- Pas de bousculades
- </panel.string>
- <panel.string name="push_restrict_region_text">
- Pas de bousculades (les règles de la région priment)
- </panel.string>
- <text name="allow_label">
- Autoriser les autres résidents à :
- </text>
- <check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n&apos;importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/>
- <check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n&apos;est pas cochée, ils ne pourront voler que lorsqu&apos;ils arrivent et passent au dessus de votre terrain."/>
- <text left="152" name="allow_label2">
- Créer des objets :
- </text>
- <check_box label="Tous les résidents" left="285" name="edit objects check"/>
- <check_box label="Groupe" left="395" name="edit group objects check"/>
- <text left="152" name="allow_label3" width="134">
- Laisser entrer des objets :
- </text>
- <check_box label="Tous les résidents" left="285" name="all object entry check"/>
- <check_box label="Groupe" left="395" name="group object entry check"/>
- <text left="152" name="allow_label4">
- Exécuter des scripts :
- </text>
- <check_box label="Tous les résidents" left="285" name="check other scripts"/>
- <check_box label="Groupe" left="395" name="check group scripts"/>
- <text name="land_options_label">
- Options du terrain :
- </text>
- <check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n&apos;y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/>
- <check_box bottom="-140" label="Pas de bousculades" left="14" name="PushRestrictCheck" tool_tip="Empêche l&apos;utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/>
- <check_box bottom="-160" label="Afficher dans la recherche (30 L$/semaine) sous" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/>
- <combo_box bottom="-160" left="286" name="land category with adult" width="146">
- <combo_box.item label="Toutes catégories" name="item0"/>
- <combo_box.item label="Appartenant aux Lindens" name="item1"/>
- <combo_box.item label="Adult" name="item2"/>
- <combo_box.item label="Art et Culture" name="item3"/>
- <combo_box.item label="Affaires" name="item4"/>
- <combo_box.item label="Éducation" name="item5"/>
- <combo_box.item label="Jeux" name="item6"/>
- <combo_box.item label="Favoris" name="item7"/>
- <combo_box.item label="Accueil pour les nouveaux" name="item8"/>
- <combo_box.item label="Parcs et Nature" name="item9"/>
- <combo_box.item label="Résidentiel" name="item10"/>
- <combo_box.item label="Shopping" name="item11"/>
- <combo_box.item label="Autre" name="item12"/>
- </combo_box>
- <combo_box bottom="-160" left="286" name="land category" width="146">
- <combo_box.item label="Toutes catégories" name="item0"/>
- <combo_box.item label="Appartenant aux Lindens" name="item1"/>
- <combo_box.item label="Art et Culture" name="item3"/>
- <combo_box.item label="Affaires" name="item4"/>
- <combo_box.item label="Éducation" name="item5"/>
- <combo_box.item label="Jeux" name="item6"/>
- <combo_box.item label="Favoris" name="item7"/>
- <combo_box.item label="Accueil pour les nouveaux" name="item8"/>
- <combo_box.item label="Parcs et Nature" name="item9"/>
- <combo_box.item label="Résidentiel" name="item10"/>
- <combo_box.item label="Shopping" name="item11"/>
- <combo_box.item label="Autre" name="item12"/>
- </combo_box>
- <check_box bottom="-180" label="Contenu Mature" name="MatureCheck" tool_tip=""/>
- <text bottom="-200" name="Snapshot:">
- Photo :
- </text>
- <texture_picker bottom="-319" label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/>
- <text bottom="-323" name="landing_point">
- Lieu d&apos;arrivée : [LANDING]
- </text>
- <button bottom="-323" label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d&apos;arrivée des visiteurs. Définit l&apos;emplacement de votre avatar sur ce terrain."/>
- <button bottom="-323" label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Libérer le lieu d&apos;arrivée."/>
- <text bottom="-343" name="Teleport Routing: ">
- Règles de téléportation :
- </text>
- <combo_box bottom="-343" left="140" name="landing type" tool_tip="Vous permet de paramétrer les téléportations sur votre terrain." width="140">
- <combo_box.item label="Bloqué" name="Blocked"/>
- <combo_box.item label="Lieu d&apos;arrivée fixe" name="LandingPoint"/>
- <combo_box.item label="Lieu d&apos;arrivée libre" name="Anywhere"/>
- </combo_box>
- </panel>
- <panel label="Médias" name="land_media_panel">
- <text name="with media:" width="85">
- Type :
- </text>
- <combo_box left="97" name="media type" tool_tip="Indiquez s&apos;il s&apos;agit de l&apos;URL d&apos;un film, d&apos;une page web ou autre"/>
- <text name="mime_type"/>
- <text name="at URL:" width="85">
- URL du domicile :
- </text>
- <line_editor left="97" name="media_url"/>
- <button label="Définir..." label_selected="Définir..." name="set_media_url"/>
- <text name="CurrentURL:">
- URL actuelle :
- </text>
- <button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url"/>
- <check_box label="Masquer l&apos;URL" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL du média. Cette option n&apos;est pas disponible pour les fichiers HTML."/>
- <text name="Description:">
- Description :
- </text>
- <line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/>
- <text name="Media texture:">
- Remplacer
-la texture :
- </text>
- <texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/>
- <text name="replace_texture_help">
- Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer.
-
-Sélectionnez l&apos;image miniature pour choisir une texture différente.
- </text>
- <check_box label="Échelle automatique" left="97" name="media_auto_scale" tool_tip="Si vous sélectionnez cette option, le contenu de cette parcelle sera automatiquement mis à l&apos;échelle. La qualité visuelle sera peut-être amoindrie mais vous n&apos;aurez à faire aucune autre mise à l&apos;échelle ou alignement."/>
- <text left="102" name="media_size" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." width="105">
- Taille :
- </text>
- <spinner left_delta="89" name="media_size_width" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/>
- <spinner name="media_size_height" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/>
- <text name="pixels">
- pixels
- </text>
- <text name="Options:">
- Options :
- </text>
- <check_box label="En boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/>
- </panel>
- <panel label="Audio" name="land_audio_panel">
- <text name="MusicURL:">
- URL de la musique :
- </text>
- <text name="Sound:">
- Son :
- </text>
- <check_box label="Limiter les gestes et sons d&apos;objet à cette parcelle" name="check sound local"/>
- <text name="Voice settings:">
- Voix :
- </text>
- <check_box label="Activer le chat vocal" name="parcel_enable_voice_channel"/>
- <check_box label="Activer la voix (contrôlé par le domaine)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_parcel"/>
- </panel>
- <panel label="Accès" name="land_access_panel">
- <panel.string name="estate_override">
- Au moins une de ces options est définie au niveau du domaine.
- </panel.string>
- <text name="Limit access to this parcel to:">
- Accès à cette parcelle
- </text>
- <check_box label="Autoriser l&apos;accès public" name="public_access"/>
- <text name="Only Allow">
- Bloquer l&apos;accès aux résidents :
- </text>
- <check_box label="Qui n&apos;ont pas fourni leurs informations de paiement à Linden Lab" name="limit_payment" tool_tip="Aux résidents non identifés"/>
- <check_box label="Dont l&apos;âge n&apos;a pas été vérifié" name="limit_age_verified" tool_tip="Interdire les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
- <check_box label="Autoriser l&apos;accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l&apos;onglet Général."/>
- <check_box label="Vendre des pass à :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/>
- <combo_box name="pass_combo">
- <combo_box.item label="Tout le monde" name="Anyone"/>
- <combo_box.item label="Groupe" name="Group"/>
- </combo_box>
- <spinner label="Prix en L$ :" name="PriceSpin"/>
- <spinner label="Durée en heures :" name="HoursSpin"/>
- <text label="Toujours autoriser" name="AllowedText">
- Résidents autorisés
- </text>
- <name_list name="AccessList" tool_tip="([LISTED] listés, [MAX] max)"/>
- <button label="Ajouter..." label_selected="Ajouter..." name="add_allowed"/>
- <button label="Supprimer" label_selected="Supprimer" name="remove_allowed"/>
- <text label="Bannir" name="BanCheck">
- Résidents bannis
- </text>
- <name_list name="BannedList" tool_tip="([LISTED] listés, [MAX] max)"/>
- <button label="Ajouter..." label_selected="Ajouter..." name="add_banned"/>
- <button label="Supprimer" label_selected="Supprimer" name="remove_banned"/>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="À PROPOS DU TERRAIN">
+ <floater.string name="Minutes">
+ [MINUTES] minutes
+ </floater.string>
+ <floater.string name="Minute">
+ minute
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] secondes
+ </floater.string>
+ <tab_container name="landtab">
+ <panel label="Général" name="land_general_panel">
+ <panel.string name="new users only">
+ Nouveaux utilisateurs uniquement
+ </panel.string>
+ <panel.string name="anyone">
+ Tout le monde
+ </panel.string>
+ <panel.string name="area_text">
+ Surface
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA] m²
+ </panel.string>
+ <panel.string name="auction_id_text">
+ Code de l&apos;enchère : [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ Pour modifier ce terrain, vous devez approuver votre achat.
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (propriété du groupe)
+ </panel.string>
+ <panel.string name="profile_text">
+ Profil...
+ </panel.string>
+ <panel.string name="info_text">
+ Infos...
+ </panel.string>
+ <panel.string name="public_text">
+ (public)
+ </panel.string>
+ <panel.string name="none_text">
+ (aucun)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (vente en cours)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ Aucune parcelle sélectionnée.
+Allez dans le menu Monde &gt; À propos du terrain ou sélectionnez une autre parcelle pour en afficher les détails.
+ </panel.string>
+ <text name="Name:">
+ Nom :
+ </text>
+ <line_editor name="Name"/>
+ <text name="Description:">
+ Description :
+ </text>
+ <text_editor name="Description"/>
+ <text name="LandType">
+ Type :
+ </text>
+ <text name="LandTypeText">
+ Continent / Homestead
+ </text>
+ <text name="ContentRating">
+ Catégorie :
+ </text>
+ <text name="ContentRatingText">
+ Adult
+ </text>
+ <text name="Owner:">
+ Propriétaire :
+ </text>
+ <text name="OwnerText">
+ Leyla Linden
+ </text>
+ <button label="Profil..." label_selected="Profil..." name="Profile..."/>
+ <text name="Group:">
+ Groupe :
+ </text>
+ <text name="GroupText"/>
+ <button label="Définir..." label_selected="Définir..." name="Set..."/>
+ <check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier peut céder ce terrain au groupe. Il viendra alors s&apos;ajouter au patrimoine du groupe."/>
+ <button label="Céder..." label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d&apos;officier dans le groupe sélectionné."/>
+ <check_box label="Le propriétaire contribue en cédant du terrain" name="check contrib" tool_tip="Lorsqu&apos;un terrain est cédé au groupe, l&apos;ancien propriétaire fait également un don de terrain suffisant."/>
+ <text name="For Sale:">
+ À vendre :
+ </text>
+ <text name="Not for sale.">
+ Pas à vendre
+ </text>
+ <text name="For Sale: Price L$[PRICE].">
+ Prix : [PRICE] L$ ([PRICE_PER_SQM] L$/m²).
+ </text>
+ <text name="SalePending"/>
+ <button label="Vendre le terrain..." label_selected="Vendre le terrain..." name="Sell Land..."/>
+ <text name="For sale to">
+ À vendre à : [BUYER]
+ </text>
+ <text name="Sell with landowners objects in parcel.">
+ Objets inclus dans la vente.
+ </text>
+ <text name="Selling with no objects in parcel.">
+ Objets non inclus dans la vente.
+ </text>
+ <button label="Annuler la vente du terrain" label_selected="Annuler la vente du terrain" left="275" name="Cancel Land Sale" width="165"/>
+ <text name="Claimed:">
+ Acquis :
+ </text>
+ <text name="DateClaimText">
+ Tue Aug 15 13:47:25 2006
+ </text>
+ <text name="PriceLabel">
+ Superficie :
+ </text>
+ <text name="PriceText">
+ 4048 m²
+ </text>
+ <text name="Traffic:">
+ Trafic :
+ </text>
+ <text name="DwellText">
+ 0
+ </text>
+ <button label="Acheter le terrain..." label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/>
+ <button label="Acheter pour le groupe..." label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
+ <button label="Acheter un pass..." label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
+ <button label="Abandonner le terrain..." label_selected="Abandonner le terrain..." name="Abandon Land..."/>
+ <button label="Redemander le terrain..." label_selected="Redemander le terrain…" name="Reclaim Land..."/>
+ <button label="Vente Linden..." label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
+ </panel>
+ <panel label="Règlement" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ Le terrain acheté dans cette région peut être revendu.
+ </panel.string>
+ <panel.string name="can_not_resell">
+ Le terrain acheté dans cette région ne peut pas être revendu.
+ </panel.string>
+ <panel.string name="can_change">
+ Le terrain acheté dans cette région peut être fusionné
+ou divisé.
+ </panel.string>
+ <panel.string name="can_not_change">
+ Le terrain acheté dans cette région ne peut pas être fusionné
+ou divisé.
+ </panel.string>
+ <text name="estate_section_lbl">
+ Domaine :
+ </text>
+ <text name="estate_name_lbl">
+ Nom :
+ </text>
+ <text name="estate_name_text">
+ continent
+ </text>
+ <text name="estate_owner_lbl">
+ Propriétaire :
+ </text>
+ <text name="estate_owner_text">
+ (aucun)
+ </text>
+ <text_editor name="covenant_editor">
+ Il n&apos;y a aucun règlement pour ce domaine.
+ </text_editor>
+ <text name="covenant_timestamp_text">
+ Last Modified Wed Dec 31 16:00:00 1969
+ </text>
+ <text name="region_section_lbl">
+ Région :
+ </text>
+ <text name="region_name_lbl">
+ Nom :
+ </text>
+ <text name="region_name_text">
+ leyla
+ </text>
+ <text name="region_landtype_lbl">
+ Type :
+ </text>
+ <text name="region_landtype_text">
+ Continent / Homestead
+ </text>
+ <text name="region_maturity_lbl">
+ Catégorie :
+ </text>
+ <text name="region_maturity_text">
+ Adult
+ </text>
+ <text name="resellable_lbl">
+ Revendre :
+ </text>
+ <text name="resellable_clause">
+ Le terrain dans cette région ne peut être revendu.
+ </text>
+ <text name="changeable_lbl">
+ Sous-diviser :
+ </text>
+ <text name="changeable_clause">
+ Le terrain dans cette région ne peut être fusionné/divisé.
+ </text>
+ </panel>
+ <panel label="Objets" name="land_objects_panel">
+ <panel.string name="objects_available_text">
+ [COUNT] sur [MAX] ([AVAILABLE] disponibles)
+ </panel.string>
+ <panel.string name="objects_deleted_text">
+ [COUNT] sur [MAX] ([DELETED] seront supprimés)
+ </panel.string>
+ <text name="parcel_object_bonus">
+ Facteur Bonus Objets : [BONUS]
+ </text>
+ <text name="Simulator primitive usage:">
+ Prims utilisées sur la parcelle :
+ </text>
+ <text left="214" name="objects_available" width="230">
+ [COUNT] sur [MAX] ([AVAILABLE] disponibles)
+ </text>
+ <text name="Primitives parcel supports:" width="200">
+ Prims max. sur la parcelle :
+ </text>
+ <text left="214" name="object_contrib_text" width="152">
+ [COUNT]
+ </text>
+ <text name="Primitives on parcel:">
+ Prims sur la parcelle :
+ </text>
+ <text left="214" name="total_objects_text" width="48">
+ [COUNT]
+ </text>
+ <text left="14" name="Owned by parcel owner:" width="180">
+ Appartenant au propriétaire :
+ </text>
+ <text left="214" name="owner_objects_text" width="48">
+ [COUNT]
+ </text>
+ <button label="Afficher" label_selected="Afficher" name="ShowOwner" right="-135" width="60"/>
+ <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOwner..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
+ <text left="14" name="Set to group:" width="180">
+ Données au groupe :
+ </text>
+ <text left="214" name="group_objects_text" width="48">
+ [COUNT]
+ </text>
+ <button label="Afficher" label_selected="Afficher" name="ShowGroup" right="-135" width="60"/>
+ <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnGroup..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
+ <text left="14" name="Owned by others:" width="128">
+ Appartenant à d&apos;autres :
+ </text>
+ <text left="214" name="other_objects_text" width="48">
+ [COUNT]
+ </text>
+ <button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/>
+ <button label="Renvoyer..." label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
+ <text left="14" name="Selected / sat upon:" width="193">
+ Sélectionnées/où quelqu&apos;un est assis :
+ </text>
+ <text left="214" name="selected_objects_text" width="48">
+ [COUNT]
+ </text>
+ <text left="4" name="Autoreturn" width="412">
+ Renvoi automatique des objets des autres résidents (min., 0 pour désactiver) :
+ </text>
+ <line_editor name="clean other time" right="-6" width="36"/>
+ <text name="Object Owners:">
+ Propriétaires :
+ </text>
+ <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh List"/>
+ <button label="Renvoyer les objets..." label_selected="Renvoyer les objets..." name="Return objects..."/>
+ <name_list label="Plus récents" name="owner list">
+ <name_list.columns label="Type" name="type"/>
+ <name_list.columns name="online_status"/>
+ <name_list.columns label="Nom" name="name"/>
+ <name_list.columns label="Nombre" name="count"/>
+ <name_list.columns label="Plus récents" name="mostrecent"/>
+ </name_list>
+ </panel>
+ <panel label="Options" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ Permettre aux autres résidents de voir cette parcelle dans les résultats de recherche
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ Cette option est désactivée car la superficie de cette parcelle est inférieure ou égale à 128 m².
+Seules les parcelles de grande taille peuvent apparaître dans la recherche.
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ Cette option est désactivée car vous ne pouvez pas modifier les options de cette parcelle.
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Contenu Mature
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Contenu Adult
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ Les informations ou contenu de votre parcelle sont classés Mature.
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ Les informations ou contenu de votre parcelle sont classés Adult.
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (aucun)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ Pas de bousculades
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ Pas de bousculades (les règles de la région priment)
+ </panel.string>
+ <text name="allow_label">
+ Autoriser les autres résidents à :
+ </text>
+ <check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n&apos;importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/>
+ <check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n&apos;est pas cochée, ils ne pourront voler que lorsqu&apos;ils arrivent et passent au dessus de votre terrain."/>
+ <text left="152" name="allow_label2">
+ Créer des objets :
+ </text>
+ <check_box label="Tous les résidents" left="285" name="edit objects check"/>
+ <check_box label="Groupe" left="395" name="edit group objects check"/>
+ <text left="152" name="allow_label3" width="134">
+ Laisser entrer des objets :
+ </text>
+ <check_box label="Tous les résidents" left="285" name="all object entry check"/>
+ <check_box label="Groupe" left="395" name="group object entry check"/>
+ <text left="152" name="allow_label4">
+ Exécuter des scripts :
+ </text>
+ <check_box label="Tous les résidents" left="285" name="check other scripts"/>
+ <check_box label="Groupe" left="395" name="check group scripts"/>
+ <text name="land_options_label">
+ Options du terrain :
+ </text>
+ <check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n&apos;y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/>
+ <check_box bottom="-140" label="Pas de bousculades" left="14" name="PushRestrictCheck" tool_tip="Empêche l&apos;utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/>
+ <check_box bottom="-160" label="Afficher dans la recherche (30 L$/semaine) sous" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/>
+ <combo_box bottom="-160" left="286" name="land category with adult" width="146">
+ <combo_box.item label="Toutes catégories" name="item0"/>
+ <combo_box.item label="Appartenant aux Lindens" name="item1"/>
+ <combo_box.item label="Adult" name="item2"/>
+ <combo_box.item label="Art et Culture" name="item3"/>
+ <combo_box.item label="Affaires" name="item4"/>
+ <combo_box.item label="Éducation" name="item5"/>
+ <combo_box.item label="Jeux" name="item6"/>
+ <combo_box.item label="Favoris" name="item7"/>
+ <combo_box.item label="Accueil pour les nouveaux" name="item8"/>
+ <combo_box.item label="Parcs et Nature" name="item9"/>
+ <combo_box.item label="Résidentiel" name="item10"/>
+ <combo_box.item label="Shopping" name="item11"/>
+ <combo_box.item label="Autre" name="item12"/>
+ </combo_box>
+ <combo_box bottom="-160" left="286" name="land category" width="146">
+ <combo_box.item label="Toutes catégories" name="item0"/>
+ <combo_box.item label="Appartenant aux Lindens" name="item1"/>
+ <combo_box.item label="Art et Culture" name="item3"/>
+ <combo_box.item label="Affaires" name="item4"/>
+ <combo_box.item label="Éducation" name="item5"/>
+ <combo_box.item label="Jeux" name="item6"/>
+ <combo_box.item label="Favoris" name="item7"/>
+ <combo_box.item label="Accueil pour les nouveaux" name="item8"/>
+ <combo_box.item label="Parcs et Nature" name="item9"/>
+ <combo_box.item label="Résidentiel" name="item10"/>
+ <combo_box.item label="Shopping" name="item11"/>
+ <combo_box.item label="Autre" name="item12"/>
+ </combo_box>
+ <check_box bottom="-180" label="Contenu Mature" name="MatureCheck" tool_tip=""/>
+ <text bottom="-200" name="Snapshot:">
+ Photo :
+ </text>
+ <texture_picker bottom="-319" label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/>
+ <text bottom="-323" name="landing_point">
+ Lieu d&apos;arrivée : [LANDING]
+ </text>
+ <button bottom="-323" label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d&apos;arrivée des visiteurs. Définit l&apos;emplacement de votre avatar sur ce terrain."/>
+ <button bottom="-323" label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Libérer le lieu d&apos;arrivée."/>
+ <text bottom="-343" name="Teleport Routing: ">
+ Règles de téléportation :
+ </text>
+ <combo_box bottom="-343" left="140" name="landing type" tool_tip="Vous permet de paramétrer les téléportations sur votre terrain." width="140">
+ <combo_box.item label="Bloqué" name="Blocked"/>
+ <combo_box.item label="Lieu d&apos;arrivée fixe" name="LandingPoint"/>
+ <combo_box.item label="Lieu d&apos;arrivée libre" name="Anywhere"/>
+ </combo_box>
+ </panel>
+ <panel label="Médias" name="land_media_panel">
+ <text name="with media:" width="85">
+ Type :
+ </text>
+ <combo_box left="97" name="media type" tool_tip="Indiquez s&apos;il s&apos;agit de l&apos;URL d&apos;un film, d&apos;une page web ou autre"/>
+ <text name="mime_type"/>
+ <text name="at URL:" width="85">
+ URL du domicile :
+ </text>
+ <line_editor left="97" name="media_url"/>
+ <button label="Définir..." label_selected="Définir..." name="set_media_url"/>
+ <text name="CurrentURL:">
+ URL actuelle :
+ </text>
+ <button label="Réinitialiser..." label_selected="Réinitialiser..." name="reset_media_url"/>
+ <check_box label="Masquer l&apos;URL" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL du média. Cette option n&apos;est pas disponible pour les fichiers HTML."/>
+ <text name="Description:">
+ Description :
+ </text>
+ <line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/>
+ <text name="Media texture:">
+ Remplacer
+la texture :
+ </text>
+ <texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/>
+ <text name="replace_texture_help">
+ Les objets avec cette texture affichent le film ou la page web quand vous cliquez sur la flèche Jouer.
+
+Sélectionnez l&apos;image miniature pour choisir une texture différente.
+ </text>
+ <check_box label="Échelle automatique" left="97" name="media_auto_scale" tool_tip="Si vous sélectionnez cette option, le contenu de cette parcelle sera automatiquement mis à l&apos;échelle. La qualité visuelle sera peut-être amoindrie mais vous n&apos;aurez à faire aucune autre mise à l&apos;échelle ou alignement."/>
+ <text left="102" name="media_size" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." width="105">
+ Taille :
+ </text>
+ <spinner left_delta="89" name="media_size_width" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/>
+ <spinner name="media_size_height" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/>
+ <text name="pixels">
+ pixels
+ </text>
+ <text name="Options:">
+ Options :
+ </text>
+ <check_box label="En boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/>
+ </panel>
+ <panel label="Audio" name="land_audio_panel">
+ <text name="MusicURL:">
+ URL de la musique :
+ </text>
+ <text name="Sound:">
+ Son :
+ </text>
+ <check_box label="Limiter les gestes et sons d&apos;objet à cette parcelle" name="check sound local"/>
+ <text name="Voice settings:">
+ Voix :
+ </text>
+ <check_box label="Activer le chat vocal" name="parcel_enable_voice_channel"/>
+ <check_box label="Activer la voix (contrôlé par le domaine)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+ <check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_parcel"/>
+ </panel>
+ <panel label="Accès" name="land_access_panel">
+ <panel.string name="estate_override">
+ Au moins une de ces options est définie au niveau du domaine.
+ </panel.string>
+ <text name="Limit access to this parcel to:">
+ Accès à cette parcelle
+ </text>
+ <check_box label="Autoriser l&apos;accès public" name="public_access"/>
+ <text name="Only Allow">
+ Bloquer l&apos;accès aux résidents :
+ </text>
+ <check_box label="Qui n&apos;ont pas fourni leurs informations de paiement à Linden Lab" name="limit_payment" tool_tip="Aux résidents non identifés"/>
+ <check_box label="Dont l&apos;âge n&apos;a pas été vérifié" name="limit_age_verified" tool_tip="Interdire les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
+ <check_box label="Autoriser l&apos;accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l&apos;onglet Général."/>
+ <check_box label="Vendre des pass à :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/>
+ <combo_box name="pass_combo">
+ <combo_box.item label="Tout le monde" name="Anyone"/>
+ <combo_box.item label="Groupe" name="Group"/>
+ </combo_box>
+ <spinner label="Prix en L$ :" name="PriceSpin"/>
+ <spinner label="Durée en heures :" name="HoursSpin"/>
+ <text label="Toujours autoriser" name="AllowedText">
+ Résidents autorisés
+ </text>
+ <name_list name="AccessList" tool_tip="([LISTED] listés, [MAX] max)"/>
+ <button label="Ajouter..." label_selected="Ajouter..." name="add_allowed"/>
+ <button label="Supprimer" label_selected="Supprimer" name="remove_allowed"/>
+ <text label="Bannir" name="BanCheck">
+ Résidents bannis
+ </text>
+ <name_list name="BannedList" tool_tip="([LISTED] listés, [MAX] max)"/>
+ <button label="Ajouter..." label_selected="Ajouter..." name="add_banned"/>
+ <button label="Supprimer" label_selected="Supprimer" name="remove_banned"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
index 00ab29703f..4417006fc6 100644
--- a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
@@ -1,186 +1,186 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Animation Preview" title="">
- <floater.string name="failed_to_initialize">
- Echec de l&apos;initialisation du mouvement
- </floater.string>
- <floater.string name="anim_too_long">
- Le fichier d&apos;animation fait [LENGTH] secondes.
-
-La longueur maximale est de [MAX_LENGTH] secondes.
- </floater.string>
- <floater.string name="failed_file_read">
- Impossible de lire le fichier d&apos;animation.
-
-[STATUS]
- </floater.string>
- <floater.string name="E_ST_OK">
- Ok
- </floater.string>
- <floater.string name="E_ST_EOF">
- Fichier incomplet.
- </floater.string>
- <floater.string name="E_ST_NO_CONSTRAINT">
- Impossible de lire la définition des contraintes.
- </floater.string>
- <floater.string name="E_ST_NO_FILE">
- Impossible d&apos;ouvrir le fichier BVH.
- </floater.string>
- <floater.string name="E_ST_NO_HIER">
- En-tête HIERARCHY non valide.
- </floater.string>
- <floater.string name="E_ST_NO_JOINT">
- Impossible de trouver ROOT ou JOINT.
- </floater.string>
- <floater.string name="E_ST_NO_NAME">
- Impossible de trouver le nom JOINT.
- </floater.string>
- <floater.string name="E_ST_NO_OFFSET">
- Impossible de trouver OFFSET.
- </floater.string>
- <floater.string name="E_ST_NO_CHANNELS">
- Impossible se trouver les CHANNELS.
- </floater.string>
- <floater.string name="E_ST_NO_ROTATION">
- Impossible d&apos;obtenir l&apos;ordre de rotation.
- </floater.string>
- <floater.string name="E_ST_NO_AXIS">
- Impossible d&apos;obtenir l&apos;axe de rotation.
- </floater.string>
- <floater.string name="E_ST_NO_MOTION">
- Impossible de trouver MOTION.
- </floater.string>
- <floater.string name="E_ST_NO_FRAMES">
- Impossible d&apos;obtenir le nombre de cadres.
- </floater.string>
- <floater.string name="E_ST_NO_FRAME_TIME">
- Impossible d&apos;obtenir le temps du cadre.
- </floater.string>
- <floater.string name="E_ST_NO_POS">
- Impossible de trouver les valeurs de la position.
- </floater.string>
- <floater.string name="E_ST_NO_ROT">
- Impossible de trouver les valeurs de rotation.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_FILE">
- Impossible d&apos;ouvrir le fichier de traduction.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_HEADER">
- Impossible de lire l&apos;en-tête de traduction.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_NAME">
- Impossible de lire la traduction.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_IGNORE">
- Impossible de lire la traduction.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_RELATIVE">
- Impossible de lire la valeur de traduction relative.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_OUTNAME">
- Impossible de lire la traduction.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MATRIX">
- Impossible de lire la matrice de traduction.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MERGECHILD">
- Impossible de trouver le nom mergechild.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MERGEPARENT">
- Impossible de trouver le nom mergeparent.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_PRIORITY">
- Impossible de définir la valeur de la priorité.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_LOOP">
- Impossible de définir la valeur de la boucle
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EASEIN">
- Impossible de trouver les valeurs easeln.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EASEOUT">
- Impossible de trouver les valeurs easeOut.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_HAND">
- Impossible d&apos;obtenir la valeur hand morph.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EMOTE">
- Impossible de lire le nom emote.
- </floater.string>
- <text name="name_label">
- Nom :
- </text>
- <text name="description_label">
- Description :
- </text>
- <spinner label="Priorité" name="priority" tool_tip="Contrôle quelles animations peuvent êtres écrasées par cette animation."/>
- <check_box label="Boucle" left="6" name="loop_check" tool_tip="Joue cette animation en boucle."/>
- <spinner label="Début (%)" label_width="55" left="76" name="loop_in_point" tool_tip="Définit le moment de l&apos;animation où la boucle repart." width="105"/>
- <spinner label="Fin (%)" left="195" name="loop_out_point" tool_tip="Définit le moment de l&apos;animation où la boucle finit."/>
- <text name="hand_label" width="110">
- Mouvement de main
- </text>
- <combo_box label="" left_delta="116" name="hand_pose_combo" tool_tip="Contrôle le mouvement des mains au cours de l&apos;animation" width="124">
- <combo_box.item label="Doigts écartés" name="Spread"/>
- <combo_box.item label="Détendues" name="Relaxed"/>
- <combo_box.item label="Pointer (les deux)" name="PointBoth"/>
- <combo_box.item label="Poing" name="Fist"/>
- <combo_box.item label="Détendue (gauche)" name="RelaxedLeft"/>
- <combo_box.item label="Pointer (gauche)" name="PointLeft"/>
- <combo_box.item label="Poing (gauche)" name="FistLeft"/>
- <combo_box.item label="Détendue (droite)" name="RelaxedRight"/>
- <combo_box.item label="Pointer (droite)" name="PointRight"/>
- <combo_box.item label="Poing (droite)" name="FistRight"/>
- <combo_box.item label="Saluer (droite)" name="SaluteRight"/>
- <combo_box.item label="Taper" name="Typing"/>
- <combo_box.item label="Paix (main droite)" name="PeaceRight"/>
- </combo_box>
- <text name="emote_label">
- Expression
- </text>
- <combo_box label="" left_delta="116" name="emote_combo" tool_tip="Contrôle l&apos;expression du visage au cours de l&apos;animation." width="124">
- <combo_box.item label="None]" name="[None]"/>
- <combo_box.item label="Aaaaah" name="Aaaaah"/>
- <combo_box.item label="Effrayé" name="Afraid"/>
- <combo_box.item label="En colère" name="Angry"/>
- <combo_box.item label="Grand sourire" name="BigSmile"/>
- <combo_box.item label="Ennui" name="Bored"/>
- <combo_box.item label="Pleurer" name="Cry"/>
- <combo_box.item label="Mépris" name="Disdain"/>
- <combo_box.item label="Gêne" name="Embarrassed"/>
- <combo_box.item label="Froncer les sourcils" name="Frown"/>
- <combo_box.item label="Embrasser" name="Kiss"/>
- <combo_box.item label="Rire" name="Laugh"/>
- <combo_box.item label="Plllppt" name="Plllppt"/>
- <combo_box.item label="Dégoût" name="Repulsed"/>
- <combo_box.item label="Triste" name="Sad"/>
- <combo_box.item label="Hausser les épaules" name="Shrug"/>
- <combo_box.item label="Sourire" name="Smile"/>
- <combo_box.item label="Surprise" name="Surprise"/>
- <combo_box.item label="Clin d&apos;œil" name="Wink"/>
- <combo_box.item label="Soucis" name="Worry"/>
- </combo_box>
- <text name="preview_label" width="110">
- Prévisualiser pendant
- </text>
- <combo_box label="" left_delta="116" name="preview_base_anim" tool_tip="Utilisez cette option pour tester votre animation pendant que votre avatar fait des choses banales." width="124">
- <combo_box.item label="Debout" name="Standing"/>
- <combo_box.item label="En train de marcher" name="Walking"/>
- <combo_box.item label="Assis" name="Sitting"/>
- <combo_box.item label="En train de voler" name="Flying"/>
- </combo_box>
- <spinner label="Transition
-début (s)" label_width="65" name="ease_in_time" tool_tip="Durée (en secondes) pendant laquelle l&apos;animation s&apos;intègre au mouvement."/>
- <spinner label="Transition
-fin (s)" label_width="65" left="160" name="ease_out_time" tool_tip="Durée (en secondes) pendant laquelle l&apos;animation disparaît du mouvement." width="125"/>
- <button bottom_delta="-48" label="" name="play_btn" tool_tip="Jouer/Arrêter votre animation."/>
- <button label="" name="stop_btn" tool_tip="Arrêter le playback"/>
- <slider label="" name="playback_slider"/>
- <text name="bad_animation_text">
- Impossible de lire le fichier d&apos;animation.
-
-Nous recommandons les fichiers BVH extraits de
-Poser 4.
- </text>
- <button label="Annuler" name="cancel_btn"/>
- <button label="Charger ([AMOUNT] L$)" name="ok_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview" title="">
+ <floater.string name="failed_to_initialize">
+ Echec de l&apos;initialisation du mouvement
+ </floater.string>
+ <floater.string name="anim_too_long">
+ Le fichier d&apos;animation fait [LENGTH] secondes.
+
+La longueur maximale est de [MAX_LENGTH] secondes.
+ </floater.string>
+ <floater.string name="failed_file_read">
+ Impossible de lire le fichier d&apos;animation.
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ Ok
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ Fichier incomplet.
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ Impossible de lire la définition des contraintes.
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ Impossible d&apos;ouvrir le fichier BVH.
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ En-tête HIERARCHY non valide.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ Impossible de trouver ROOT ou JOINT.
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ Impossible de trouver le nom JOINT.
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ Impossible de trouver OFFSET.
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ Impossible se trouver les CHANNELS.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ Impossible d&apos;obtenir l&apos;ordre de rotation.
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ Impossible d&apos;obtenir l&apos;axe de rotation.
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ Impossible de trouver MOTION.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ Impossible d&apos;obtenir le nombre de cadres.
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ Impossible d&apos;obtenir le temps du cadre.
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ Impossible de trouver les valeurs de la position.
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ Impossible de trouver les valeurs de rotation.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ Impossible d&apos;ouvrir le fichier de traduction.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Impossible de lire l&apos;en-tête de traduction.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Impossible de lire la traduction.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Impossible de lire la traduction.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Impossible de lire la valeur de traduction relative.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Impossible de lire la traduction.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Impossible de lire la matrice de traduction.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Impossible de trouver le nom mergechild.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Impossible de trouver le nom mergeparent.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ Impossible de définir la valeur de la priorité.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ Impossible de définir la valeur de la boucle
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ Impossible de trouver les valeurs easeln.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ Impossible de trouver les valeurs easeOut.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ Impossible d&apos;obtenir la valeur hand morph.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ Impossible de lire le nom emote.
+ </floater.string>
+ <text name="name_label">
+ Nom :
+ </text>
+ <text name="description_label">
+ Description :
+ </text>
+ <spinner label="Priorité" name="priority" tool_tip="Contrôle quelles animations peuvent êtres écrasées par cette animation."/>
+ <check_box label="Boucle" left="6" name="loop_check" tool_tip="Joue cette animation en boucle."/>
+ <spinner label="Début (%)" label_width="55" left="76" name="loop_in_point" tool_tip="Définit le moment de l&apos;animation où la boucle repart." width="105"/>
+ <spinner label="Fin (%)" left="195" name="loop_out_point" tool_tip="Définit le moment de l&apos;animation où la boucle finit."/>
+ <text name="hand_label" width="110">
+ Mouvement de main
+ </text>
+ <combo_box label="" left_delta="116" name="hand_pose_combo" tool_tip="Contrôle le mouvement des mains au cours de l&apos;animation" width="124">
+ <combo_box.item label="Doigts écartés" name="Spread"/>
+ <combo_box.item label="Détendues" name="Relaxed"/>
+ <combo_box.item label="Pointer (les deux)" name="PointBoth"/>
+ <combo_box.item label="Poing" name="Fist"/>
+ <combo_box.item label="Détendue (gauche)" name="RelaxedLeft"/>
+ <combo_box.item label="Pointer (gauche)" name="PointLeft"/>
+ <combo_box.item label="Poing (gauche)" name="FistLeft"/>
+ <combo_box.item label="Détendue (droite)" name="RelaxedRight"/>
+ <combo_box.item label="Pointer (droite)" name="PointRight"/>
+ <combo_box.item label="Poing (droite)" name="FistRight"/>
+ <combo_box.item label="Saluer (droite)" name="SaluteRight"/>
+ <combo_box.item label="Taper" name="Typing"/>
+ <combo_box.item label="Paix (main droite)" name="PeaceRight"/>
+ </combo_box>
+ <text name="emote_label">
+ Expression
+ </text>
+ <combo_box label="" left_delta="116" name="emote_combo" tool_tip="Contrôle l&apos;expression du visage au cours de l&apos;animation." width="124">
+ <combo_box.item label="None]" name="[None]"/>
+ <combo_box.item label="Aaaaah" name="Aaaaah"/>
+ <combo_box.item label="Effrayé" name="Afraid"/>
+ <combo_box.item label="En colère" name="Angry"/>
+ <combo_box.item label="Grand sourire" name="BigSmile"/>
+ <combo_box.item label="Ennui" name="Bored"/>
+ <combo_box.item label="Pleurer" name="Cry"/>
+ <combo_box.item label="Mépris" name="Disdain"/>
+ <combo_box.item label="Gêne" name="Embarrassed"/>
+ <combo_box.item label="Froncer les sourcils" name="Frown"/>
+ <combo_box.item label="Embrasser" name="Kiss"/>
+ <combo_box.item label="Rire" name="Laugh"/>
+ <combo_box.item label="Plllppt" name="Plllppt"/>
+ <combo_box.item label="Dégoût" name="Repulsed"/>
+ <combo_box.item label="Triste" name="Sad"/>
+ <combo_box.item label="Hausser les épaules" name="Shrug"/>
+ <combo_box.item label="Sourire" name="Smile"/>
+ <combo_box.item label="Surprise" name="Surprise"/>
+ <combo_box.item label="Clin d&apos;œil" name="Wink"/>
+ <combo_box.item label="Soucis" name="Worry"/>
+ </combo_box>
+ <text name="preview_label" width="110">
+ Prévisualiser pendant
+ </text>
+ <combo_box label="" left_delta="116" name="preview_base_anim" tool_tip="Utilisez cette option pour tester votre animation pendant que votre avatar fait des choses banales." width="124">
+ <combo_box.item label="Debout" name="Standing"/>
+ <combo_box.item label="En train de marcher" name="Walking"/>
+ <combo_box.item label="Assis" name="Sitting"/>
+ <combo_box.item label="En train de voler" name="Flying"/>
+ </combo_box>
+ <spinner label="Transition
+début (s)" label_width="65" name="ease_in_time" tool_tip="Durée (en secondes) pendant laquelle l&apos;animation s&apos;intègre au mouvement."/>
+ <spinner label="Transition
+fin (s)" label_width="65" left="160" name="ease_out_time" tool_tip="Durée (en secondes) pendant laquelle l&apos;animation disparaît du mouvement." width="125"/>
+ <button bottom_delta="-48" label="" name="play_btn" tool_tip="Jouer/Arrêter votre animation."/>
+ <button label="" name="stop_btn" tool_tip="Arrêter le playback"/>
+ <slider label="" name="playback_slider"/>
+ <text name="bad_animation_text">
+ Impossible de lire le fichier d&apos;animation.
+
+Nous recommandons les fichiers BVH extraits de
+Poser 4.
+ </text>
+ <button label="Annuler" name="cancel_btn"/>
+ <button label="Charger ([AMOUNT] L$)" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
index 5742b0af04..7ff2b6b425 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatarpicker" title="CHOISIR LE RÉSIDENT">
- <tab_container name="ResidentChooserTabs">
- <panel label="Rechercher" name="SearchPanel">
- <text name="InstructSearchResidentName">
- Saisissez une partie du nom du résident :
- </text>
- <button label="OK" label_selected="OK" name="Find"/>
- </panel>
- <panel label="Cartes de visite" name="CallingCardsPanel">
- <text name="InstructSelectCallingCard">
- Sélectionnez une carte de visite :
- </text>
- </panel>
- <panel label="Près de moi" name="NearMePanel">
- <text name="InstructSelectResident">
- Sélectionner une personne près de vous :
- </text>
- <button font="SansSerifSmall" label="Rafraîchir la liste" label_selected="Rafraîchir la liste" left_delta="10" name="Refresh" width="105"/>
- <slider bottom_delta="-36" label="Distance" name="near_me_range"/>
- <text name="meters">
- mètres
- </text>
- <scroll_list bottom_delta="-169" height="159" name="NearMe"/>
- </panel>
- </tab_container>
- <button label="OK" label_selected="OK" name="Select"/>
- <button label="Annuler" label_selected="Annuler" name="Cancel"/>
- <string name="not_found">
- &apos;[TEXT]&apos; introuvable
- </string>
- <string name="no_one_near">
- Il n&apos;y a personne près de vous
- </string>
- <string name="no_results">
- Aucun résultat
- </string>
- <string name="searching">
- Recherche...
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatarpicker" title="CHOISIR LE RÉSIDENT">
+ <tab_container name="ResidentChooserTabs">
+ <panel label="Rechercher" name="SearchPanel">
+ <text name="InstructSearchResidentName">
+ Saisissez une partie du nom du résident :
+ </text>
+ <button label="OK" label_selected="OK" name="Find"/>
+ </panel>
+ <panel label="Cartes de visite" name="CallingCardsPanel">
+ <text name="InstructSelectCallingCard">
+ Sélectionnez une carte de visite :
+ </text>
+ </panel>
+ <panel label="Près de moi" name="NearMePanel">
+ <text name="InstructSelectResident">
+ Sélectionner une personne près de vous :
+ </text>
+ <button font="SansSerifSmall" label="Rafraîchir la liste" label_selected="Rafraîchir la liste" left_delta="10" name="Refresh" width="105"/>
+ <slider bottom_delta="-36" label="Distance" name="near_me_range"/>
+ <text name="meters">
+ mètres
+ </text>
+ <scroll_list bottom_delta="-169" height="159" name="NearMe"/>
+ </panel>
+ </tab_container>
+ <button label="OK" label_selected="OK" name="Select"/>
+ <button label="Annuler" label_selected="Annuler" name="Cancel"/>
+ <string name="not_found">
+ &apos;[TEXT]&apos; introuvable
+ </string>
+ <string name="no_one_near">
+ Il n&apos;y a personne près de vous
+ </string>
+ <string name="no_results">
+ Aucun résultat
+ </string>
+ <string name="searching">
+ Recherche...
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_beacons.xml b/indra/newview/skins/default/xui/fr/floater_beacons.xml
index a747689883..fd9cd057e9 100644
--- a/indra/newview/skins/default/xui/fr/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/fr/floater_beacons.xml
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="BALISES">
- <panel name="beacons_panel">
- <text name="label_show">
- Afficher :
- </text>
- <check_box label="Balises" name="beacons"/>
- <check_box label="Surbrillances" name="highlights"/>
- <text name="beacon_width_label" tool_tip="Largeur de la balise">
- Largeur :
- </text>
- <text name="label_objects">
- Pour ces objets :
- </text>
- <check_box label="Physique" name="physical"/>
- <check_box label="Scripté" name="scripted"/>
- <check_box label="Toucher uniquement" name="touch_only"/>
- <check_box label="Sources sonores" name="sounds"/>
- <check_box label="Sources des particules" name="particles"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="BALISES">
+ <panel name="beacons_panel">
+ <text name="label_show">
+ Afficher :
+ </text>
+ <check_box label="Balises" name="beacons"/>
+ <check_box label="Surbrillances" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="Largeur de la balise">
+ Largeur :
+ </text>
+ <text name="label_objects">
+ Pour ces objets :
+ </text>
+ <check_box label="Physique" name="physical"/>
+ <check_box label="Scripté" name="scripted"/>
+ <check_box label="Toucher uniquement" name="touch_only"/>
+ <check_box label="Sources sonores" name="sounds"/>
+ <check_box label="Sources des particules" name="particles"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_build_options.xml b/indra/newview/skins/default/xui/fr/floater_build_options.xml
index e8e6a59dc4..997ca9d27b 100644
--- a/indra/newview/skins/default/xui/fr/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_build_options.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="OPTIONS DE LA GRILLE">
- <spinner label="Unités (mètres)" name="GridResolution"/>
- <spinner label="Mesures (mètres)" name="GridDrawSize"/>
- <check_box label="Fixation des sous-unités" name="GridSubUnit"/>
- <check_box label="Afficher les sections transversales" name="GridCrossSection"/>
- <text name="grid_opacity_label" tool_tip="Opacité de la grille">
- Opacité :
- </text>
- <slider label="Opacité de la grille" name="GridOpacity"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="OPTIONS DE LA GRILLE">
+ <spinner label="Unités (mètres)" name="GridResolution"/>
+ <spinner label="Mesures (mètres)" name="GridDrawSize"/>
+ <check_box label="Fixation des sous-unités" name="GridSubUnit"/>
+ <check_box label="Afficher les sections transversales" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="Opacité de la grille">
+ Opacité :
+ </text>
+ <slider label="Opacité de la grille" name="GridOpacity"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
index 212ee2504a..b2cef62e24 100644
--- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml
@@ -1,53 +1,53 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="Modifier les droits relatifs au contenu">
- <floater.string name="nothing_to_modify_text">
- La sélection contient des contenus non modifiables.
- </floater.string>
- <floater.string name="status_text">
- Permissions paramétrées sur [NAME]
- </floater.string>
- <floater.string name="start_text">
- Demande de changement des droits lancée...
- </floater.string>
- <floater.string name="done_text">
- Demande de changement des droits finie.
- </floater.string>
- <check_box label="Animation" name="check_animation"/>
- <icon name="icon_animation" tool_tip="Animation"/>
- <check_box label="Parties du corps" name="check_bodypart"/>
- <icon name="icon_bodypart" tool_tip="Parties du corps"/>
- <check_box label="Habits" name="check_clothing"/>
- <icon name="icon_clothing" tool_tip="Habits"/>
- <check_box label="Gestes" name="check_gesture"/>
- <icon name="icon_gesture" tool_tip="Gestes"/>
- <check_box label="Notes" name="check_notecard"/>
- <icon name="icon_notecard" tool_tip="Notes"/>
- <check_box label="Objets" name="check_object"/>
- <icon name="icon_object" tool_tip="Objets"/>
- <check_box label="Scripts" name="check_script"/>
- <icon name="icon_script" tool_tip="Scripts"/>
- <check_box label="Sons" name="check_sound"/>
- <icon name="icon_sound" tool_tip="Sons"/>
- <check_box label="Textures" name="check_texture"/>
- <button label="√ Tout" label_selected="Tout" name="check_all"/>
- <button label="Effacer" label_selected="Aucun" name="check_none"/>
- <text name="newperms">
- Nouvelles permissions relatives au contenu
- </text>
- <text name="GroupLabel">
- Groupe :
- </text>
- <check_box label="Partager" name="share_with_group"/>
- <text name="AnyoneLabel">
- N&apos;importe qui :
- </text>
- <check_box label="Copier" name="everyone_copy"/>
- <text name="NextOwnerLabel">
- Le prochain propriétaire :
- </text>
- <check_box label="Modifier" name="next_owner_modify"/>
- <check_box label="Copier" name="next_owner_copy"/>
- <check_box initial_value="true" label="Transférer" name="next_owner_transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/>
- <button label="OK" name="apply"/>
- <button label="Annuler" name="close"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="Modifier les droits relatifs au contenu">
+ <floater.string name="nothing_to_modify_text">
+ La sélection contient des contenus non modifiables.
+ </floater.string>
+ <floater.string name="status_text">
+ Permissions paramétrées sur [NAME]
+ </floater.string>
+ <floater.string name="start_text">
+ Demande de changement des droits lancée...
+ </floater.string>
+ <floater.string name="done_text">
+ Demande de changement des droits finie.
+ </floater.string>
+ <check_box label="Animation" name="check_animation"/>
+ <icon name="icon_animation" tool_tip="Animation"/>
+ <check_box label="Parties du corps" name="check_bodypart"/>
+ <icon name="icon_bodypart" tool_tip="Parties du corps"/>
+ <check_box label="Habits" name="check_clothing"/>
+ <icon name="icon_clothing" tool_tip="Habits"/>
+ <check_box label="Gestes" name="check_gesture"/>
+ <icon name="icon_gesture" tool_tip="Gestes"/>
+ <check_box label="Notes" name="check_notecard"/>
+ <icon name="icon_notecard" tool_tip="Notes"/>
+ <check_box label="Objets" name="check_object"/>
+ <icon name="icon_object" tool_tip="Objets"/>
+ <check_box label="Scripts" name="check_script"/>
+ <icon name="icon_script" tool_tip="Scripts"/>
+ <check_box label="Sons" name="check_sound"/>
+ <icon name="icon_sound" tool_tip="Sons"/>
+ <check_box label="Textures" name="check_texture"/>
+ <button label="√ Tout" label_selected="Tout" name="check_all"/>
+ <button label="Effacer" label_selected="Aucun" name="check_none"/>
+ <text name="newperms">
+ Nouvelles permissions relatives au contenu
+ </text>
+ <text name="GroupLabel">
+ Groupe :
+ </text>
+ <check_box label="Partager" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ N&apos;importe qui :
+ </text>
+ <check_box label="Copier" name="everyone_copy"/>
+ <text name="NextOwnerLabel">
+ Le prochain propriétaire :
+ </text>
+ <check_box label="Modifier" name="next_owner_modify"/>
+ <check_box label="Copier" name="next_owner_copy"/>
+ <check_box initial_value="true" label="Transférer" name="next_owner_transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/>
+ <button label="OK" name="apply"/>
+ <button label="Annuler" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_object.xml b/indra/newview/skins/default/xui/fr/floater_buy_object.xml
index 86b67ad491..0bfc4e90e5 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_object.xml
@@ -1,26 +1,26 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="ACHETER UNE COPIE DE L&apos;OBJET">
- <text name="contents_text">
- Contient :
- </text>
- <text name="buy_text">
- Acheter pour [AMOUNT] L$ à [NAME] ?
- </text>
- <button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
- <button label="Acheter" label_selected="Acheter" name="buy_btn"/>
- <string name="title_buy_text">
- Acheter
- </string>
- <string name="title_buy_copy_text">
- Acheter une copie
- </string>
- <string name="no_copy_text">
- (pas de copie)
- </string>
- <string name="no_modify_text">
- (pas de modification)
- </string>
- <string name="no_transfer_text">
- (pas de transfert)
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="ACHETER UNE COPIE DE L&apos;OBJET">
+ <text name="contents_text">
+ Contient :
+ </text>
+ <text name="buy_text">
+ Acheter pour [AMOUNT] L$ à [NAME] ?
+ </text>
+ <button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
+ <button label="Acheter" label_selected="Acheter" name="buy_btn"/>
+ <string name="title_buy_text">
+ Acheter
+ </string>
+ <string name="title_buy_copy_text">
+ Acheter une copie
+ </string>
+ <string name="no_copy_text">
+ (pas de copie)
+ </string>
+ <string name="no_modify_text">
+ (pas de modification)
+ </string>
+ <string name="no_transfer_text">
+ (pas de transfert)
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml
index 2fc01b9f17..b2a280d854 100644
--- a/indra/newview/skins/default/xui/fr/floater_camera.xml
+++ b/indra/newview/skins/default/xui/fr/floater_camera.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- Faire tourner la caméra autour du point central
- </floater.string>
- <floater.string name="zoom_tooltip">
- Zoomer en direction du point central
- </floater.string>
- <floater.string name="move_tooltip">
- Déplacer la caméra vers le haut et le bas, la gauche et la droite
- </floater.string>
- <panel name="controls">
- <joystick_track name="cam_track_stick" tool_tip="Déplacer la caméra vers le haut et le bas, la gauche et la droite"/>
- <joystick_zoom name="zoom" tool_tip="Zoomer en direction du point central"/>
- <joystick_rotate name="cam_rotate_stick" tool_tip="Faire tourner la caméra autour du point central"/>
- </panel>
- <panel name="buttons">
- <button label="" name="orbit_btn" tool_tip="Faire tourner la caméra"/>
- <button label="" name="pan_btn" tool_tip="Vue panoramique"/>
- <button label="" name="avatarview_btn" tool_tip="Vue subjective"/>
- <button label="" name="freecamera_btn" tool_tip="Voir l&apos;objet"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater">
+ <floater.string name="rotate_tooltip">
+ Faire tourner la caméra autour du point central
+ </floater.string>
+ <floater.string name="zoom_tooltip">
+ Zoomer en direction du point central
+ </floater.string>
+ <floater.string name="move_tooltip">
+ Déplacer la caméra vers le haut et le bas, la gauche et la droite
+ </floater.string>
+ <panel name="controls">
+ <joystick_track name="cam_track_stick" tool_tip="Déplacer la caméra vers le haut et le bas, la gauche et la droite"/>
+ <joystick_zoom name="zoom" tool_tip="Zoomer en direction du point central"/>
+ <joystick_rotate name="cam_rotate_stick" tool_tip="Faire tourner la caméra autour du point central"/>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="orbit_btn" tool_tip="Faire tourner la caméra"/>
+ <button label="" name="pan_btn" tool_tip="Vue panoramique"/>
+ <button label="" name="avatarview_btn" tool_tip="Vue subjective"/>
+ <button label="" name="freecamera_btn" tool_tip="Voir l&apos;objet"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
index 111e4d3e5e..8ce6574421 100644
--- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="CHOIX DE TEXTURE ET DE COULEUR">
- <text name="r_val_text">
- Rouge :
- </text>
- <text name="g_val_text">
- Vert :
- </text>
- <text name="b_val_text">
- Bleu :
- </text>
- <text name="h_val_text">
- Teinte :
- </text>
- <text name="s_val_text">
- Sat :
- </text>
- <text name="l_val_text">
- Lum :
- </text>
- <check_box label="Appliquer maintenant" left="4" name="apply_immediate" width="108"/>
- <button label="" label_selected="" left_delta="138" name="color_pipette"/>
- <button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
- <button label="OK" label_selected="Sélectionner" name="select_btn"/>
- <text left="8" name="Current color:">
- Couleur actuelle :
- </text>
- <text left="8" name="(Drag below to save.)" width="114">
- (Faire glisser dessous
-pour enregistrer)
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="CHOIX DE TEXTURE ET DE COULEUR">
+ <text name="r_val_text">
+ Rouge :
+ </text>
+ <text name="g_val_text">
+ Vert :
+ </text>
+ <text name="b_val_text">
+ Bleu :
+ </text>
+ <text name="h_val_text">
+ Teinte :
+ </text>
+ <text name="s_val_text">
+ Sat :
+ </text>
+ <text name="l_val_text">
+ Lum :
+ </text>
+ <check_box label="Appliquer maintenant" left="4" name="apply_immediate" width="108"/>
+ <button label="" label_selected="" left_delta="138" name="color_pipette"/>
+ <button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
+ <button label="OK" label_selected="Sélectionner" name="select_btn"/>
+ <text left="8" name="Current color:">
+ Couleur actuelle :
+ </text>
+ <text left="8" name="(Drag below to save.)" width="114">
+ (Faire glisser dessous
+pour enregistrer)
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
index f670fa9965..2bf0b9e2f3 100644
--- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
@@ -1,106 +1,106 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="godtools floater" title="OUTILS DIVINS">
- <tab_container name="GodTools Tabs">
- <panel label="Grille" name="grid">
- <button label="Éjecter tous" label_selected="Éjecter tous" name="Kick all users" width="175"/>
- <button label="Vider le cache cartographique de la région" label_selected="Vider le cache cartographique de la région" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
- </panel>
- <panel label="Région" name="region">
- <text name="Sim Name:" width="70">
- Nom du sim :
- </text>
- <line_editor left="85" name="region name" width="198"/>
- <check_box label="Initiation" name="check prelude" tool_tip="Définir cette région comme zone d&apos;initiation."/>
- <check_box label="Soleil fixe" name="check fixed sun" tool_tip="Définir la position du soleil (comme dans Région et Domaine &gt; Terrain.)"/>
- <check_box height="32" label="Réinitialiser le domicile
-à la téléportation" name="check reset home" tool_tip="Lorsqu&apos;un résident se téléporte à l&apos;extérieur, réinitialise son domicile à la position de sa destination."/>
- <check_box bottom_delta="-32" label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins."/>
- <check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/>
- <check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/>
- <check_box label="Interdire le terraformage" name="block terraform" tool_tip="Cochez pour empêcher les personnes de terraformer leur terrain"/>
- <check_box label="Bac à sable" name="is sandbox" tool_tip="Basculer cette région en bac à sable."/>
- <button label="Figer le terrain" label_selected="Figer le terrain" name="Bake Terrain" tool_tip="Enregistrer le terrain actuel comme terrain par défaut." width="118"/>
- <button label="Rétablir le terrain" label_selected="Rétablir le terrain" name="Revert Terrain" tool_tip="Remplacer le terrain actuel avec le terrain par défaut." width="118"/>
- <button label="Échanger le terrain" label_selected="Échanger le terrain" name="Swap Terrain" tool_tip="Échangez le terrain actuel avec le terrain par défaut." width="118"/>
- <text name="estate id">
- ID du domaine :
- </text>
- <text name="parent id">
- ID parent :
- </text>
- <line_editor name="parentestate" tool_tip="Il s&apos;agit du domaine parent de cette région"/>
- <text name="Grid Pos: ">
- Position sur la grille :
- </text>
- <line_editor left_delta="120" name="gridposx" tool_tip="Position x de cette région sur la grille" width="35"/>
- <line_editor left_delta="40" name="gridposy" tool_tip="Position y de cette région sur la grille" width="35"/>
- <text name="Redirect to Grid: ">
- Rediriger vers la grille :
- </text>
- <line_editor left_delta="120" name="redirectx" width="35"/>
- <line_editor left_delta="40" name="redirecty" width="35"/>
- <text font="SansSerifSmall" left_delta="-120" name="billable factor text" width="120">
- Facteur de facturation :
- </text>
- <spinner left="320" name="billable factor" width="70"/>
- <text left_delta="-120" name="land cost text">
- L$ par m² :
- </text>
- <spinner left="320" name="land cost" width="70"/>
- <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh" tool_tip="Cliquez ici pour rafraîchir les informations ci-dessus."/>
- <button label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
- <button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l&apos;aide de l&apos;outil Terrain." width="140"/>
- <button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="140"/>
- </panel>
- <panel label="Objets" name="objects">
- <panel.string name="no_target">
- (aucune cible)
- </panel.string>
- <text name="Sim Name:" width="70">
- Nom du sim :
- </text>
- <text left_delta="75" name="region name">
- Welsh
- </text>
- <check_box label="Désactiver les
-scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/>
- <check_box label="Désactiver les
-collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/>
- <check_box label="Désactiver la
-physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/>
- <button bottom="-85" label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
- <button label="Définir la cible" label_selected="Définir la cible" name="Set Target" tool_tip="Définir l&apos;avatar cible pour la suppression de l&apos;objet."/>
- <text name="target_avatar_name">
- (aucune cible)
- </text>
- <button label="Supprimer tous les objets scriptés de la cible sur les terrains des autres" label_selected="Supprimer tous les objets scriptés de la cible sur les terrains des autres" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Supprimer tous les objets scriptés appartenant à la cible sur les terrains ne lui appartenant pas. Les objets non copiables seront renvoyés."/>
- <button label="Supprimer les objets scriptés de la cible sur *tous* les terrains" label_selected="Supprimer les objets scriptés de la cible sur *tous* les terrains" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Supprimer les objets scriptés appartenant à la cible dans cette région. Les objets non copiables seront renvoyés."/>
- <button label="Supprimer *tous* les objets de la cible" label_selected="Supprimer *tous* les objets de la cible" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Supprimer tous les objets appartenant à la cible dans cette région. Les objets non copiables seront renvoyés."/>
- <button label="Afficher les collisions les plus consommatrices" label_selected="Afficher les collisions les plus consommatrices" name="Get Top Colliders" tool_tip="Dresse une liste des objets avec les callbacks les plus fréquents. " width="300"/>
- <button label="Afficher les objets scriptés les plus consommateurs" label_selected="Afficher les objets scriptés les plus consommateurs" name="Get Top Scripts" tool_tip="Dresse une liste des objets qui passent le plus de temps à exécuter des scripts." width="300"/>
- <button label="Résumé des scripts" label_selected="Résumé des scripts" name="Scripts digest" tool_tip="Dresse une liste des scripts et de leurs occurrences." width="300"/>
- </panel>
- <panel label="Requête" name="request">
- <text name="Destination:">
- Destination :
- </text>
- <combo_box name="destination">
- <combo_box.item label="Sélection" name="item1"/>
- <combo_box.item label="Région de l&apos;avatar" name="item2"/>
- </combo_box>
- <text name="Request:">
- Requête :
- </text>
- <combo_box name="request">
- <combo_box.item label="Objets responsables de collisions : étapes" name="item1"/>
- <combo_box.item label="Nombre de scripts et schéma optionnel" name="item2"/>
- <combo_box.item label="Schéma des objets" name="item3"/>
- <combo_box.item label="rezzer &lt;asset_id&gt;" name="item4"/>
- </combo_box>
- <text name="Parameter:">
- Paramètre :
- </text>
- <button label="Effectuer la requête" label_selected="Effectuer la requête" name="Make Request" width="140"/>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="OUTILS DIVINS">
+ <tab_container name="GodTools Tabs">
+ <panel label="Grille" name="grid">
+ <button label="Éjecter tous" label_selected="Éjecter tous" name="Kick all users" width="175"/>
+ <button label="Vider le cache cartographique de la région" label_selected="Vider le cache cartographique de la région" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
+ </panel>
+ <panel label="Région" name="region">
+ <text name="Sim Name:" width="70">
+ Nom du sim :
+ </text>
+ <line_editor left="85" name="region name" width="198"/>
+ <check_box label="Initiation" name="check prelude" tool_tip="Définir cette région comme zone d&apos;initiation."/>
+ <check_box label="Soleil fixe" name="check fixed sun" tool_tip="Définir la position du soleil (comme dans Région et Domaine &gt; Terrain.)"/>
+ <check_box height="32" label="Réinitialiser le domicile
+à la téléportation" name="check reset home" tool_tip="Lorsqu&apos;un résident se téléporte à l&apos;extérieur, réinitialise son domicile à la position de sa destination."/>
+ <check_box bottom_delta="-32" label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins."/>
+ <check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/>
+ <check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/>
+ <check_box label="Interdire le terraformage" name="block terraform" tool_tip="Cochez pour empêcher les personnes de terraformer leur terrain"/>
+ <check_box label="Bac à sable" name="is sandbox" tool_tip="Basculer cette région en bac à sable."/>
+ <button label="Figer le terrain" label_selected="Figer le terrain" name="Bake Terrain" tool_tip="Enregistrer le terrain actuel comme terrain par défaut." width="118"/>
+ <button label="Rétablir le terrain" label_selected="Rétablir le terrain" name="Revert Terrain" tool_tip="Remplacer le terrain actuel avec le terrain par défaut." width="118"/>
+ <button label="Échanger le terrain" label_selected="Échanger le terrain" name="Swap Terrain" tool_tip="Échangez le terrain actuel avec le terrain par défaut." width="118"/>
+ <text name="estate id">
+ ID du domaine :
+ </text>
+ <text name="parent id">
+ ID parent :
+ </text>
+ <line_editor name="parentestate" tool_tip="Il s&apos;agit du domaine parent de cette région"/>
+ <text name="Grid Pos: ">
+ Position sur la grille :
+ </text>
+ <line_editor left_delta="120" name="gridposx" tool_tip="Position x de cette région sur la grille" width="35"/>
+ <line_editor left_delta="40" name="gridposy" tool_tip="Position y de cette région sur la grille" width="35"/>
+ <text name="Redirect to Grid: ">
+ Rediriger vers la grille :
+ </text>
+ <line_editor left_delta="120" name="redirectx" width="35"/>
+ <line_editor left_delta="40" name="redirecty" width="35"/>
+ <text font="SansSerifSmall" left_delta="-120" name="billable factor text" width="120">
+ Facteur de facturation :
+ </text>
+ <spinner left="320" name="billable factor" width="70"/>
+ <text left_delta="-120" name="land cost text">
+ L$ par m² :
+ </text>
+ <spinner left="320" name="land cost" width="70"/>
+ <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh" tool_tip="Cliquez ici pour rafraîchir les informations ci-dessus."/>
+ <button label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
+ <button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l&apos;aide de l&apos;outil Terrain." width="140"/>
+ <button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="140"/>
+ </panel>
+ <panel label="Objets" name="objects">
+ <panel.string name="no_target">
+ (aucune cible)
+ </panel.string>
+ <text name="Sim Name:" width="70">
+ Nom du sim :
+ </text>
+ <text left_delta="75" name="region name">
+ Welsh
+ </text>
+ <check_box label="Désactiver les
+scripts" name="disable scripts" tool_tip="Cochez pour désactiver tous les scripts dans cette région"/>
+ <check_box label="Désactiver les
+collisions" name="disable collisions" tool_tip="Cochez pour désactiver les collisions entre non-avatars dans cette région"/>
+ <check_box label="Désactiver la
+physique" name="disable physics" tool_tip="Cochez pour désactiver tous les effets liés à la physique dans cette région"/>
+ <button bottom="-85" label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
+ <button label="Définir la cible" label_selected="Définir la cible" name="Set Target" tool_tip="Définir l&apos;avatar cible pour la suppression de l&apos;objet."/>
+ <text name="target_avatar_name">
+ (aucune cible)
+ </text>
+ <button label="Supprimer tous les objets scriptés de la cible sur les terrains des autres" label_selected="Supprimer tous les objets scriptés de la cible sur les terrains des autres" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Supprimer tous les objets scriptés appartenant à la cible sur les terrains ne lui appartenant pas. Les objets non copiables seront renvoyés."/>
+ <button label="Supprimer les objets scriptés de la cible sur *tous* les terrains" label_selected="Supprimer les objets scriptés de la cible sur *tous* les terrains" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Supprimer les objets scriptés appartenant à la cible dans cette région. Les objets non copiables seront renvoyés."/>
+ <button label="Supprimer *tous* les objets de la cible" label_selected="Supprimer *tous* les objets de la cible" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Supprimer tous les objets appartenant à la cible dans cette région. Les objets non copiables seront renvoyés."/>
+ <button label="Afficher les collisions les plus consommatrices" label_selected="Afficher les collisions les plus consommatrices" name="Get Top Colliders" tool_tip="Dresse une liste des objets avec les callbacks les plus fréquents. " width="300"/>
+ <button label="Afficher les objets scriptés les plus consommateurs" label_selected="Afficher les objets scriptés les plus consommateurs" name="Get Top Scripts" tool_tip="Dresse une liste des objets qui passent le plus de temps à exécuter des scripts." width="300"/>
+ <button label="Résumé des scripts" label_selected="Résumé des scripts" name="Scripts digest" tool_tip="Dresse une liste des scripts et de leurs occurrences." width="300"/>
+ </panel>
+ <panel label="Requête" name="request">
+ <text name="Destination:">
+ Destination :
+ </text>
+ <combo_box name="destination">
+ <combo_box.item label="Sélection" name="item1"/>
+ <combo_box.item label="Région de l&apos;avatar" name="item2"/>
+ </combo_box>
+ <text name="Request:">
+ Requête :
+ </text>
+ <combo_box name="request">
+ <combo_box.item label="Objets responsables de collisions : étapes" name="item1"/>
+ <combo_box.item label="Nombre de scripts et schéma optionnel" name="item2"/>
+ <combo_box.item label="Schéma des objets" name="item3"/>
+ <combo_box.item label="rezzer &lt;asset_id&gt;" name="item4"/>
+ </combo_box>
+ <text name="Parameter:">
+ Paramètre :
+ </text>
+ <button label="Effectuer la requête" label_selected="Effectuer la requête" name="Make Request" width="140"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
index 018c0d81cf..e9d5ea62f2 100644
--- a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="CONFIGURATION DU MATÉRIEL">
- <text name="Filtering:">
- Filtres :
- </text>
- <check_box label="Filtre anisotrope (plus lent si activé)" name="ani"/>
- <text name="Antialiasing:">
- Anti-aliasing :
- </text>
- <combo_box label="Anti-aliasing" name="fsaa" width="84">
- <combo_box.item label="Désactivé" name="FSAADisabled"/>
- <combo_box.item label="2x" name="2x"/>
- <combo_box.item label="4x" name="4x"/>
- <combo_box.item label="8x" name="8x"/>
- <combo_box.item label="16x" name="16x"/>
- </combo_box>
- <spinner label="Gamma :" name="gamma"/>
- <text left="217" name="(brightness, lower is brighter)">
- (0 = défaut, valeur faible = plus lumineux)
- </text>
- <text name="Enable VBO:">
- Activer le VBO :
- </text>
- <check_box label="Activer OpenGL Vertex Buffer Objects" name="vbo" tool_tip="Sur un matériel moderne, cette option permet une meilleure performance. Par contre, sur un matériel plus ancien, les VBO sont souvent mal implémentés et peuvent causer des crashs lorsqu&apos;ils sont activés."/>
- <slider label="Mémoire vidéo (Mo) :" name="GrapicsCardTextureMemory" tool_tip="Total de la mémoire alloué aux textures. Mémoire de la carte vidéo par défaut. En réduisant cette valeur, vous pouvez accroître la performance mais les textures risquent de devenir floues."/>
- <spinner label="Indice du brouillard :" name="fog"/>
- <button label="OK" label_selected="OK" name="OK"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="CONFIGURATION DU MATÉRIEL">
+ <text name="Filtering:">
+ Filtres :
+ </text>
+ <check_box label="Filtre anisotrope (plus lent si activé)" name="ani"/>
+ <text name="Antialiasing:">
+ Anti-aliasing :
+ </text>
+ <combo_box label="Anti-aliasing" name="fsaa" width="84">
+ <combo_box.item label="Désactivé" name="FSAADisabled"/>
+ <combo_box.item label="2x" name="2x"/>
+ <combo_box.item label="4x" name="4x"/>
+ <combo_box.item label="8x" name="8x"/>
+ <combo_box.item label="16x" name="16x"/>
+ </combo_box>
+ <spinner label="Gamma :" name="gamma"/>
+ <text left="217" name="(brightness, lower is brighter)">
+ (0 = défaut, valeur faible = plus lumineux)
+ </text>
+ <text name="Enable VBO:">
+ Activer le VBO :
+ </text>
+ <check_box label="Activer OpenGL Vertex Buffer Objects" name="vbo" tool_tip="Sur un matériel moderne, cette option permet une meilleure performance. Par contre, sur un matériel plus ancien, les VBO sont souvent mal implémentés et peuvent causer des crashs lorsqu&apos;ils sont activés."/>
+ <slider label="Mémoire vidéo (Mo) :" name="GrapicsCardTextureMemory" tool_tip="Total de la mémoire alloué aux textures. Mémoire de la carte vidéo par défaut. En réduisant cette valeur, vous pouvez accroître la performance mais les textures risquent de devenir floues."/>
+ <spinner label="Indice du brouillard :" name="fog"/>
+ <button label="OK" label_selected="OK" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_image_preview.xml b/indra/newview/skins/default/xui/fr/floater_image_preview.xml
index 57b60a28bf..a28e0bd7d5 100644
--- a/indra/newview/skins/default/xui/fr/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_image_preview.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Image Preview" title="">
- <text name="name_label">
- Nom :
- </text>
- <text name="description_label">
- Description :
- </text>
- <text name="preview_label">
- Prévisualiser comme :
- </text>
- <combo_box label="Habits" left="126" name="clothing_type_combo">
- <combo_box.item label="Image" name="Image"/>
- <combo_box.item label="Cheveux" name="Hair"/>
- <combo_box.item label="Tête de femme" name="FemaleHead"/>
- <combo_box.item label="Corps de femme (haut)" name="FemaleUpperBody"/>
- <combo_box.item label="Corps de femme (bas)" name="FemaleLowerBody"/>
- <combo_box.item label="Tête d&apos;homme" name="MaleHead"/>
- <combo_box.item label="Corps d&apos;homme (haut)" name="MaleUpperBody"/>
- <combo_box.item label="Corps d&apos;homme (bas)" name="MaleLowerBody"/>
- <combo_box.item label="Jupe" name="Skirt"/>
- <combo_box.item label="Sculptie" name="SculptedPrim"/>
- </combo_box>
- <text name="bad_image_text">
- Impossible de lire l&apos;image.
-
-Sauvegardez en Targa 24 bit (.tga).
- </text>
- <check_box label="Utiliser une compression sans perte" name="lossless_check"/>
- <button label="Annuler" name="cancel_btn"/>
- <button label="Charger ([AMOUNT] L$)" name="ok_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview" title="">
+ <text name="name_label">
+ Nom :
+ </text>
+ <text name="description_label">
+ Description :
+ </text>
+ <text name="preview_label">
+ Prévisualiser comme :
+ </text>
+ <combo_box label="Habits" left="126" name="clothing_type_combo">
+ <combo_box.item label="Image" name="Image"/>
+ <combo_box.item label="Cheveux" name="Hair"/>
+ <combo_box.item label="Tête de femme" name="FemaleHead"/>
+ <combo_box.item label="Corps de femme (haut)" name="FemaleUpperBody"/>
+ <combo_box.item label="Corps de femme (bas)" name="FemaleLowerBody"/>
+ <combo_box.item label="Tête d&apos;homme" name="MaleHead"/>
+ <combo_box.item label="Corps d&apos;homme (haut)" name="MaleUpperBody"/>
+ <combo_box.item label="Corps d&apos;homme (bas)" name="MaleLowerBody"/>
+ <combo_box.item label="Jupe" name="Skirt"/>
+ <combo_box.item label="Sculptie" name="SculptedPrim"/>
+ </combo_box>
+ <text name="bad_image_text">
+ Impossible de lire l&apos;image.
+
+Sauvegardez en Targa 24 bit (.tga).
+ </text>
+ <check_box label="Utiliser une compression sans perte" name="lossless_check"/>
+ <button label="Annuler" name="cancel_btn"/>
+ <button label="Charger ([AMOUNT] L$)" name="ok_btn"/>
+</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 2e982305bf..44d420d865 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="item properties" title="PROPRIÉTÉS DE L&apos;OBJET DE L&apos;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>
- <text name="LabelItemNameTitle">
- Nom :
- </text>
- <text name="LabelItemDescTitle">
- Description :
- </text>
- <text name="LabelCreatorTitle">
- Créateur :
- </text>
- <text name="LabelCreatorName">
- Nicole Linden
- </text>
- <button label="Profil..." label_selected="" name="BtnCreator"/>
- <text name="LabelOwnerTitle">
- Propriétaire :
- </text>
- <text name="LabelOwnerName">
- Thrax Linden
- </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>
- <check_box label="Éditer" name="CheckOwnerModify"/>
- <check_box label="Copier" name="CheckOwnerCopy"/>
- <check_box label="Revendre" name="CheckOwnerTransfer"/>
- <text name="AnyoneLabel">
- N&apos;importe qui :
- </text>
- <check_box label="Copier" name="CheckEveryoneCopy"/>
- <text name="GroupLabel">
- Groupe :
- </text>
- <check_box label="Partager" name="CheckShareWithGroup"/>
- <text name="NextOwnerLabel" width="192">
- Le prochain propriétaire :
- </text>
- <check_box label="Éditer" 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.item label="Copier" name="Copy"/>
- <combo_box.item label="Original" name="Original"/>
- </combo_box>
- <spinner label="Prix : L$" name="Edit Cost"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="PROPRIÉTÉS DE L&apos;OBJET DE L&apos;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>
+ <text name="LabelItemNameTitle">
+ Nom :
+ </text>
+ <text name="LabelItemDescTitle">
+ Description :
+ </text>
+ <text name="LabelCreatorTitle">
+ Créateur :
+ </text>
+ <text name="LabelCreatorName">
+ Nicole Linden
+ </text>
+ <button label="Profil..." label_selected="" name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ Propriétaire :
+ </text>
+ <text name="LabelOwnerName">
+ Thrax Linden
+ </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>
+ <check_box label="Éditer" name="CheckOwnerModify"/>
+ <check_box label="Copier" name="CheckOwnerCopy"/>
+ <check_box label="Revendre" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ N&apos;importe qui :
+ </text>
+ <check_box label="Copier" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ Groupe :
+ </text>
+ <check_box label="Partager" name="CheckShareWithGroup"/>
+ <text name="NextOwnerLabel" width="192">
+ Le prochain propriétaire :
+ </text>
+ <check_box label="Éditer" 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.item label="Copier" name="Copy"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Prix : L$" name="Edit Cost"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
index 87fe2a8352..1b3127c35d 100644
--- a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="MES TERRAINS">
- <scroll_list name="parcel list">
- <column label="Parcelle" name="name"/>
- <column label="Région" name="location"/>
- <column label="Type" name="type"/>
- <column label="Surface" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Téléporter" label_selected="Téléporter" name="Teleport" tool_tip="Téléportez-vous au milieu de ce terrain."/>
- <button label="Carte" label_selected="Carte" name="Show on Map" tool_tip="Affichez ce terrain sur la carte du monde."/>
- <text name="contrib_label">
- Vos contributions :
- </text>
- <scroll_list name="grant list">
- <column label="Groupe" name="group"/>
- <column label="Surface" name="area"/>
- </scroll_list>
- <text name="allowed_label">
- Surface de terrain autorisée avec votre compte :
- </text>
- <text name="allowed_text">
- [AREA] m²
- </text>
- <text name="current_label">
- Surface occupée actuellement :
- </text>
- <text name="current_text">
- [AREA] m²
- </text>
- <text name="available_label">
- Disponible à l&apos;achat :
- </text>
- <text name="available_text">
- [AREA] m²
- </text>
- <string name="area_string">
- [AREA] m²
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="MES TERRAINS">
+ <scroll_list name="parcel list">
+ <column label="Parcelle" name="name"/>
+ <column label="Région" name="location"/>
+ <column label="Type" name="type"/>
+ <column label="Surface" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="Téléporter" label_selected="Téléporter" name="Teleport" tool_tip="Téléportez-vous au milieu de ce terrain."/>
+ <button label="Carte" label_selected="Carte" name="Show on Map" tool_tip="Affichez ce terrain sur la carte du monde."/>
+ <text name="contrib_label">
+ Vos contributions :
+ </text>
+ <scroll_list name="grant list">
+ <column label="Groupe" name="group"/>
+ <column label="Surface" name="area"/>
+ </scroll_list>
+ <text name="allowed_label">
+ Surface de terrain autorisée avec votre compte :
+ </text>
+ <text name="allowed_text">
+ [AREA] m²
+ </text>
+ <text name="current_label">
+ Surface occupée actuellement :
+ </text>
+ <text name="current_text">
+ [AREA] m²
+ </text>
+ <text name="available_label">
+ Disponible à l&apos;achat :
+ </text>
+ <text name="available_text">
+ [AREA] m²
+ </text>
+ <string name="area_string">
+ [AREA] m²
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
index 4879327ace..2231d503b2 100644
--- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="SCRIPT : NOUVEAU SCRIPT">
- <floater.string name="not_allowed">
- Ce scipt ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l&apos;intérieur d&apos;un objet, vous devez avoir les permissions requises.
- </floater.string>
- <floater.string name="script_running">
- Exécution en cours
- </floater.string>
- <floater.string name="Title">
- Script : [NAME]
- </floater.string>
- <button label="Réinitialiser" label_selected="Réinitialiser" left="390" name="Reset" width="100"/>
- <check_box initial_value="true" label="Exécution en cours" left="4" name="running"/>
- <check_box initial_value="true" label="Mono" left="130" name="mono"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="SCRIPT : NOUVEAU SCRIPT">
+ <floater.string name="not_allowed">
+ Ce scipt ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l&apos;intérieur d&apos;un objet, vous devez avoir les permissions requises.
+ </floater.string>
+ <floater.string name="script_running">
+ Exécution en cours
+ </floater.string>
+ <floater.string name="Title">
+ Script : [NAME]
+ </floater.string>
+ <button label="Réinitialiser" label_selected="Réinitialiser" left="390" name="Reset" width="100"/>
+ <check_box initial_value="true" label="Exécution en cours" left="4" name="running"/>
+ <check_box initial_value="true" label="Mono" left="130" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
index de5b707ee4..aeef4b0e91 100644
--- a/indra/newview/skins/default/xui/fr/floater_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_map.xml
@@ -1,54 +1,54 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
- <floater.string name="mini_map_north">
- N
- </floater.string>
- <floater.string name="mini_map_east">
- E
- </floater.string>
- <floater.string name="mini_map_west">
- O
- </floater.string>
- <floater.string name="mini_map_south">
- S
- </floater.string>
- <floater.string name="mini_map_southeast">
- SE
- </floater.string>
- <floater.string name="mini_map_northeast">
- NE
- </floater.string>
- <floater.string name="mini_map_southwest">
- SO
- </floater.string>
- <floater.string name="mini_map_northwest">
- NO
- </floater.string>
- <floater.string name="ToolTipMsg">
- [AGENT][REGION](Double-cliquez pour ouvrir la carte)
- </floater.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="E" name="floater_map_east" text="E">
- E
- </text>
- <text label="O" name="floater_map_west" text="O">
- O
- </text>
- <text label="S" name="floater_map_south" text="S">
- S
- </text>
- <text label="SE" name="floater_map_southeast" text="SE">
- SE
- </text>
- <text label="NE" name="floater_map_northeast" text="NE">
- NE
- </text>
- <text label="SO" name="floater_map_southwest" text="SO">
- SO
- </text>
- <text label="NO" name="floater_map_northwest" text="NO">
- NO
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map">
+ <floater.string name="mini_map_north">
+ N
+ </floater.string>
+ <floater.string name="mini_map_east">
+ E
+ </floater.string>
+ <floater.string name="mini_map_west">
+ O
+ </floater.string>
+ <floater.string name="mini_map_south">
+ S
+ </floater.string>
+ <floater.string name="mini_map_southeast">
+ SE
+ </floater.string>
+ <floater.string name="mini_map_northeast">
+ NE
+ </floater.string>
+ <floater.string name="mini_map_southwest">
+ SO
+ </floater.string>
+ <floater.string name="mini_map_northwest">
+ NO
+ </floater.string>
+ <floater.string name="ToolTipMsg">
+ [AGENT][REGION](Double-cliquez pour ouvrir la carte)
+ </floater.string>
+ <text label="N" name="floater_map_north" text="N">
+ N
+ </text>
+ <text label="E" name="floater_map_east" text="E">
+ E
+ </text>
+ <text label="O" name="floater_map_west" text="O">
+ O
+ </text>
+ <text label="S" name="floater_map_south" text="S">
+ S
+ </text>
+ <text label="SE" name="floater_map_southeast" text="SE">
+ SE
+ </text>
+ <text label="NE" name="floater_map_northeast" text="NE">
+ NE
+ </text>
+ <text label="SO" name="floater_map_southwest" text="SO">
+ SO
+ </text>
+ <text label="NO" name="floater_map_northwest" text="NO">
+ NO
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
index 377b80f847..44ab075271 100644
--- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
@@ -1,31 +1,31 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVIGATEUR">
- <floater.string name="home_page_url">
- http://www.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://support.secondlife.com
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="Précédente" name="back" width="75"/>
- <button label="Suivante" left_delta="75" name="forward" width="70"/>
- <button label="Rafraîchir" left_delta="75" name="reload"/>
- <combo_box left_delta="75" name="address" width="510"/>
- <button label="OK" left_delta="515" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="en arrière" name="rewind"/>
- <button label="stop" name="stop"/>
- <button label="en avant" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="Envoyer l&apos;URL sur la parcelle" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="Ouvrir dans mon navigateur web" name="open_browser" width="196"/>
- <check_box label="Toujours ouvrir dans mon navigateur web" left_delta="201" name="open_always"/>
- <button label="Fermer" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="NAVIGATEUR">
+ <floater.string name="home_page_url">
+ http://www.secondlife.com
+ </floater.string>
+ <floater.string name="support_page_url">
+ http://support.secondlife.com
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button label="Précédente" name="back" width="75"/>
+ <button label="Suivante" left_delta="75" name="forward" width="70"/>
+ <button label="Rafraîchir" left_delta="75" name="reload"/>
+ <combo_box left_delta="75" name="address" width="510"/>
+ <button label="OK" left_delta="515" name="go"/>
+ </layout_panel>
+ <layout_panel name="time_controls">
+ <button label="en arrière" name="rewind"/>
+ <button label="stop" name="stop"/>
+ <button label="en avant" name="seek"/>
+ </layout_panel>
+ <layout_panel name="parcel_owner_controls">
+ <button label="Envoyer l&apos;URL sur la parcelle" name="assign"/>
+ </layout_panel>
+ <layout_panel name="external_controls">
+ <button label="Ouvrir dans mon navigateur web" name="open_browser" width="196"/>
+ <check_box label="Toujours ouvrir dans mon navigateur web" left_delta="201" name="open_always"/>
+ <button label="Fermer" name="close"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
index aadf16ab8a..eb0f0e64ce 100644
--- a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="Simuler une fuite de mémoire">
- <spinner label="Vitesse de la fuite (octets) :" name="leak_speed"/>
- <spinner label="Max mémoire perdue (Mo) :" name="max_leak"/>
- <text name="total_leaked_label">
- Mémoire perdue actuelle : [SIZE] Ko
- </text>
- <text name="note_label_1">
- [NOTE1]
- </text>
- <text name="note_label_2">
- [NOTE2]
- </text>
- <button label="Commencer" name="start_btn" width="85"/>
- <button label="Stop" left="100" name="stop_btn"/>
- <button label="Libérer" left="177" name="release_btn"/>
- <button label="Fermer" name="close_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="Simuler une fuite de mémoire">
+ <spinner label="Vitesse de la fuite (octets) :" name="leak_speed"/>
+ <spinner label="Max mémoire perdue (Mo) :" name="max_leak"/>
+ <text name="total_leaked_label">
+ Mémoire perdue actuelle : [SIZE] Ko
+ </text>
+ <text name="note_label_1">
+ [NOTE1]
+ </text>
+ <text name="note_label_2">
+ [NOTE2]
+ </text>
+ <button label="Commencer" name="start_btn" width="85"/>
+ <button label="Stop" left="100" name="stop_btn"/>
+ <button label="Libérer" left="177" name="release_btn"/>
+ <button label="Fermer" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml
index 7e7dc53c6c..528fa309eb 100644
--- a/indra/newview/skins/default/xui/fr/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_moveview.xml
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
- <string name="walk_forward_tooltip">
- Vous déplacer vers l&apos;avant (appuyer sur la flèche vers le haut ou W)
- </string>
- <string name="walk_back_tooltip">
- Marcher en arrière (appuyer sur la flèche vers le bas ou S)
- </string>
- <string name="run_forward_tooltip">
- Courir vers l&apos;avant (appuyer sur la flèche vers le haut ou W)
- </string>
- <string name="run_back_tooltip">
- Courir en arrière (appuyer sur la flèche vers le bas ou S)
- </string>
- <string name="fly_forward_tooltip">
- Voler vers l&apos;avant (appuyer sur la flèche vers le haut ou W)
- </string>
- <string name="fly_back_tooltip">
- Voler vers l&apos;arrière (appuyer sur la flèche vers le bas ou S)
- </string>
- <panel name="panel_actions">
- <button label="" label_selected="" name="turn left btn" tool_tip="Tourner à gauche (appuyer sur la flèche de gauche ou sur A)"/>
- <button label="" label_selected="" name="turn right btn" tool_tip="Tourner à droite (appuyer sur la flèche de droite ou sur D)"/>
- <button label="" label_selected="" name="move up btn" tool_tip="Vous envoler, appuyer sur E"/>
- <button label="" label_selected="" name="move down btn" tool_tip="Atterrir, appuyer sur C"/>
- <joystick_turn name="forward btn" tool_tip="Vous déplacer vers l&apos;avant (appuyer sur la flèche vers le haut ou W)"/>
- <joystick_turn name="backward btn" tool_tip="Marcher en arrière (appuyer sur la flèche vers le bas ou S)"/>
- </panel>
- <panel name="panel_modes">
- <button label="" name="mode_walk_btn" tool_tip="Mode marche"/>
- <button label="" name="mode_run_btn" tool_tip="Mode courir"/>
- <button label="" name="mode_fly_btn" tool_tip="Mode voler"/>
- <button label="Atterrir" name="stop_fly_btn" tool_tip="Atterrir"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater">
+ <string name="walk_forward_tooltip">
+ Vous déplacer vers l&apos;avant (appuyer sur la flèche vers le haut ou W)
+ </string>
+ <string name="walk_back_tooltip">
+ Marcher en arrière (appuyer sur la flèche vers le bas ou S)
+ </string>
+ <string name="run_forward_tooltip">
+ Courir vers l&apos;avant (appuyer sur la flèche vers le haut ou W)
+ </string>
+ <string name="run_back_tooltip">
+ Courir en arrière (appuyer sur la flèche vers le bas ou S)
+ </string>
+ <string name="fly_forward_tooltip">
+ Voler vers l&apos;avant (appuyer sur la flèche vers le haut ou W)
+ </string>
+ <string name="fly_back_tooltip">
+ Voler vers l&apos;arrière (appuyer sur la flèche vers le bas ou S)
+ </string>
+ <panel name="panel_actions">
+ <button label="" label_selected="" name="turn left btn" tool_tip="Tourner à gauche (appuyer sur la flèche de gauche ou sur A)"/>
+ <button label="" label_selected="" name="turn right btn" tool_tip="Tourner à droite (appuyer sur la flèche de droite ou sur D)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="Vous envoler, appuyer sur E"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="Atterrir, appuyer sur C"/>
+ <joystick_turn name="forward btn" tool_tip="Vous déplacer vers l&apos;avant (appuyer sur la flèche vers le haut ou W)"/>
+ <joystick_turn name="backward btn" tool_tip="Marcher en arrière (appuyer sur la flèche vers le bas ou S)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="Mode marche"/>
+ <button label="" name="mode_run_btn" tool_tip="Mode courir"/>
+ <button label="" name="mode_fly_btn" tool_tip="Mode voler"/>
+ <button label="Atterrir" name="stop_fly_btn" tool_tip="Atterrir"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml
index 5432cb27d0..50d7049bba 100644
--- a/indra/newview/skins/default/xui/fr/floater_pay.xml
+++ b/indra/newview/skins/default/xui/fr/floater_pay.xml
@@ -1,20 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Give Money" title="">
- <text left="5" name="payee_label">
- Payer :
- </text>
- <icon name="icon_person" tool_tip="Résident"/>
- <text name="payee_name">
- [FIRST] [LAST]
- </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 choisissez 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"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money" title="">
+ <text left="5" name="payee_label">
+ Payer :
+ </text>
+ <icon name="icon_person" tool_tip="Résident"/>
+ <text name="payee_name">
+ [FIRST] [LAST]
+ </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 choisissez 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"/>
+</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 04511f5ba0..a8cac0b566 100644
--- 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,30 @@
-<?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">
- [FIRST] [LAST]
- </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$" left="105" name="fastpay 1"/>
- <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
- <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
- <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
- <text halign="left" left="5" name="amount text">
- Ou choisissez 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"/>
-</floater>
+<?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">
+ [FIRST] [LAST]
+ </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$" left="105" name="fastpay 1"/>
+ <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
+ <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
+ <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
+ <text halign="left" left="5" name="amount text">
+ Ou choisissez 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"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
index b7d3eb0a79..4811760bbf 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_anim">
- <floater.string name="Title">
- Animation : [NAME]
- </floater.string>
- <text name="desc txt">
- Description :
- </text>
- <button label="Jouer dans le Monde" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Jouer cette animation et partagez-la avec d&apos;autres." width="131"/>
- <button label="Jouer localement" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Jouer cette animation et soyez le seul à la voir." width="125"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+ <floater.string name="Title">
+ Animation : [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Description :
+ </text>
+ <button label="Jouer dans le Monde" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Jouer cette animation et partagez-la avec d&apos;autres." width="131"/>
+ <button label="Jouer localement" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Jouer cette animation et soyez le seul à la voir." width="125"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml
index a50a4057f8..f7a70db96e 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="classified_preview" title="INFORMATIONS SUR LA PETITE ANNONCE">
- <floater.string name="Title">
- Petite annonce : [NAME]
- </floater.string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="classified_preview" title="INFORMATIONS SUR LA PETITE ANNONCE">
+ <floater.string name="Title">
+ Petite annonce : [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_event.xml b/indra/newview/skins/default/xui/fr/floater_preview_event.xml
index b901751eec..30e6a218cb 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_event.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="INFORMATIONS SUR L&apos;ÉVÉNEMENT">
- <floater.string name="Title">
- Événement : [NAME]
- </floater.string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="event_preview" title="INFORMATIONS SUR L&apos;ÉVÉNEMENT">
+ <floater.string name="Title">
+ Événement : [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml
index e6a4514460..4bdd52f14a 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="Raccourci du geste"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="Raccourci du geste"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml
index e6a4514460..4bdd52f14a 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="Raccourci du geste"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="Raccourci du geste"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
index 1039760623..d5d984238a 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="REMARQUE :">
- <floater.string name="no_object">
- Impossible de trouver l&apos;objet contenant cette note.
- </floater.string>
- <floater.string name="not_allowed">
- Vous n&apos;avez pas le droit de voir cette note.
- </floater.string>
- <floater.string name="Title">
- Note : [NAME]
- </floater.string>
- <floater.string label="Enregistrer" label_selected="Enregistrer" name="Save">
- Enregistrer
- </floater.string>
- <text name="desc txt">
- Description :
- </text>
- <text_editor name="Notecard Editor">
- Chargement...
- </text_editor>
- <button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="REMARQUE :">
+ <floater.string name="no_object">
+ Impossible de trouver l&apos;objet contenant cette note.
+ </floater.string>
+ <floater.string name="not_allowed">
+ Vous n&apos;avez pas le droit de voir cette note.
+ </floater.string>
+ <floater.string name="Title">
+ Note : [NAME]
+ </floater.string>
+ <floater.string label="Enregistrer" label_selected="Enregistrer" name="Save">
+ Enregistrer
+ </floater.string>
+ <text name="desc txt">
+ Description :
+ </text>
+ <text_editor name="Notecard Editor">
+ Chargement...
+ </text_editor>
+ <button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
index d1729ac8df..9d9b067a8d 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_sound">
- <floater.string name="Title">
- Son : [NAME]
- </floater.string>
- <text name="desc txt">
- Description :
- </text>
- <button label="Jouer dans le Monde" label_selected="Jouer dans le Monde" left_delta="-142" name="Sound play btn" tool_tip="Jouer ce son et partagez-le avec d&apos;autres." width="131"/>
- <button label="Jouer localement" label_selected="Jouer localement" left="162" name="Sound audition btn" tool_tip="Jouer ce son et soyez le seul à l&apos;entendre." width="125"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+ <floater.string name="Title">
+ Son : [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Description :
+ </text>
+ <button label="Jouer dans le Monde" label_selected="Jouer dans le Monde" left_delta="-142" name="Sound play btn" tool_tip="Jouer ce son et partagez-le avec d&apos;autres." width="131"/>
+ <button label="Jouer localement" label_selected="Jouer localement" left="162" name="Sound audition btn" tool_tip="Jouer ce son et soyez le seul à l&apos;entendre." width="125"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
index beebebfd4d..a2653143a6 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_texture">
- <floater.string name="Title">
- Texture : [NAME]
- </floater.string>
- <floater.string name="Copy">
- Copier dans l&apos;inventaire
- </floater.string>
- <text name="desc txt">
- Description :
- </text>
- <button label="Enregistrer" name="Keep"/>
- <button label="Supprimer" name="Discard"/>
- <text name="dimensions">
- [WIDTH]px x [HEIGHT]px
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+ <floater.string name="Title">
+ Texture : [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ Copier dans l&apos;inventaire
+ </floater.string>
+ <text name="desc txt">
+ Description :
+ </text>
+ <button label="Enregistrer" name="Keep"/>
+ <button label="Supprimer" name="Discard"/>
+ <text name="dimensions">
+ [WIDTH]px x [HEIGHT]px
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
index 6335e41bab..77d2b37eba 100644
--- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
@@ -1,104 +1,104 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_report_abuse" title="SIGNALER UNE INFRACTION">
- <floater.string name="Screenshot">
- Capture d&apos;écran
- </floater.string>
- <check_box label="Utiliser cette capture d&apos;écran" name="screen_check"/>
- <text name="reporter_title" width="60">
- Déposant :
- </text>
- <text name="reporter_field">
- Loremipsum Dolorsitamut
- </text>
- <text name="sim_title">
- Région :
- </text>
- <text name="sim_field">
- Nom de la région
- </text>
- <text name="pos_title">
- Position :
- </text>
- <text name="pos_field">
- {128.1, 128.1, 15.4}
- </text>
- <text name="select_object_label">
- Cliquez sur le bouton puis l&apos;objet responsable :
- </text>
- <button label="" label_selected="" name="pick_btn" tool_tip="Le sélecteur d&apos;objet vous permet d&apos;identifier un objet comme sujet du rapport."/>
- <text name="object_name_label">
- Objet :
- </text>
- <text left_delta="70" name="object_name" width="105">
- Consetetur Sadipscing
- </text>
- <text name="owner_name_label" width="66">
- Propriétaire :
- </text>
- <text left_delta="70" name="owner_name" width="105">
- Hendrerit Vulputate
- </text>
- <combo_box name="category_combo" tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport">
- <combo_box.item label="Sélectionnez une catégorie" name="Select_category"/>
- <combo_box.item label="Âge &gt; « Age play »" name="Age__Age_play"/>
- <combo_box.item label="Âge &gt; Résident adulte sur Second Life pour adolescents" name="Age__Adult_resident_on_Teen_Second_Life"/>
- <combo_box.item label="Âge &gt; Resident mineur en dehors de Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
- <combo_box.item label="Assaut &gt; Bac à sable utilisé pour des combats/zone non sécurisée" name="Assault__Combat_sandbox___unsafe_area"/>
- <combo_box.item label="Assaut &gt; Zone sécurisée" name="Assault__Safe_area"/>
- <combo_box.item label="Assaut &gt; Bac à sable pour tests d&apos;armes à feu" name="Assault__Weapons_testing_sandbox"/>
- <combo_box.item label="Commerce &gt; Incapacité à fournir un produit ou service" name="Commerce__Failure_to_deliver_product_or_service"/>
- <combo_box.item label="Divulgation &gt; Informations sur la vie réelle" name="Disclosure__Real_world_information"/>
- <combo_box.item label="Divulgation &gt; Écoute d&apos;un chat à distance" name="Disclosure__Remotely_monitoring chat"/>
- <combo_box.item label="Divulgation &gt; Informations sur Second Life/chat/IM" name="Disclosure__Second_Life_information_chat_IMs"/>
- <combo_box.item label="Trouble de la paix &gt; Utilisation inadéquate des ressources de la région" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
- <combo_box.item label="Trouble de la paix &gt; Nombre d&apos;objets scriptés excessif" name="Disturbing_the_peace__Excessive_scripted_objects"/>
- <combo_box.item label="Trouble de la paix &gt; Abandon d&apos;objets" name="Disturbing_the_peace__Object_littering"/>
- <combo_box.item label="Trouble de la paix &gt; Spam à répétition" name="Disturbing_the_peace__Repetitive_spam"/>
- <combo_box.item label="Trouble de la paix &gt; Spam à caractère commercial" name="Disturbing_the_peace__Unwanted_advert_spam"/>
- <combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
- <combo_box.item label="Fraude &gt; Terrain" name="Fraud__Land"/>
- <combo_box.item label="Fraude &gt; Vente pyramidale ou lettre-chaîne" name="Fraud__Pyramid_scheme_or_chain_letter"/>
- <combo_box.item label="Fraude &gt; US$" name="Fraud__US$"/>
- <combo_box.item label="Harcèlement &gt; Spam visuel" name="Harassment__Advert_farms___visual_spam"/>
- <combo_box.item label="Harcèlement &gt; Diffamation envers des individus ou des groupes" name="Harassment__Defaming_individuals_or_groups"/>
- <combo_box.item label="Harcèlement &gt; Immobilisation" name="Harassment__Impeding_movement"/>
- <combo_box.item label="Harcèlement &gt; Harcèlement sexuel" name="Harassment__Sexual_harassment"/>
- <combo_box.item label="Harcèlement &gt; Incitation à enfreindre les Conditions d&apos;utilisation" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
- <combo_box.item label="Harcèlement &gt; Abus verbal" name="Harassment__Verbal_abuse"/>
- <combo_box.item label="Indécence &gt; Contenu ou comportement offensifs" name="Indecency__Broadly_offensive_content_or_conduct"/>
- <combo_box.item label="Indécence &gt; Nom d&apos;avatar inapproprié" name="Indecency__Inappropriate_avatar_name"/>
- <combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région PG" name="Indecency__Mature_content_in_PG_region"/>
- <combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région Mature" name="Indecency__Inappropriate_content_in_Mature_region"/>
- <combo_box.item label="Violation de droits de propriété intellectuelle &gt; Suppression de contenu" name="Intellectual_property_infringement_Content_Removal"/>
- <combo_box.item label="Violation de droits de propriété intellectuelle &gt; CopyBot ou exploitation abusive des droits" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
- <combo_box.item label="Intolérance" name="Intolerance"/>
- <combo_box.item label="Terrain &gt; Utilisation abusive des ressources du bac à sable" name="Land__Abuse_of_sandbox_resources"/>
- <combo_box.item label="Terrain &gt; Empiètement &gt; Objets/textures" name="Land__Encroachment__Objects_textures"/>
- <combo_box.item label="Terrain &gt; Empiètement &gt; Particules" name="Land__Encroachment__Particles"/>
- <combo_box.item label="Terrain &gt; Empiètement &gt; Arbres/plantes" name="Land__Encroachment__Trees_plants"/>
- <combo_box.item label="Paris/jeux d&apos;argent" name="Wagering_gambling"/>
- <combo_box.item label="Autre" name="Other"/>
- </combo_box>
- <text name="abuser_name_title">
- Nom du contrevenant :
- </text>
- <button label="Choisir" label_selected="" name="select_abuser" tool_tip="Sélectionnez le nom du résident dans une liste"/>
- <text name="abuser_name_title2">
- Indiquez où l&apos;infraction a eu lieu :
- </text>
- <text name="sum_title">
- Récapitulatif :
- </text>
- <text name="dscr_title">
- Détails :
- </text>
- <text name="bug_aviso">
- Soyez aussi spécifique que possible
- </text>
- <text bottom_delta="-16" name="incomplete_title">
- Remarque : les rapports incomplets ne feront pas l&apos;objet d&apos;une
-enquête.
- </text>
- <button label="Signaler une infraction" label_selected="Signaler une infraction" name="send_btn"/>
- <button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="SIGNALER UNE INFRACTION">
+ <floater.string name="Screenshot">
+ Capture d&apos;écran
+ </floater.string>
+ <check_box label="Utiliser cette capture d&apos;écran" name="screen_check"/>
+ <text name="reporter_title" width="60">
+ Déposant :
+ </text>
+ <text name="reporter_field">
+ Loremipsum Dolorsitamut
+ </text>
+ <text name="sim_title">
+ Région :
+ </text>
+ <text name="sim_field">
+ Nom de la région
+ </text>
+ <text name="pos_title">
+ Position :
+ </text>
+ <text name="pos_field">
+ {128.1, 128.1, 15.4}
+ </text>
+ <text name="select_object_label">
+ Cliquez sur le bouton puis l&apos;objet responsable :
+ </text>
+ <button label="" label_selected="" name="pick_btn" tool_tip="Le sélecteur d&apos;objet vous permet d&apos;identifier un objet comme sujet du rapport."/>
+ <text name="object_name_label">
+ Objet :
+ </text>
+ <text left_delta="70" name="object_name" width="105">
+ Consetetur Sadipscing
+ </text>
+ <text name="owner_name_label" width="66">
+ Propriétaire :
+ </text>
+ <text left_delta="70" name="owner_name" width="105">
+ Hendrerit Vulputate
+ </text>
+ <combo_box name="category_combo" tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport">
+ <combo_box.item label="Sélectionnez une catégorie" name="Select_category"/>
+ <combo_box.item label="Âge &gt; « Age play »" name="Age__Age_play"/>
+ <combo_box.item label="Âge &gt; Résident adulte sur Second Life pour adolescents" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="Âge &gt; Resident mineur en dehors de Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="Assaut &gt; Bac à sable utilisé pour des combats/zone non sécurisée" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="Assaut &gt; Zone sécurisée" name="Assault__Safe_area"/>
+ <combo_box.item label="Assaut &gt; Bac à sable pour tests d&apos;armes à feu" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="Commerce &gt; Incapacité à fournir un produit ou service" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="Divulgation &gt; Informations sur la vie réelle" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="Divulgation &gt; Écoute d&apos;un chat à distance" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="Divulgation &gt; Informations sur Second Life/chat/IM" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="Trouble de la paix &gt; Utilisation inadéquate des ressources de la région" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="Trouble de la paix &gt; Nombre d&apos;objets scriptés excessif" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="Trouble de la paix &gt; Abandon d&apos;objets" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="Trouble de la paix &gt; Spam à répétition" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="Trouble de la paix &gt; Spam à caractère commercial" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
+ <combo_box.item label="Fraude &gt; Terrain" name="Fraud__Land"/>
+ <combo_box.item label="Fraude &gt; Vente pyramidale ou lettre-chaîne" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="Fraude &gt; US$" name="Fraud__US$"/>
+ <combo_box.item label="Harcèlement &gt; Spam visuel" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="Harcèlement &gt; Diffamation envers des individus ou des groupes" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="Harcèlement &gt; Immobilisation" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="Harcèlement &gt; Harcèlement sexuel" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="Harcèlement &gt; Incitation à enfreindre les Conditions d&apos;utilisation" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="Harcèlement &gt; Abus verbal" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="Indécence &gt; Contenu ou comportement offensifs" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="Indécence &gt; Nom d&apos;avatar inapproprié" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région PG" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="Indécence &gt; Contenu ou conduite inappropriés dans une région Mature" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="Violation de droits de propriété intellectuelle &gt; Suppression de contenu" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="Violation de droits de propriété intellectuelle &gt; CopyBot ou exploitation abusive des droits" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="Intolérance" name="Intolerance"/>
+ <combo_box.item label="Terrain &gt; Utilisation abusive des ressources du bac à sable" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="Terrain &gt; Empiètement &gt; Objets/textures" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="Terrain &gt; Empiètement &gt; Particules" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="Terrain &gt; Empiètement &gt; Arbres/plantes" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="Paris/jeux d&apos;argent" name="Wagering_gambling"/>
+ <combo_box.item label="Autre" name="Other"/>
+ </combo_box>
+ <text name="abuser_name_title">
+ Nom du contrevenant :
+ </text>
+ <button label="Choisir" label_selected="" name="select_abuser" tool_tip="Sélectionnez le nom du résident dans une liste"/>
+ <text name="abuser_name_title2">
+ Indiquez où l&apos;infraction a eu lieu :
+ </text>
+ <text name="sum_title">
+ Récapitulatif :
+ </text>
+ <text name="dscr_title">
+ Détails :
+ </text>
+ <text name="bug_aviso">
+ Soyez aussi spécifique que possible
+ </text>
+ <text bottom_delta="-16" name="incomplete_title">
+ Remarque : les rapports incomplets ne feront pas l&apos;objet d&apos;une
+enquête.
+ </text>
+ <button label="Signaler une infraction" label_selected="Signaler une infraction" name="send_btn"/>
+ <button label="Annuler" label_selected="Annuler" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml
index fc805e879b..ef021ce713 100644
--- a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml
+++ b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script" short_title="[All scripts]" title="[All scripts]"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[All scripts]" title="[All scripts]"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_script_preview.xml b/indra/newview/skins/default/xui/fr/floater_script_preview.xml
index dbd3558c19..d699011f32 100644
--- a/indra/newview/skins/default/xui/fr/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_script_preview.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview lsl text" title="SCRIPT : SCRIPT DE ROTATION">
- <floater.string name="Title">
- Script : [NAME]
- </floater.string>
- <text name="desc txt">
- Description :
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="SCRIPT : SCRIPT DE ROTATION">
+ <floater.string name="Title">
+ Script : [NAME]
+ </floater.string>
+ <text name="desc txt">
+ Description :
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_script_queue.xml b/indra/newview/skins/default/xui/fr/floater_script_queue.xml
index dbbe2539dc..7d4afdf818 100644
--- a/indra/newview/skins/default/xui/fr/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/fr/floater_script_queue.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="RÉINITIALISER PROGRESSION">
- <floater.string name="Starting">
- Début du [START] sur [COUNT] objets.
- </floater.string>
- <floater.string name="Done">
- Fini.
- </floater.string>
- <floater.string name="Resetting">
- Réinitialisation
- </floater.string>
- <floater.string name="Running">
- Exécution en cours
- </floater.string>
- <floater.string name="NotRunning">
- Arrêt
- </floater.string>
- <button label="Fermer" label_selected="Fermer" name="close"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="RÉINITIALISER PROGRESSION">
+ <floater.string name="Starting">
+ Début du [START] sur [COUNT] objets.
+ </floater.string>
+ <floater.string name="Done">
+ Fini.
+ </floater.string>
+ <floater.string name="Resetting">
+ Réinitialisation
+ </floater.string>
+ <floater.string name="Running">
+ Exécution en cours
+ </floater.string>
+ <floater.string name="NotRunning">
+ Arrêt
+ </floater.string>
+ <button label="Fermer" label_selected="Fermer" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
index 2ded68309c..86c6a52f8c 100644
--- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
@@ -1,66 +1,66 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sell land" title="VENDRE TERRAIN">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- Parcelle :
- </text>
- <text name="info_parcel">
- PARCEL NAME
- </text>
- <text name="info_size_label">
- Taille :
- </text>
- <text name="info_size">
- [AREA] m²
- </text>
- <text bottom_delta="-60" name="info_action">
- Pour vendre cette
-parcelle :
- </text>
- <icon bottom_delta="-86" name="step_price"/>
- <text name="price_label">
- Votre prix de vente :
- </text>
- <text name="price_text">
- Fixez un prix convenable.
- </text>
- <text name="price_ld">
- L$
- </text>
- <text name="price_per_m">
- ([PER_METER] L$ par mètre carré)
- </text>
- <text name="sell_to_label">
- Vos acheteurs :
- </text>
- <text name="sell_to_text">
- Vendez votre terrain à n&apos;importe qui ou uniquement à un acheteur
-spécifique.
- </text>
- <combo_box bottom_delta="-32" name="sell_to">
- <combo_box.item label="Sélectionnez --" name="--selectone--"/>
- <combo_box.item label="N&apos;importe qui" name="Anyone"/>
- <combo_box.item label="Personne spécifique :" name="Specificuser:"/>
- </combo_box>
- <button label="Sélectionner..." name="sell_to_select_agent" width="100"/>
- <text name="sell_objects_label">
- Vendez-vous des objets avec ce terrain ?
- </text>
- <text name="sell_objects_text">
- Les objets transférables se trouvant sur la parcelle changeront
-de propriétaire.
- </text>
- <radio_group bottom_delta="-54" name="sell_objects" right="430">
- <radio_item label="Non, rester le propriétaire des objets" name="no"/>
- <radio_item label="Oui, vendre les objets avec le terrain" name="yes"/>
- </radio_group>
- <button label="Afficher les objets" name="show_objects" right="420" width="120"/>
- <text bottom_delta="-30" name="nag_message_label">
- Rappel : toute vente est définitive.
- </text>
- <button label="Mettre le terrain en vente" name="sell_btn" width="165"/>
- <button label="Annuler" name="cancel_btn"/>
- </panel>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sell land" title="VENDRE TERRAIN">
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ Parcelle :
+ </text>
+ <text name="info_parcel">
+ PARCEL NAME
+ </text>
+ <text name="info_size_label">
+ Taille :
+ </text>
+ <text name="info_size">
+ [AREA] m²
+ </text>
+ <text bottom_delta="-60" name="info_action">
+ Pour vendre cette
+parcelle :
+ </text>
+ <icon bottom_delta="-86" name="step_price"/>
+ <text name="price_label">
+ Votre prix de vente :
+ </text>
+ <text name="price_text">
+ Fixez un prix convenable.
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <text name="price_per_m">
+ ([PER_METER] L$ par mètre carré)
+ </text>
+ <text name="sell_to_label">
+ Vos acheteurs :
+ </text>
+ <text name="sell_to_text">
+ Vendez votre terrain à n&apos;importe qui ou uniquement à un acheteur
+spécifique.
+ </text>
+ <combo_box bottom_delta="-32" name="sell_to">
+ <combo_box.item label="Sélectionnez --" name="--selectone--"/>
+ <combo_box.item label="N&apos;importe qui" name="Anyone"/>
+ <combo_box.item label="Personne spécifique :" name="Specificuser:"/>
+ </combo_box>
+ <button label="Sélectionner..." name="sell_to_select_agent" width="100"/>
+ <text name="sell_objects_label">
+ Vendez-vous des objets avec ce terrain ?
+ </text>
+ <text name="sell_objects_text">
+ Les objets transférables se trouvant sur la parcelle changeront
+de propriétaire.
+ </text>
+ <radio_group bottom_delta="-54" name="sell_objects" right="430">
+ <radio_item label="Non, rester le propriétaire des objets" name="no"/>
+ <radio_item label="Oui, vendre les objets avec le terrain" name="yes"/>
+ </radio_group>
+ <button label="Afficher les objets" name="show_objects" right="420" width="120"/>
+ <text bottom_delta="-30" name="nag_message_label">
+ Rappel : toute vente est définitive.
+ </text>
+ <button label="Mettre le terrain en vente" name="sell_btn" width="165"/>
+ <button label="Annuler" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
index 3550d8c86f..ee076119aa 100644
--- a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="PARAMÉTRAGES DU MODE DEBUG">
- <combo_box name="boolean_combo">
- <combo_box.item label="TRUE" name="TRUE"/>
- <combo_box.item label="FALSE" name="FALSE"/>
- </combo_box>
- <color_swatch label="Couleur" name="val_color_swatch"/>
- <spinner label="x" name="val_spinner_1"/>
- <spinner label="x" name="val_spinner_2"/>
- <spinner label="x" name="val_spinner_3"/>
- <spinner label="x" name="val_spinner_4"/>
- <button label="Paramètres par défaut" name="default_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="PARAMÉTRAGES DU MODE DEBUG">
+ <combo_box name="boolean_combo">
+ <combo_box.item label="TRUE" name="TRUE"/>
+ <combo_box.item label="FALSE" name="FALSE"/>
+ </combo_box>
+ <color_swatch label="Couleur" name="val_color_swatch"/>
+ <spinner label="x" name="val_spinner_1"/>
+ <spinner label="x" name="val_spinner_2"/>
+ <spinner label="x" name="val_spinner_3"/>
+ <spinner label="x" name="val_spinner_4"/>
+ <button label="Paramètres par défaut" name="default_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml
index 5d5e3213ca..26443e634b 100644
--- a/indra/newview/skins/default/xui/fr/floater_stats.xml
+++ b/indra/newview/skins/default/xui/fr/floater_stats.xml
@@ -1,71 +1,71 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="Statistiques">
- <scroll_container name="statistics_scroll">
- <container_view name="statistics_view">
- <stat_view label="Basic" name="basic">
- <stat_bar label="FPS" name="fps"/>
- <stat_bar label="Bandwidth" name="bandwidth"/>
- <stat_bar label="Packet Loss" name="packet_loss"/>
- <stat_bar label="Ping Sim" name="ping"/>
- </stat_view>
- <stat_view label="Advanced" name="advanced">
- <stat_view label="Render" name="render">
- <stat_bar label="KTris Drawn" name="ktrisframe"/>
- <stat_bar label="KTris Drawn" name="ktrissec"/>
- <stat_bar label="Total Objects" name="objs"/>
- <stat_bar label="New Objects" name="newobjs"/>
- </stat_view>
- <stat_view label="Texture" name="texture">
- <stat_bar label="Count" name="numimagesstat"/>
- <stat_bar label="Raw Count" name="numrawimagesstat"/>
- <stat_bar label="GL Mem" name="gltexmemstat"/>
- <stat_bar label="Formatted Mem" name="formattedmemstat"/>
- <stat_bar label="Raw Mem" name="rawmemstat"/>
- <stat_bar label="Bound Mem" name="glboundmemstat"/>
- </stat_view>
- <stat_view label="Network" name="network">
- <stat_bar label="Packets In" name="packetsinstat"/>
- <stat_bar label="Packets Out" name="packetsoutstat"/>
- <stat_bar label="Objects" name="objectkbitstat"/>
- <stat_bar label="Texture" name="texturekbitstat"/>
- <stat_bar label="Asset" name="assetkbitstat"/>
- <stat_bar label="Layers" name="layerskbitstat"/>
- <stat_bar label="Actual In" name="actualinkbitstat"/>
- <stat_bar label="Actual Out" name="actualoutkbitstat"/>
- <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
- </stat_view>
- </stat_view>
- <stat_view label="Simulator" name="sim">
- <stat_bar label="Time Dilation" name="simtimedilation"/>
- <stat_bar label="Sim FPS" name="simfps"/>
- <stat_bar label="Physics FPS" name="simphysicsfps"/>
- <stat_view label="Physics Details" name="physicsdetail">
- <stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
- <stat_bar label="Low LOD Objects" name="physicslodtasks"/>
- <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
- <stat_bar label="Agent Updates/Sec" name="simagentups"/>
- <stat_bar label="Main Agents" name="simmainagents"/>
- <stat_bar label="Child Agents" name="simchildagents"/>
- <stat_bar label="Objets" name="simobjects"/>
- <stat_bar label="Active Objects" name="simactiveobjects"/>
- <stat_bar label="Active Scripts" name="simactivescripts"/>
- <stat_bar label="Script Events" name="simscripteps"/>
- <stat_bar label="Packets In" name="siminpps"/>
- <stat_bar label="Packets Out" name="simoutpps"/>
- <stat_bar label="Pending Downloads" name="simpendingdownloads"/>
- <stat_bar label="Pending Uploads" name="simpendinguploads"/>
- <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
- </stat_view>
- <stat_view label="Time (ms)" name="simperf">
- <stat_bar label="Total Frame Time" name="simframemsec"/>
- <stat_bar label="Net Time" name="simnetmsec"/>
- <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
- <stat_bar label="Simulation Time" name="simsimothermsec"/>
- <stat_bar label="Agent Time" name="simagentmsec"/>
- <stat_bar label="Images Time" name="simimagesmsec"/>
- <stat_bar label="Script Time" name="simscriptmsec"/>
- </stat_view>
- </stat_view>
- </container_view>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="Statistiques">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="Basic" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="Bandwidth" name="bandwidth"/>
+ <stat_bar label="Packet Loss" name="packet_loss"/>
+ <stat_bar label="Ping Sim" name="ping"/>
+ </stat_view>
+ <stat_view label="Advanced" name="advanced">
+ <stat_view label="Render" name="render">
+ <stat_bar label="KTris Drawn" name="ktrisframe"/>
+ <stat_bar label="KTris Drawn" name="ktrissec"/>
+ <stat_bar label="Total Objects" name="objs"/>
+ <stat_bar label="New Objects" name="newobjs"/>
+ </stat_view>
+ <stat_view label="Texture" name="texture">
+ <stat_bar label="Count" name="numimagesstat"/>
+ <stat_bar label="Raw Count" name="numrawimagesstat"/>
+ <stat_bar label="GL Mem" name="gltexmemstat"/>
+ <stat_bar label="Formatted Mem" name="formattedmemstat"/>
+ <stat_bar label="Raw Mem" name="rawmemstat"/>
+ <stat_bar label="Bound Mem" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="Network" name="network">
+ <stat_bar label="Packets In" name="packetsinstat"/>
+ <stat_bar label="Packets Out" name="packetsoutstat"/>
+ <stat_bar label="Objects" name="objectkbitstat"/>
+ <stat_bar label="Texture" name="texturekbitstat"/>
+ <stat_bar label="Asset" name="assetkbitstat"/>
+ <stat_bar label="Layers" name="layerskbitstat"/>
+ <stat_bar label="Actual In" name="actualinkbitstat"/>
+ <stat_bar label="Actual Out" name="actualoutkbitstat"/>
+ <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="Simulator" name="sim">
+ <stat_bar label="Time Dilation" name="simtimedilation"/>
+ <stat_bar label="Sim FPS" name="simfps"/>
+ <stat_bar label="Physics FPS" name="simphysicsfps"/>
+ <stat_view label="Physics Details" name="physicsdetail">
+ <stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
+ <stat_bar label="Low LOD Objects" name="physicslodtasks"/>
+ <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
+ <stat_bar label="Agent Updates/Sec" name="simagentups"/>
+ <stat_bar label="Main Agents" name="simmainagents"/>
+ <stat_bar label="Child Agents" name="simchildagents"/>
+ <stat_bar label="Objets" name="simobjects"/>
+ <stat_bar label="Active Objects" name="simactiveobjects"/>
+ <stat_bar label="Active Scripts" name="simactivescripts"/>
+ <stat_bar label="Script Events" name="simscripteps"/>
+ <stat_bar label="Packets In" name="siminpps"/>
+ <stat_bar label="Packets Out" name="simoutpps"/>
+ <stat_bar label="Pending Downloads" name="simpendingdownloads"/>
+ <stat_bar label="Pending Uploads" name="simpendinguploads"/>
+ <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
+ </stat_view>
+ <stat_view label="Time (ms)" name="simperf">
+ <stat_bar label="Total Frame Time" name="simframemsec"/>
+ <stat_bar label="Net Time" name="simnetmsec"/>
+ <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
+ <stat_bar label="Simulation Time" name="simsimothermsec"/>
+ <stat_bar label="Agent Time" name="simagentmsec"/>
+ <stat_bar label="Images Time" name="simimagesmsec"/>
+ <stat_bar label="Script Time" name="simscriptmsec"/>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 5ded9a1de4..3270634401 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -1,479 +1,479 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" short_title="Outils de construction" title="">
- <floater.string name="status_rotate">
- Pour faire tourner l&apos;objet, faîtes glisser les bandes de couleur.
- </floater.string>
- <floater.string name="status_scale">
- Pour étirer le côté sélectionné, cliquez et faites glisser.
- </floater.string>
- <floater.string name="status_move">
- Glissez pour déplacer, Maj-glissez pour copier.
- </floater.string>
- <floater.string name="status_modifyland">
- Cliquez et maintenez pour modifier le terrain.
- </floater.string>
- <floater.string name="status_camera">
- Cliquez et faîtes glisser pour bouger la caméra
- </floater.string>
- <floater.string name="status_grab">
- Glisser pour déplacer, Ctrl pour soulever, Crtl-Maj pour pivoter.
- </floater.string>
- <floater.string name="status_place">
- Cliquez dans le monde pour construire.
- </floater.string>
- <floater.string name="status_selectland">
- Cliquez et faites glisser pour sélectionner le terrain.
- </floater.string>
- <floater.string name="grid_screen_text">
- Écran
- </floater.string>
- <floater.string name="grid_local_text">
- Local
- </floater.string>
- <floater.string name="grid_world_text">
- Monde
- </floater.string>
- <floater.string name="grid_reference_text">
- Référence
- </floater.string>
- <floater.string name="grid_attachment_text">
- Pièce-jointe
- </floater.string>
- <button label="" label_selected="" name="button focus" tool_tip="Mise au point"/>
- <button label="" label_selected="" name="button move" tool_tip="Déplacer"/>
- <button label="" label_selected="" name="button edit" tool_tip="Modifier"/>
- <button label="" label_selected="" name="button create" tool_tip="Créer"/>
- <button label="" label_selected="" name="button land" tool_tip="Terrain"/>
- <text name="text status">
- Glissez pour déplacer, Maj-glissez pour copier.
- </text>
- <radio_group name="focus_radio_group">
- <radio_item label="Zoom" name="radio zoom"/>
- <radio_item label="Orbite (Ctrl)" name="radio orbit"/>
- <radio_item label="Panoramique (Ctrl-Maj)" name="radio pan"/>
- </radio_group>
- <radio_group name="move_radio_group">
- <radio_item label="Déplacer" name="radio move"/>
- <radio_item label="Orbite (Ctrl)" name="radio lift"/>
- <radio_item label="Faire tourner (Ctrl-Maj)" name="radio spin"/>
- </radio_group>
- <radio_group name="edit_radio_group">
- <radio_item label="Bouger" name="radio position"/>
- <radio_item label="Pivoter (Ctrl)" name="radio rotate"/>
- <radio_item label="Étirer (Ctrl-Maj)" name="radio stretch"/>
- <radio_item label="Sélectionner une face" name="radio select face"/>
- </radio_group>
- <check_box label="Modification liée" name="checkbox edit linked parts"/>
- <check_box label="Étirer les deux côtés" name="checkbox uniform"/>
- <check_box initial_value="true" label="Étirer les textures" name="checkbox stretch textures"/>
- <check_box initial_value="true" label="Fixer sur la grille" name="checkbox snap to grid"/>
- <combo_box name="combobox grid mode">
- <combo_box.item label="Axe du monde" name="World"/>
- <combo_box.item label="Axe local" name="Local"/>
- <combo_box.item label="Axe de référence" name="Reference"/>
- </combo_box>
- <button label="Options..." label_selected="Options..." name="Options..." tool_tip="Définir les options de la grille"/>
- <button label="" label_selected="" name="ToolCube" tool_tip="Cube"/>
- <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme droit"/>
- <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/>
- <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tétraèdre"/>
- <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylindre"/>
- <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Demi-cylindre"/>
- <button label="" label_selected="" name="ToolCone" tool_tip="Cône"/>
- <button label="" label_selected="" name="ToolHemiCone" tool_tip="Demi-cône"/>
- <button label="" label_selected="" name="ToolSphere" tool_tip="Sphère"/>
- <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Demi-sphère"/>
- <button label="" label_selected="" name="ToolTorus" tool_tip="Tore"/>
- <button label="" label_selected="" name="ToolTube" tool_tip="Tube"/>
- <button label="" label_selected="" name="ToolRing" tool_tip="Anneau"/>
- <button label="" label_selected="" name="ToolTree" tool_tip="Arbre"/>
- <button label="" label_selected="" name="ToolGrass" tool_tip="Herbe"/>
- <check_box label="Maintenir l&apos;outil sélectionné" name="checkbox sticky"/>
- <check_box label="Copier la sélection" name="checkbox copy selection"/>
- <check_box initial_value="true" label="Centrer" name="checkbox copy centers"/>
- <check_box label="Pivoter" name="checkbox copy rotates"/>
- <radio_group name="land_radio_group">
- <radio_item label="Sélectionner le terrain" name="radio select land"/>
- <radio_item label="Aplatir" name="radio flatten"/>
- <radio_item label="Élever" name="radio raise"/>
- <radio_item label="Abaisser" name="radio lower"/>
- <radio_item label="Lisser" name="radio smooth"/>
- <radio_item label="Bosseler" name="radio noise"/>
- <radio_item label="Annuler modification" name="radio revert"/>
- </radio_group>
- <text name="Bulldozer:">
- Bulldozer :
- </text>
- <text name="Dozer Size:">
- Taille
- </text>
- <text name="Strength:">
- Force
- </text>
- <button label="Appliquer" label_selected="Appliquer" left="176" name="button apply to selection" tool_tip="Modifier le terrain sélectionné"/>
- <text name="obj_count">
- Objets : [COUNT]
- </text>
- <text name="prim_count">
- Prims : [COUNT]
- </text>
- <tab_container name="Object Info Tabs">
- <panel label="Général" name="General">
- <panel.string name="text deed continued">
- Céder
- </panel.string>
- <panel.string name="text deed">
- Transférer
- </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 warning">
- Sélectionnez l&apos;objet en entier
- </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="Name:">
- Nom :
- </text>
- <text name="Description:">
- Description :
- </text>
- <text name="Creator:">
- Créateur :
- </text>
- <text name="Creator Name">
- Thrax Linden
- </text>
- <text name="Owner:">
- Propriétaire :
- </text>
- <text name="Owner Name">
- Thrax Linden
- </text>
- <text name="Group:">
- Groupe :
- </text>
- <button label="Définir..." label_selected="Définir..." name="button set group" tool_tip="Choisissez un groupe pour partager les permissions de 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 permissions au prochain propriétaire. Seul un officier peut céder les objets d&apos;un groupe."/>
- <check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
- <text name="label click action">
- Cliquer pour :
- </text>
- <combo_box name="clickaction" width="178">
- <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/>
- <combo_box.item label="S&apos;asseoir sur l&apos;objet" name="Sitonobject"/>
- <combo_box.item label="Acheter l&apos;objet" name="Buyobject"/>
- <combo_box.item label="Payer l&apos;objet" name="Payobject"/>
- <combo_box.item label="Ouvrir" name="Open"/>
- </combo_box>
- <check_box label="À vendre :" name="checkbox for sale"/>
- <combo_box name="sale type">
- <combo_box.item label="Copie" name="Copy"/>
- <combo_box.item label="Contenus" name="Contents"/>
- <combo_box.item label="Original" name="Original"/>
- </combo_box>
- <spinner label="Prix : L$" name="Edit Cost"/>
- <check_box label="Afficher dans la recherche" name="search_check" tool_tip="Afficher l&apos;objet dans les résultats de recherche"/>
- <panel name="perms_build">
- <text name="perm_modify">
- Vous pouvez modifier cet objet
- </text>
- <text name="Anyone can:">
- N&apos;importe qui :
- </text>
- <check_box label="Copier" name="checkbox allow everyone copy"/>
- <text name="Next owner can:">
- Le prochain propriétaire :
- </text>
- <check_box label="Modifier" name="checkbox next owner can modify"/>
- <check_box label="Copier" left_delta="66" 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"/>
- <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>
- <panel label="Objet" name="Object">
- <check_box label="Verrouillé" name="checkbox locked" tool_tip="Empêche l&apos;objet d&apos;être déplacé ou supprimé. Utile pendant la construction pour éviter les modifications involontaires."/>
- <check_box label="Physique" name="Physical Checkbox Ctrl" tool_tip="Permet à l&apos;objet d&apos;être poussé et affecté par la gravité"/>
- <check_box label="Temporaire" name="Temporary Checkbox Ctrl" tool_tip="L&apos;objet est supprimé 1 mn après sa création."/>
- <check_box label="Fantôme" name="Phantom Checkbox Ctrl" tool_tip="Permet à l&apos;objet de ne pas entrer en collision avec d&apos;autres objets ou avatars."/>
- <text name="label position">
- Position (mètres)
- </text>
- <spinner label="X" name="Pos X"/>
- <spinner label="Y" name="Pos Y"/>
- <spinner label="Z" name="Pos Z"/>
- <text name="label size">
- Taille (mètres)
- </text>
- <spinner label="X" name="Scale X"/>
- <spinner label="Y" name="Scale Y"/>
- <spinner label="Z" name="Scale Z"/>
- <text name="label rotation">
- Rotation (degrés)
- </text>
- <spinner label="X" name="Rot X"/>
- <spinner label="Y" name="Rot Y"/>
- <spinner label="Z" name="Rot Z"/>
- <combo_box name="comboBaseType">
- <combo_box.item label="Boîte" name="Box"/>
- <combo_box.item label="Cylindre" name="Cylinder"/>
- <combo_box.item label="Prisme" name="Prism"/>
- <combo_box.item label="Sphère" name="Sphere"/>
- <combo_box.item label="Tore" name="Torus"/>
- <combo_box.item label="Tube" name="Tube"/>
- <combo_box.item label="Anneau" name="Ring"/>
- <combo_box.item label="Sculptie" name="Sculpted"/>
- </combo_box>
- <combo_box name="material">
- <combo_box.item label="Pierre" name="Stone"/>
- <combo_box.item label="Métal" name="Metal"/>
- <combo_box.item label="Verre" name="Glass"/>
- <combo_box.item label="Bois" name="Wood"/>
- <combo_box.item label="Chair" name="Flesh"/>
- <combo_box.item label="Plastique" name="Plastic"/>
- <combo_box.item label="Caoutchouc" name="Rubber"/>
- </combo_box>
- <text name="text cut">
- Découpe du tracé (début/fin)
- </text>
- <spinner label="D" name="cut begin"/>
- <spinner label="F" name="cut end"/>
- <text name="text hollow">
- Creux
- </text>
- <text name="text skew">
- Biais
- </text>
- <text name="Hollow Shape">
- Forme du creux
- </text>
- <combo_box name="hole">
- <combo_box.item label="Défaut" name="Default"/>
- <combo_box.item label="Cercle" name="Circle"/>
- <combo_box.item label="Carré" name="Square"/>
- <combo_box.item label="Triangle" name="Triangle"/>
- </combo_box>
- <text name="text twist">
- Vrille (début/fin)
- </text>
- <spinner label="D" name="Twist Begin"/>
- <spinner label="F" name="Twist End"/>
- <text name="scale_taper">
- Biseautage
- </text>
- <text name="scale_hole">
- Taille du trou
- </text>
- <spinner label="X" name="Taper Scale X"/>
- <spinner label="Y" name="Taper Scale Y"/>
- <text name="text topshear">
- Inclinaison
- </text>
- <spinner label="X" name="Shear X"/>
- <spinner label="Y" name="Shear Y"/>
- <text name="advanced_cut">
- Découpe du profilé (début/fin)
- </text>
- <text name="advanced_dimple">
- Creux (début/fin)
- </text>
- <text name="advanced_slice">
- Tranche (début/fin)
- </text>
- <spinner label="D" name="Path Limit Begin"/>
- <spinner label="F" name="Path Limit End"/>
- <text name="text taper2">
- Biseautage
- </text>
- <spinner label="X" name="Taper X"/>
- <spinner label="Y" name="Taper Y"/>
- <text name="text radius delta">
- Rayon
- </text>
- <text name="text revolutions">
- Révolutions
- </text>
- <texture_picker label="Texture du sculptie" name="sculpt texture control" tool_tip="Cliquez pour sélectionner une image"/>
- <check_box label="Mirroir" name="sculpt mirror control" tool_tip="Retourne le sculptie le long de l&apos;axe des X."/>
- <check_box label="A l&apos;envers" name="sculpt invert control" tool_tip="Inverse les valeurs normales d&apos;un sculptie et le fait apparaître à l&apos;envers."/>
- <text name="label sculpt type">
- Type de raccord
- </text>
- <combo_box name="sculpt type control">
- <combo_box.item label="(aucun)" name="None"/>
- <combo_box.item label="Sphère" name="Sphere"/>
- <combo_box.item label="Tore" name="Torus"/>
- <combo_box.item label="Plan" name="Plane"/>
- <combo_box.item label="Cylindre" name="Cylinder"/>
- </combo_box>
- </panel>
- <panel label="Attributs" name="Features">
- <text name="select_single">
- Sélectionnez un prim pour modifier les attributs.
- </text>
- <text name="edit_object">
- Modifier les attributs de l&apos;objet :
- </text>
- <check_box label="Flexibilité" name="Flexible1D Checkbox Ctrl" tool_tip="Donne à l&apos;objet de la souplesse sur l&apos;axe des Z (côté client uniquement)."/>
- <spinner label="Souplesse" name="FlexNumSections"/>
- <spinner label="Gravité" name="FlexGravity"/>
- <spinner label="Élasticité" name="FlexFriction"/>
- <spinner label="Vent" name="FlexWind"/>
- <spinner label="Tension" name="FlexTension"/>
- <spinner label="Force X" name="FlexForceX"/>
- <spinner label="Force Y" name="FlexForceY"/>
- <spinner label="Force Z" name="FlexForceZ"/>
- <check_box label="Lumière" name="Light Checkbox Ctrl" tool_tip="Permet aux objets d&apos;émettre de la lumière"/>
- <color_swatch label="" name="colorswatch" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
- <spinner label="Intensité" name="Light Intensity"/>
- <spinner label="Portée" name="Light Radius"/>
- <spinner label="Atténuation" name="Light Falloff"/>
- </panel>
- <panel label="Texture" name="Texture">
- <panel.string name="string repeats per meter">
- Répétitions au mètre
- </panel.string>
- <panel.string name="string repeats per face">
- Répétitions par face
- </panel.string>
- <texture_picker label="Texture" name="texture control" tool_tip="Cliquez pour sélectionner une image"/>
- <color_swatch label="Couleur" name="colorswatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/>
- <text name="color trans" width="88">
- Transparence
- </text>
- <text name="glow label">
- Rayonnement
- </text>
- <check_box label="Lumineux" name="checkbox fullbright"/>
- <text name="tex gen">
- Application
- </text>
- <combo_box name="combobox texgen">
- <combo_box.item label="Défaut" name="Default"/>
- <combo_box.item label="Planar" name="Planar"/>
- </combo_box>
- <text name="label shininess">
- Brillance
- </text>
- <combo_box name="combobox shininess">
- <combo_box.item label="Aucune" name="None"/>
- <combo_box.item label="Faible" name="Low"/>
- <combo_box.item label="Moyenne" name="Medium"/>
- <combo_box.item label="Élevée" name="High"/>
- </combo_box>
- <text name="label bumpiness">
- Relief
- </text>
- <combo_box name="combobox bumpiness">
- <combo_box.item label="Aucun" name="None"/>
- <combo_box.item label="Luminosité" name="Brightness"/>
- <combo_box.item label="Obscurité" name="Darkness"/>
- <combo_box.item label="Aggloméré" name="woodgrain"/>
- <combo_box.item label="Écorce" name="bark"/>
- <combo_box.item label="Briques" name="bricks"/>
- <combo_box.item label="Damier" name="checker"/>
- <combo_box.item label="Béton" name="concrete"/>
- <combo_box.item label="Carrelage" name="crustytile"/>
- <combo_box.item label="Pierre de taille" name="cutstone"/>
- <combo_box.item label="Disques" name="discs"/>
- <combo_box.item label="Gravier" name="gravel"/>
- <combo_box.item label="Boîte de Petri" name="petridish"/>
- <combo_box.item label="Lattes" name="siding"/>
- <combo_box.item label="Carreaux" name="stonetile"/>
- <combo_box.item label="Stuc" name="stucco"/>
- <combo_box.item label="Ventouses" name="suction"/>
- <combo_box.item label="Tissage" name="weave"/>
- </combo_box>
- <text name="tex scale">
- Répétitions par face
- </text>
- <spinner label="Horizontal (U)" name="TexScaleU"/>
- <check_box label="Inverser" name="checkbox flip s"/>
- <spinner label="Vertical (V)" name="TexScaleV"/>
- <check_box label="Inverser" name="checkbox flip t"/>
- <spinner label="Rotation˚" left="122" name="TexRot" width="58"/>
- <spinner label="Repeats / Meter" left="122" name="rptctrl" width="58"/>
- <button label="Appliquer" label_selected="Appliquer" left_delta="68" name="button apply" width="75"/>
- <text name="tex offset">
- Décalage de la texture
- </text>
- <spinner label="Horizontal (U)" name="TexOffsetU"/>
- <spinner label="Vertical (V)" name="TexOffsetV"/>
- </panel>
- <panel label="Contenu" name="Contents">
- <button label="Nouveau script" label_selected="Nouveau script" name="button new script"/>
- <button label="Droits" name="button permissions"/>
- </panel>
- </tab_container>
- <panel name="land info panel">
- <text name="label_parcel_info">
- Informations sur la parcelle
- </text>
- <text name="label_area_price">
- Prix : [PRICE] L$ pour [AREA] m².
- </text>
- <text name="label_area">
- Surface : [AREA] m²
- </text>
- <button label="À propos du terrain..." label_selected="À propos du terrain..." name="button about land" width="142"/>
- <check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorie les parcelles en fonction de leur propriétaire :
-
-Vert = votre terrain
-Turquoise = le terrain de votre groupe
-Rouge = appartenant à d&apos;autres
-Jaune = en vente
-Mauve = aux enchères
-Gris = public"/>
- <text name="label_parcel_modify">
- Modifier la parcelle
- </text>
- <button label="Diviser" label_selected="Diviser" name="button subdivide land" width="142"/>
- <button label="Fusionner" label_selected="Fusionner" name="button join land" width="142"/>
- <text name="label_parcel_trans">
- Transactions
- </text>
- <button label="Acheter le terrain" label_selected="Acheter le terrain" name="button buy land" width="142"/>
- <button label="Abandonner le terrain" label_selected="Abandonner le terrain" name="button abandon land" width="142"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="Outils de construction" title="">
+ <floater.string name="status_rotate">
+ Pour faire tourner l&apos;objet, faîtes glisser les bandes de couleur.
+ </floater.string>
+ <floater.string name="status_scale">
+ Pour étirer le côté sélectionné, cliquez et faites glisser.
+ </floater.string>
+ <floater.string name="status_move">
+ Glissez pour déplacer, Maj-glissez pour copier.
+ </floater.string>
+ <floater.string name="status_modifyland">
+ Cliquez et maintenez pour modifier le terrain.
+ </floater.string>
+ <floater.string name="status_camera">
+ Cliquez et faîtes glisser pour bouger la caméra
+ </floater.string>
+ <floater.string name="status_grab">
+ Glisser pour déplacer, Ctrl pour soulever, Crtl-Maj pour pivoter.
+ </floater.string>
+ <floater.string name="status_place">
+ Cliquez dans le monde pour construire.
+ </floater.string>
+ <floater.string name="status_selectland">
+ Cliquez et faites glisser pour sélectionner le terrain.
+ </floater.string>
+ <floater.string name="grid_screen_text">
+ Écran
+ </floater.string>
+ <floater.string name="grid_local_text">
+ Local
+ </floater.string>
+ <floater.string name="grid_world_text">
+ Monde
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ Référence
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ Pièce-jointe
+ </floater.string>
+ <button label="" label_selected="" name="button focus" tool_tip="Mise au point"/>
+ <button label="" label_selected="" name="button move" tool_tip="Déplacer"/>
+ <button label="" label_selected="" name="button edit" tool_tip="Modifier"/>
+ <button label="" label_selected="" name="button create" tool_tip="Créer"/>
+ <button label="" label_selected="" name="button land" tool_tip="Terrain"/>
+ <text name="text status">
+ Glissez pour déplacer, Maj-glissez pour copier.
+ </text>
+ <radio_group name="focus_radio_group">
+ <radio_item label="Zoom" name="radio zoom"/>
+ <radio_item label="Orbite (Ctrl)" name="radio orbit"/>
+ <radio_item label="Panoramique (Ctrl-Maj)" name="radio pan"/>
+ </radio_group>
+ <radio_group name="move_radio_group">
+ <radio_item label="Déplacer" name="radio move"/>
+ <radio_item label="Orbite (Ctrl)" name="radio lift"/>
+ <radio_item label="Faire tourner (Ctrl-Maj)" name="radio spin"/>
+ </radio_group>
+ <radio_group name="edit_radio_group">
+ <radio_item label="Bouger" name="radio position"/>
+ <radio_item label="Pivoter (Ctrl)" name="radio rotate"/>
+ <radio_item label="Étirer (Ctrl-Maj)" name="radio stretch"/>
+ <radio_item label="Sélectionner une face" name="radio select face"/>
+ </radio_group>
+ <check_box label="Modification liée" name="checkbox edit linked parts"/>
+ <check_box label="Étirer les deux côtés" name="checkbox uniform"/>
+ <check_box initial_value="true" label="Étirer les textures" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="Fixer sur la grille" name="checkbox snap to grid"/>
+ <combo_box name="combobox grid mode">
+ <combo_box.item label="Axe du monde" name="World"/>
+ <combo_box.item label="Axe local" name="Local"/>
+ <combo_box.item label="Axe de référence" name="Reference"/>
+ </combo_box>
+ <button label="Options..." label_selected="Options..." name="Options..." tool_tip="Définir les options de la grille"/>
+ <button label="" label_selected="" name="ToolCube" tool_tip="Cube"/>
+ <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme droit"/>
+ <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/>
+ <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tétraèdre"/>
+ <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylindre"/>
+ <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Demi-cylindre"/>
+ <button label="" label_selected="" name="ToolCone" tool_tip="Cône"/>
+ <button label="" label_selected="" name="ToolHemiCone" tool_tip="Demi-cône"/>
+ <button label="" label_selected="" name="ToolSphere" tool_tip="Sphère"/>
+ <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Demi-sphère"/>
+ <button label="" label_selected="" name="ToolTorus" tool_tip="Tore"/>
+ <button label="" label_selected="" name="ToolTube" tool_tip="Tube"/>
+ <button label="" label_selected="" name="ToolRing" tool_tip="Anneau"/>
+ <button label="" label_selected="" name="ToolTree" tool_tip="Arbre"/>
+ <button label="" label_selected="" name="ToolGrass" tool_tip="Herbe"/>
+ <check_box label="Maintenir l&apos;outil sélectionné" name="checkbox sticky"/>
+ <check_box label="Copier la sélection" name="checkbox copy selection"/>
+ <check_box initial_value="true" label="Centrer" name="checkbox copy centers"/>
+ <check_box label="Pivoter" name="checkbox copy rotates"/>
+ <radio_group name="land_radio_group">
+ <radio_item label="Sélectionner le terrain" name="radio select land"/>
+ <radio_item label="Aplatir" name="radio flatten"/>
+ <radio_item label="Élever" name="radio raise"/>
+ <radio_item label="Abaisser" name="radio lower"/>
+ <radio_item label="Lisser" name="radio smooth"/>
+ <radio_item label="Bosseler" name="radio noise"/>
+ <radio_item label="Annuler modification" name="radio revert"/>
+ </radio_group>
+ <text name="Bulldozer:">
+ Bulldozer :
+ </text>
+ <text name="Dozer Size:">
+ Taille
+ </text>
+ <text name="Strength:">
+ Force
+ </text>
+ <button label="Appliquer" label_selected="Appliquer" left="176" name="button apply to selection" tool_tip="Modifier le terrain sélectionné"/>
+ <text name="obj_count">
+ Objets : [COUNT]
+ </text>
+ <text name="prim_count">
+ Prims : [COUNT]
+ </text>
+ <tab_container name="Object Info Tabs">
+ <panel label="Général" name="General">
+ <panel.string name="text deed continued">
+ Céder
+ </panel.string>
+ <panel.string name="text deed">
+ Transférer
+ </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 warning">
+ Sélectionnez l&apos;objet en entier
+ </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="Name:">
+ Nom :
+ </text>
+ <text name="Description:">
+ Description :
+ </text>
+ <text name="Creator:">
+ Créateur :
+ </text>
+ <text name="Creator Name">
+ Thrax Linden
+ </text>
+ <text name="Owner:">
+ Propriétaire :
+ </text>
+ <text name="Owner Name">
+ Thrax Linden
+ </text>
+ <text name="Group:">
+ Groupe :
+ </text>
+ <button label="Définir..." label_selected="Définir..." name="button set group" tool_tip="Choisissez un groupe pour partager les permissions de 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 permissions au prochain propriétaire. Seul un officier peut céder les objets d&apos;un groupe."/>
+ <check_box label="Partager" name="checkbox share with group" tool_tip="Autorisez tous les membres du groupe choisi à utiliser et à partager vos droits pour cet objet. Pour activer les restrictions de rôles, vous devez d&apos;abord cliquer sur Transférer."/>
+ <text name="label click action">
+ Cliquer pour :
+ </text>
+ <combo_box name="clickaction" width="178">
+ <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/>
+ <combo_box.item label="S&apos;asseoir sur l&apos;objet" name="Sitonobject"/>
+ <combo_box.item label="Acheter l&apos;objet" name="Buyobject"/>
+ <combo_box.item label="Payer l&apos;objet" name="Payobject"/>
+ <combo_box.item label="Ouvrir" name="Open"/>
+ </combo_box>
+ <check_box label="À vendre :" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <combo_box.item label="Copie" name="Copy"/>
+ <combo_box.item label="Contenus" name="Contents"/>
+ <combo_box.item label="Original" name="Original"/>
+ </combo_box>
+ <spinner label="Prix : L$" name="Edit Cost"/>
+ <check_box label="Afficher dans la recherche" name="search_check" tool_tip="Afficher l&apos;objet dans les résultats de recherche"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ Vous pouvez modifier cet objet
+ </text>
+ <text name="Anyone can:">
+ N&apos;importe qui :
+ </text>
+ <check_box label="Copier" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ Le prochain propriétaire :
+ </text>
+ <check_box label="Modifier" name="checkbox next owner can modify"/>
+ <check_box label="Copier" left_delta="66" 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"/>
+ <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>
+ <panel label="Objet" name="Object">
+ <check_box label="Verrouillé" name="checkbox locked" tool_tip="Empêche l&apos;objet d&apos;être déplacé ou supprimé. Utile pendant la construction pour éviter les modifications involontaires."/>
+ <check_box label="Physique" name="Physical Checkbox Ctrl" tool_tip="Permet à l&apos;objet d&apos;être poussé et affecté par la gravité"/>
+ <check_box label="Temporaire" name="Temporary Checkbox Ctrl" tool_tip="L&apos;objet est supprimé 1 mn après sa création."/>
+ <check_box label="Fantôme" name="Phantom Checkbox Ctrl" tool_tip="Permet à l&apos;objet de ne pas entrer en collision avec d&apos;autres objets ou avatars."/>
+ <text name="label position">
+ Position (mètres)
+ </text>
+ <spinner label="X" name="Pos X"/>
+ <spinner label="Y" name="Pos Y"/>
+ <spinner label="Z" name="Pos Z"/>
+ <text name="label size">
+ Taille (mètres)
+ </text>
+ <spinner label="X" name="Scale X"/>
+ <spinner label="Y" name="Scale Y"/>
+ <spinner label="Z" name="Scale Z"/>
+ <text name="label rotation">
+ Rotation (degrés)
+ </text>
+ <spinner label="X" name="Rot X"/>
+ <spinner label="Y" name="Rot Y"/>
+ <spinner label="Z" name="Rot Z"/>
+ <combo_box name="comboBaseType">
+ <combo_box.item label="Boîte" name="Box"/>
+ <combo_box.item label="Cylindre" name="Cylinder"/>
+ <combo_box.item label="Prisme" name="Prism"/>
+ <combo_box.item label="Sphère" name="Sphere"/>
+ <combo_box.item label="Tore" name="Torus"/>
+ <combo_box.item label="Tube" name="Tube"/>
+ <combo_box.item label="Anneau" name="Ring"/>
+ <combo_box.item label="Sculptie" name="Sculpted"/>
+ </combo_box>
+ <combo_box name="material">
+ <combo_box.item label="Pierre" name="Stone"/>
+ <combo_box.item label="Métal" name="Metal"/>
+ <combo_box.item label="Verre" name="Glass"/>
+ <combo_box.item label="Bois" name="Wood"/>
+ <combo_box.item label="Chair" name="Flesh"/>
+ <combo_box.item label="Plastique" name="Plastic"/>
+ <combo_box.item label="Caoutchouc" name="Rubber"/>
+ </combo_box>
+ <text name="text cut">
+ Découpe du tracé (début/fin)
+ </text>
+ <spinner label="D" name="cut begin"/>
+ <spinner label="F" name="cut end"/>
+ <text name="text hollow">
+ Creux
+ </text>
+ <text name="text skew">
+ Biais
+ </text>
+ <text name="Hollow Shape">
+ Forme du creux
+ </text>
+ <combo_box name="hole">
+ <combo_box.item label="Défaut" name="Default"/>
+ <combo_box.item label="Cercle" name="Circle"/>
+ <combo_box.item label="Carré" name="Square"/>
+ <combo_box.item label="Triangle" name="Triangle"/>
+ </combo_box>
+ <text name="text twist">
+ Vrille (début/fin)
+ </text>
+ <spinner label="D" name="Twist Begin"/>
+ <spinner label="F" name="Twist End"/>
+ <text name="scale_taper">
+ Biseautage
+ </text>
+ <text name="scale_hole">
+ Taille du trou
+ </text>
+ <spinner label="X" name="Taper Scale X"/>
+ <spinner label="Y" name="Taper Scale Y"/>
+ <text name="text topshear">
+ Inclinaison
+ </text>
+ <spinner label="X" name="Shear X"/>
+ <spinner label="Y" name="Shear Y"/>
+ <text name="advanced_cut">
+ Découpe du profilé (début/fin)
+ </text>
+ <text name="advanced_dimple">
+ Creux (début/fin)
+ </text>
+ <text name="advanced_slice">
+ Tranche (début/fin)
+ </text>
+ <spinner label="D" name="Path Limit Begin"/>
+ <spinner label="F" name="Path Limit End"/>
+ <text name="text taper2">
+ Biseautage
+ </text>
+ <spinner label="X" name="Taper X"/>
+ <spinner label="Y" name="Taper Y"/>
+ <text name="text radius delta">
+ Rayon
+ </text>
+ <text name="text revolutions">
+ Révolutions
+ </text>
+ <texture_picker label="Texture du sculptie" name="sculpt texture control" tool_tip="Cliquez pour sélectionner une image"/>
+ <check_box label="Mirroir" name="sculpt mirror control" tool_tip="Retourne le sculptie le long de l&apos;axe des X."/>
+ <check_box label="A l&apos;envers" name="sculpt invert control" tool_tip="Inverse les valeurs normales d&apos;un sculptie et le fait apparaître à l&apos;envers."/>
+ <text name="label sculpt type">
+ Type de raccord
+ </text>
+ <combo_box name="sculpt type control">
+ <combo_box.item label="(aucun)" name="None"/>
+ <combo_box.item label="Sphère" name="Sphere"/>
+ <combo_box.item label="Tore" name="Torus"/>
+ <combo_box.item label="Plan" name="Plane"/>
+ <combo_box.item label="Cylindre" name="Cylinder"/>
+ </combo_box>
+ </panel>
+ <panel label="Attributs" name="Features">
+ <text name="select_single">
+ Sélectionnez un prim pour modifier les attributs.
+ </text>
+ <text name="edit_object">
+ Modifier les attributs de l&apos;objet :
+ </text>
+ <check_box label="Flexibilité" name="Flexible1D Checkbox Ctrl" tool_tip="Donne à l&apos;objet de la souplesse sur l&apos;axe des Z (côté client uniquement)."/>
+ <spinner label="Souplesse" name="FlexNumSections"/>
+ <spinner label="Gravité" name="FlexGravity"/>
+ <spinner label="Élasticité" name="FlexFriction"/>
+ <spinner label="Vent" name="FlexWind"/>
+ <spinner label="Tension" name="FlexTension"/>
+ <spinner label="Force X" name="FlexForceX"/>
+ <spinner label="Force Y" name="FlexForceY"/>
+ <spinner label="Force Z" name="FlexForceZ"/>
+ <check_box label="Lumière" name="Light Checkbox Ctrl" tool_tip="Permet aux objets d&apos;émettre de la lumière"/>
+ <color_swatch label="" name="colorswatch" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+ <spinner label="Intensité" name="Light Intensity"/>
+ <spinner label="Portée" name="Light Radius"/>
+ <spinner label="Atténuation" name="Light Falloff"/>
+ </panel>
+ <panel label="Texture" name="Texture">
+ <panel.string name="string repeats per meter">
+ Répétitions au mètre
+ </panel.string>
+ <panel.string name="string repeats per face">
+ Répétitions par face
+ </panel.string>
+ <texture_picker label="Texture" name="texture control" tool_tip="Cliquez pour sélectionner une image"/>
+ <color_swatch label="Couleur" name="colorswatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/>
+ <text name="color trans" width="88">
+ Transparence
+ </text>
+ <text name="glow label">
+ Rayonnement
+ </text>
+ <check_box label="Lumineux" name="checkbox fullbright"/>
+ <text name="tex gen">
+ Application
+ </text>
+ <combo_box name="combobox texgen">
+ <combo_box.item label="Défaut" name="Default"/>
+ <combo_box.item label="Planar" name="Planar"/>
+ </combo_box>
+ <text name="label shininess">
+ Brillance
+ </text>
+ <combo_box name="combobox shininess">
+ <combo_box.item label="Aucune" name="None"/>
+ <combo_box.item label="Faible" name="Low"/>
+ <combo_box.item label="Moyenne" name="Medium"/>
+ <combo_box.item label="Élevée" name="High"/>
+ </combo_box>
+ <text name="label bumpiness">
+ Relief
+ </text>
+ <combo_box name="combobox bumpiness">
+ <combo_box.item label="Aucun" name="None"/>
+ <combo_box.item label="Luminosité" name="Brightness"/>
+ <combo_box.item label="Obscurité" name="Darkness"/>
+ <combo_box.item label="Aggloméré" name="woodgrain"/>
+ <combo_box.item label="Écorce" name="bark"/>
+ <combo_box.item label="Briques" name="bricks"/>
+ <combo_box.item label="Damier" name="checker"/>
+ <combo_box.item label="Béton" name="concrete"/>
+ <combo_box.item label="Carrelage" name="crustytile"/>
+ <combo_box.item label="Pierre de taille" name="cutstone"/>
+ <combo_box.item label="Disques" name="discs"/>
+ <combo_box.item label="Gravier" name="gravel"/>
+ <combo_box.item label="Boîte de Petri" name="petridish"/>
+ <combo_box.item label="Lattes" name="siding"/>
+ <combo_box.item label="Carreaux" name="stonetile"/>
+ <combo_box.item label="Stuc" name="stucco"/>
+ <combo_box.item label="Ventouses" name="suction"/>
+ <combo_box.item label="Tissage" name="weave"/>
+ </combo_box>
+ <text name="tex scale">
+ Répétitions par face
+ </text>
+ <spinner label="Horizontal (U)" name="TexScaleU"/>
+ <check_box label="Inverser" name="checkbox flip s"/>
+ <spinner label="Vertical (V)" name="TexScaleV"/>
+ <check_box label="Inverser" name="checkbox flip t"/>
+ <spinner label="Rotation˚" left="122" name="TexRot" width="58"/>
+ <spinner label="Repeats / Meter" left="122" name="rptctrl" width="58"/>
+ <button label="Appliquer" label_selected="Appliquer" left_delta="68" name="button apply" width="75"/>
+ <text name="tex offset">
+ Décalage de la texture
+ </text>
+ <spinner label="Horizontal (U)" name="TexOffsetU"/>
+ <spinner label="Vertical (V)" name="TexOffsetV"/>
+ </panel>
+ <panel label="Contenu" name="Contents">
+ <button label="Nouveau script" label_selected="Nouveau script" name="button new script"/>
+ <button label="Droits" name="button permissions"/>
+ </panel>
+ </tab_container>
+ <panel name="land info panel">
+ <text name="label_parcel_info">
+ Informations sur la parcelle
+ </text>
+ <text name="label_area_price">
+ Prix : [PRICE] L$ pour [AREA] m².
+ </text>
+ <text name="label_area">
+ Surface : [AREA] m²
+ </text>
+ <button label="À propos du terrain..." label_selected="À propos du terrain..." name="button about land" width="142"/>
+ <check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorie les parcelles en fonction de leur propriétaire :
+
+Vert = votre terrain
+Turquoise = le terrain de votre groupe
+Rouge = appartenant à d&apos;autres
+Jaune = en vente
+Mauve = aux enchères
+Gris = public"/>
+ <text name="label_parcel_modify">
+ Modifier la parcelle
+ </text>
+ <button label="Diviser" label_selected="Diviser" name="button subdivide land" width="142"/>
+ <button label="Fusionner" label_selected="Fusionner" name="button join land" width="142"/>
+ <text name="label_parcel_trans">
+ Transactions
+ </text>
+ <button label="Acheter le terrain" label_selected="Acheter le terrain" name="button buy land" width="142"/>
+ <button label="Abandonner le terrain" label_selected="Abandonner le terrain" name="button abandon land" width="142"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
index 993f2bd5e4..7ee3ce957a 100644
--- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [ACCTTYPE], [PAYMENTINFO]
-Profil : [SL_PROFILE]
- </string>
- <slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
- <button label="Devenir amis" name="add_friend_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_avatar">
+ <string name="Subtitle">
+ [AGE]
+ </string>
+ <string name="Details">
+ [ACCTTYPE], [PAYMENTINFO]
+Profil : [SL_PROFILE]
+ </string>
+ <slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
+ <button label="Devenir amis" name="add_friend_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
index ba2559a9a1..8f3dfae86e 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_icon.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="Voir le profil..." name="Show Profile"/>
- <menu_item_call label="Envoyer IM..." name="Send IM"/>
- <menu_item_call label="Devenir amis..." name="Add Friend"/>
- <menu_item_call label="Supprimer cet ami..." name="Remove Friend"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+ <menu_item_call label="Voir le profil..." name="Show Profile"/>
+ <menu_item_call label="Envoyer IM..." name="Send IM"/>
+ <menu_item_call label="Devenir amis..." name="Add Friend"/>
+ <menu_item_call label="Supprimer cet ami..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_favorites.xml b/indra/newview/skins/default/xui/fr/menu_favorites.xml
index 663df9449a..5f1545fde7 100644
--- a/indra/newview/skins/default/xui/fr/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/fr/menu_favorites.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Téléporter" name="Teleport To Landmark"/>
- <menu_item_call label="Voir/Modifier le repère" name="Landmark Open"/>
- <menu_item_call label="Copier la SLurl" name="Copy slurl"/>
- <menu_item_call label="Voir sur la carte" name="Show On Map"/>
- <menu_item_call label="Copier" name="Landmark Copy"/>
- <menu_item_call label="Coller" name="Landmark Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Téléporter" name="Teleport To Landmark"/>
+ <menu_item_call label="Voir/Modifier le repère" name="Landmark Open"/>
+ <menu_item_call label="Copier la SLurl" name="Copy slurl"/>
+ <menu_item_call label="Voir sur la carte" name="Show On Map"/>
+ <menu_item_call label="Copier" name="Landmark Copy"/>
+ <menu_item_call label="Coller" name="Landmark Paste"/>
+ <menu_item_call label="Supprimer" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_group_plus.xml b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
index e4ad89751f..f5882261b0 100644
--- a/indra/newview/skins/default/xui/fr/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="Rejoignez des groupes..." name="item_join"/>
- <menu_item_call label="Nouveau groupe..." name="item_new"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+ <menu_item_call label="Rejoignez des groupes..." name="item_join"/>
+ <menu_item_call label="Nouveau groupe..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index c3c931ad5c..4e2cb04498 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -1,76 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Acheter" name="Task Buy"/>
- <menu_item_call label="Ouvrir" name="Task Open"/>
- <menu_item_call label="Jouer" name="Task Play"/>
- <menu_item_call label="Propriétés" name="Task Properties"/>
- <menu_item_call label="Renommer" name="Task Rename"/>
- <menu_item_call label="Supprimer" name="Task Remove"/>
- <menu_item_call label="Vider la corbeille" name="Empty Trash"/>
- <menu_item_call label="Vider les objets trouvés" name="Empty Lost And Found"/>
- <menu_item_call label="Nouveau dossier" name="New Folder"/>
- <menu_item_call label="Nouveau script" name="New Script"/>
- <menu_item_call label="Nouvelle note" name="New Note"/>
- <menu_item_call label="Nouveau geste" name="New Gesture"/>
- <menu label="Nouveaux habits" name="New Clothes">
- <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
- <menu_item_call label="Nouveau pantalon" name="New Pants"/>
- <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
- <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
- <menu_item_call label="Nouvelle veste" name="New Jacket"/>
- <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
- <menu_item_call label="Nouveaux gants" name="New Gloves"/>
- <menu_item_call label="Nouveau tricot" name="New Undershirt"/>
- <menu_item_call label="Nouveaux sous-vêtements" name="New Underpants"/>
- </menu>
- <menu label="Nouvelles parties du corps" name="New Body Parts">
- <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
- <menu_item_call label="Nouvelle peau" name="New Skin"/>
- <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
- <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
- </menu>
- <menu label="Changer de type" name="Change Type">
- <menu_item_call label="Défaut" name="Default"/>
- <menu_item_call label="Gants" name="Gloves"/>
- <menu_item_call label="Veste" name="Jacket"/>
- <menu_item_call label="Pantalon" name="Pants"/>
- <menu_item_call label="Silhouette" name="Shape"/>
- <menu_item_call label="Chaussures" name="Shoes"/>
- <menu_item_call label="Chemise" name="Shirt"/>
- <menu_item_call label="Jupe" name="Skirt"/>
- <menu_item_call label="Sous-vêtements (femme)" name="Underpants"/>
- <menu_item_call label="Sous-vêtements (homme)" name="Undershirt"/>
- </menu>
- <menu_item_call label="Téléporter" name="Landmark Open"/>
- <menu_item_call label="Ouvrir" name="Animation Open"/>
- <menu_item_call label="Ouvrir" name="Sound Open"/>
- <menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
- <menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
- <menu_item_call label="Ouvrir" name="Open"/>
- <menu_item_call label="Propriétés" name="Properties"/>
- <menu_item_call label="Renommer" name="Rename"/>
- <menu_item_call label="Copier l&apos;UUID (identifiant universel unique)" name="Copy Asset UUID"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Enlever les objets" name="Take Off Items"/>
- <menu_item_call label="Ajouter à l&apos;ensemble" name="Add To Outfit"/>
- <menu_item_call label="Remplacer l&apos;ensemble" name="Replace Outfit"/>
- <menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
- <menu_item_call label="Jouer" name="Sound Play"/>
- <menu_item_call label="Jouer dans le Monde" name="Animation Play"/>
- <menu_item_call label="Jouer localement" name="Animation Audition"/>
- <menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
- <menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
- <menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
- <menu_item_call label="Activer" name="Activate"/>
- <menu_item_call label="Désactiver" name="Deactivate"/>
- <menu_item_call label="Détacher de vous" name="Detach From Yourself"/>
- <menu_item_call label="Porter" name="Object Wear"/>
- <menu label="Attacher à" name="Attach To"/>
- <menu label="Attacher au HUD " name="Attach To HUD"/>
- <menu_item_call label="Éditer" name="Wearable Edit"/>
- <menu_item_call label="Porter" name="Wearable Wear"/>
- <menu_item_call label="Enlever" name="Take Off"/>
- <menu_item_call label="--aucune option--" name="--no options--"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="Acheter" name="Task Buy"/>
+ <menu_item_call label="Ouvrir" name="Task Open"/>
+ <menu_item_call label="Jouer" name="Task Play"/>
+ <menu_item_call label="Propriétés" name="Task Properties"/>
+ <menu_item_call label="Renommer" name="Task Rename"/>
+ <menu_item_call label="Supprimer" name="Task Remove"/>
+ <menu_item_call label="Vider la corbeille" name="Empty Trash"/>
+ <menu_item_call label="Vider les objets trouvés" name="Empty Lost And Found"/>
+ <menu_item_call label="Nouveau dossier" name="New Folder"/>
+ <menu_item_call label="Nouveau script" name="New Script"/>
+ <menu_item_call label="Nouvelle note" name="New Note"/>
+ <menu_item_call label="Nouveau geste" name="New Gesture"/>
+ <menu label="Nouveaux habits" name="New Clothes">
+ <menu_item_call label="Nouvelle chemise" name="New Shirt"/>
+ <menu_item_call label="Nouveau pantalon" name="New Pants"/>
+ <menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
+ <menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
+ <menu_item_call label="Nouvelle veste" name="New Jacket"/>
+ <menu_item_call label="Nouvelle jupe" name="New Skirt"/>
+ <menu_item_call label="Nouveaux gants" name="New Gloves"/>
+ <menu_item_call label="Nouveau tricot" name="New Undershirt"/>
+ <menu_item_call label="Nouveaux sous-vêtements" name="New Underpants"/>
+ </menu>
+ <menu label="Nouvelles parties du corps" name="New Body Parts">
+ <menu_item_call label="Nouvelle silhouette" name="New Shape"/>
+ <menu_item_call label="Nouvelle peau" name="New Skin"/>
+ <menu_item_call label="Nouveaux cheveux" name="New Hair"/>
+ <menu_item_call label="Nouveaux yeux" name="New Eyes"/>
+ </menu>
+ <menu label="Changer de type" name="Change Type">
+ <menu_item_call label="Défaut" name="Default"/>
+ <menu_item_call label="Gants" name="Gloves"/>
+ <menu_item_call label="Veste" name="Jacket"/>
+ <menu_item_call label="Pantalon" name="Pants"/>
+ <menu_item_call label="Silhouette" name="Shape"/>
+ <menu_item_call label="Chaussures" name="Shoes"/>
+ <menu_item_call label="Chemise" name="Shirt"/>
+ <menu_item_call label="Jupe" name="Skirt"/>
+ <menu_item_call label="Sous-vêtements (femme)" name="Underpants"/>
+ <menu_item_call label="Sous-vêtements (homme)" name="Undershirt"/>
+ </menu>
+ <menu_item_call label="Téléporter" name="Landmark Open"/>
+ <menu_item_call label="Ouvrir" name="Animation Open"/>
+ <menu_item_call label="Ouvrir" name="Sound Open"/>
+ <menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
+ <menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
+ <menu_item_call label="Ouvrir" name="Open"/>
+ <menu_item_call label="Propriétés" name="Properties"/>
+ <menu_item_call label="Renommer" name="Rename"/>
+ <menu_item_call label="Copier l&apos;UUID (identifiant universel unique)" name="Copy Asset UUID"/>
+ <menu_item_call label="Copier" name="Copy"/>
+ <menu_item_call label="Coller" name="Paste"/>
+ <menu_item_call label="Supprimer" name="Delete"/>
+ <menu_item_call label="Enlever les objets" name="Take Off Items"/>
+ <menu_item_call label="Ajouter à l&apos;ensemble" name="Add To Outfit"/>
+ <menu_item_call label="Remplacer l&apos;ensemble" name="Replace Outfit"/>
+ <menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
+ <menu_item_call label="Jouer" name="Sound Play"/>
+ <menu_item_call label="Jouer dans le Monde" name="Animation Play"/>
+ <menu_item_call label="Jouer localement" name="Animation Audition"/>
+ <menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
+ <menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
+ <menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
+ <menu_item_call label="Activer" name="Activate"/>
+ <menu_item_call label="Désactiver" name="Deactivate"/>
+ <menu_item_call label="Détacher de vous" name="Detach From Yourself"/>
+ <menu_item_call label="Porter" name="Object Wear"/>
+ <menu label="Attacher à" name="Attach To"/>
+ <menu label="Attacher au HUD " name="Attach To HUD"/>
+ <menu_item_call label="Éditer" name="Wearable Edit"/>
+ <menu_item_call label="Porter" name="Wearable Wear"/>
+ <menu_item_call label="Enlever" name="Take Off"/>
+ <menu_item_call label="--aucune option--" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_landmark.xml b/indra/newview/skins/default/xui/fr/menu_landmark.xml
index d887fb0f39..dfa794960e 100644
--- a/indra/newview/skins/default/xui/fr/menu_landmark.xml
+++ b/indra/newview/skins/default/xui/fr/menu_landmark.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="Copier la SLurl" name="copy"/>
- <menu_item_call label="Supprimer" name="delete"/>
- <menu_item_call label="Créer un Favori" name="pick"/>
-</toggleable_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+ <menu_item_call label="Copier la SLurl" name="copy"/>
+ <menu_item_call label="Supprimer" name="delete"/>
+ <menu_item_call label="Créer un Favori" name="pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_mini_map.xml b/indra/newview/skins/default/xui/fr/menu_mini_map.xml
index 5ab5f56ec5..219eb4ad4c 100644
--- a/indra/newview/skins/default/xui/fr/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/fr/menu_mini_map.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="popup">
- <menu_item_call label="Zoom rapproché" name="Zoom Close"/>
- <menu_item_call label="Zoom moyen" name="Zoom Medium"/>
- <menu_item_call label="Zoom éloigné" name="Zoom Far"/>
- <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/>
- <menu_item_call label="Carte du monde" name="World Map"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="popup">
+ <menu_item_call label="Zoom rapproché" name="Zoom Close"/>
+ <menu_item_call label="Zoom moyen" name="Zoom Medium"/>
+ <menu_item_call label="Zoom éloigné" name="Zoom Far"/>
+ <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/>
+ <menu_item_call label="Carte du monde" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_navbar.xml b/indra/newview/skins/default/xui/fr/menu_navbar.xml
index ce48f8e617..1b11dcbb0c 100644
--- a/indra/newview/skins/default/xui/fr/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/fr/menu_navbar.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="Voir les coordonnées" name="Show Coordinates"/>
- <menu_item_call label="Repère" name="Landmark"/>
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Supprimer" name="Delete"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+ <menu_item_check label="Voir les coordonnées" name="Show Coordinates"/>
+ <menu_item_call label="Repère" name="Landmark"/>
+ <menu_item_call label="Couper" name="Cut"/>
+ <menu_item_call label="Copier" name="Copy"/>
+ <menu_item_call label="Coller" name="Paste"/>
+ <menu_item_call label="Supprimer" name="Delete"/>
+ <menu_item_call label="Tout sélectionner" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_picks.xml b/indra/newview/skins/default/xui/fr/menu_picks.xml
index 6fcb857054..adb1cec8f5 100644
--- a/indra/newview/skins/default/xui/fr/menu_picks.xml
+++ b/indra/newview/skins/default/xui/fr/menu_picks.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="Infos" name="pick_info"/>
- <menu_item_call label="Éditer" name="pick_edit"/>
- <menu_item_call label="Téléporter" name="pick_teleport"/>
- <menu_item_call label="Carte" name="pick_map"/>
- <menu_item_call label="Supprimer" name="pick_delete"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+ <menu_item_call label="Infos" name="pick_info"/>
+ <menu_item_call label="Éditer" name="pick_edit"/>
+ <menu_item_call label="Téléporter" name="pick_teleport"/>
+ <menu_item_call label="Carte" name="pick_map"/>
+ <menu_item_call label="Supprimer" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_place.xml b/indra/newview/skins/default/xui/fr/menu_place.xml
index 85d8d33982..9928e302a0 100644
--- a/indra/newview/skins/default/xui/fr/menu_place.xml
+++ b/indra/newview/skins/default/xui/fr/menu_place.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="Enregistrer comme repère" name="landmark"/>
- <menu_item_call label="Créer un Favori" name="pick"/>
- <menu_item_call label="Acheter un pass" name="pass"/>
- <menu_item_call label="Éditer" name="edit"/>
-</toggleable_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+ <menu_item_call label="Enregistrer comme repère" name="landmark"/>
+ <menu_item_call label="Créer un Favori" name="pick"/>
+ <menu_item_call label="Acheter un pass" name="pass"/>
+ <menu_item_call label="Éditer" name="edit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_slurl.xml b/indra/newview/skins/default/xui/fr/menu_slurl.xml
index 055be714cf..ddfa5c0849 100644
--- a/indra/newview/skins/default/xui/fr/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/fr/menu_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="À propos de l&apos;URL" name="about_url"/>
- <menu_item_call label="Téléporter vers l&apos;URL" name="teleport_to_url"/>
- <menu_item_call label="Carte" name="show_on_map"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="À propos de l&apos;URL" name="about_url"/>
+ <menu_item_call label="Téléporter vers l&apos;URL" name="teleport_to_url"/>
+ <menu_item_call label="Carte" name="show_on_map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
index 76a573cfd5..816070cf3a 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir le profil du résident" name="show_agent"/>
- <menu_item_call label="Copier le nom dans le presse-papier" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Voir le profil du résident" name="show_agent"/>
+ <menu_item_call label="Copier le nom dans le presse-papier" name="url_copy_label"/>
+ <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_group.xml b/indra/newview/skins/default/xui/fr/menu_url_group.xml
index 4615ad0939..f16a91cf7b 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_group.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_group.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Voir le profil du groupe" name="show_group"/>
- <menu_item_call label="Copier le groupe dans le presse-papier" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Voir le profil du groupe" name="show_group"/>
+ <menu_item_call label="Copier le groupe dans le presse-papier" name="url_copy_label"/>
+ <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_http.xml b/indra/newview/skins/default/xui/fr/menu_url_http.xml
index 27bcb91f7e..15db7900b3 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_http.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_http.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Ouvrir la page Web" name="url_open"/>
- <menu_item_call label="Ouvrir dans un navigateur interne" name="url_open_internal"/>
- <menu_item_call label="Ouvrir dans un navigateur externe" name="url_open_external"/>
- <menu_item_call label="Copier l&apos;URL dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Ouvrir la page Web" name="url_open"/>
+ <menu_item_call label="Ouvrir dans un navigateur interne" name="url_open_internal"/>
+ <menu_item_call label="Ouvrir dans un navigateur externe" name="url_open_external"/>
+ <menu_item_call label="Copier l&apos;URL dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
index 50bd5b4f74..69449538d8 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
- <menu_item_call label="Me téléporter à l&apos;endroit de l&apos;objet" name="teleport_to_object"/>
- <menu_item_call label="Copier le nom de l&apos;objet dans le presse-papier" name="url_copy_label"/>
- <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Afficher les informations sur l&apos;objet" name="show_object"/>
+ <menu_item_call label="Me téléporter à l&apos;endroit de l&apos;objet" name="teleport_to_object"/>
+ <menu_item_call label="Copier le nom de l&apos;objet dans le presse-papier" name="url_copy_label"/>
+ <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml
index 1f30203a43..7d77b35036 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur la parcelle" name="show_parcel"/>
- <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Afficher les informations sur la parcelle" name="show_parcel"/>
+ <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml
index 143da03533..70564a6768 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Afficher les informations sur ce lieu" name="show_place"/>
- <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
- <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Afficher les informations sur ce lieu" name="show_place"/>
+ <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
+ <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml
index a32ce65ec1..4aaaf34408 100644
--- a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml
+++ b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Me téléporter à cet endroit." name="teleport"/>
- <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Me téléporter à cet endroit." name="teleport"/>
+ <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 8832550add..7f6960c8fb 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -1,2547 +1,2547 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- Ne plus afficher
- </global>
- <global name="alwayschoose">
- Toujours choisir cette option
- </global>
- <global name="implicitclosebutton">
- Fermer
- </global>
- <template name="okbutton">
- <form>
- <button name="OK" text="$yestext"/>
- </form>
- </template>
- <template name="okignore"/>
- <template name="okcancelbuttons">
- <form>
- <button name="Cancel" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore"/>
- <template name="okhelpbuttons">
- <form>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="Message d&apos;alerte inconnu" name="MissingAlert">
- Votre version de [APP_NAME] ne peut afficher ce message d&apos;erreur. Veuillez vous assurer que vous avez bien la toute dernière version du client.
-
-Détails de l&apos;erreur : L&apos;alerte, appelée &apos;[_NAME]&apos; est introuvable dans notifications.xml.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- Erreur floater : impossible de trouver les contrôles suivants :
-
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- Aucun didacticiel n&apos;est disponible actuellement.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
- </notification>
- <notification name="BadInstallation">
- Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version su client. http://get.secondlife.com
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- Connexion à [SECOND_LIFE_GRID] impossible.
-&apos;[DIAGNOSTIC]&apos;
-Veuillez vérifier votre connexion Internet.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- Le modèle de message [PATH] est introuvable.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- Enregistrer les changements dans la partie du corps/les habits actuels ?
- <usetemplate canceltext="Cancel" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
- </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>
- <notification name="CompileQueueSaveBytecode">
- Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement.
- </notification>
- <notification name="WriteAnimationFail">
- Une erreur est survenue lors de l&apos;écriture des données d&apos;animation. Veuillez réessayer ultérieurement.
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- Un problème est survenu lors du chargement du script compilé, suite au problème suivant : [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- Impossible d&apos;afficher les contenus de plus d&apos;un objet à la fois.
-Veuillez ne sélectionner qu&apos;un seul objet.
- </notification>
- <notification name="SaveClothingBodyChanges">
- Enregistrer tous les changements dans les habits/parties du corps ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Tout enregistrer"/>
- </notification>
- <notification name="GrantModifyRights">
- Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
-Souhaitez-vous accorder des droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
-Souhaitez-vous accorder des droits d&apos;édition aux résidents selectionnés ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="RevokeModifyRights">
- Souhaitez-vous retirer les droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- Souhaitez-vous retirer les droits d&apos;édition aux résidents selectionnés ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="UnableToCreateGroup">
- Impossible de créer le groupe.
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ignorer les modifications" yestext="Enregistrer les modifications"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- Pour envoyer une notice au groupe, vous devez indiquer un sujet.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- Vous êtes sur le point d&apos;ajouter des membres du groupe dans le rôle de [ROLE_NAME].
-Les membres ne peuvent pas être destitués de ce rôle.
-Ils doivent donner eux-mêmes leur démission.
-Êtes-vous certain de vouloir continuer ?
- <usetemplate ignoretext="Confirmer avant d&apos;ajouter un nouveau propriétaire" name="okcancelignore" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- Vous êtes sur le point d&apos;ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ».
- *Avertissement*
- Tout membre disposant de ce pouvoir peut s&apos;affecter lui-même, ainsi que tout autre membre, à des rôles disposant de pouvoirs plus importants, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d&apos;attribuer ce pouvoir.
-
-Ajouter ce pouvoir à « [ROLE_NAME] » ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- Vous êtes sur le point d&apos;ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ».
-
- *Avertissement*
- Tout membre dans un rôle avec ce pouvoir peut s&apos;attribuer à lui-même, ainsi qu&apos;à tout autre membre, Tous les pouvoirs, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire.
-
-Ajouter ce pouvoir à « [ROLE_NAME] » ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- Rejoindre ce groupe coûte [COST] L$.
-Voulez-vous continuer ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Rejoindre"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- Rejoindre ce groupe coûte [COST] L$.
-Vous n&apos;avez pas suffisamment de L$ pour rejoindre ce groupe.
- </notification>
- <notification name="CreateGroupCost">
- La création de ce groupe coûte 100 L$.
-Les groupes doivent comporter plus d&apos;un membre, sinon ils sont supprimés.
-Veuillez inviter des membres d&apos;ici 48 heures.
- <usetemplate canceltext="Annuler" name="okcancelbuttons" notext="Annuler" yestext="Créer un groupe pour 100 L$"/>
- </notification>
- <notification name="LandBuyPass">
- Pour [COST] L$ vous pouvez pénétrer sur ce terrain ([PARCEL_NAME]) et y rester [TIME] heures. Acheter un pass ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- Pour rendre l&apos;annonce disponible à tous, le prix de vente doit être supérieur à 0 L$.
-Si le prix de vente est de 0 L$, vous devez choisir un acheteur spécifique.
- </notification>
- <notification name="ConfirmLandSaleChange">
- Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente.
-Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME].
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- Attention : en cliquant sur Vendre à n&apos;importe qui, vous rendez votre terrain disponible à toute la communauté de [SECOND_LIFE], même aux personnes qui ne sont pas dans cette région.
-
-Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente.
-Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME].
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- Êtes-vous certain de vouloir renvoyer tous les objets partagés par le groupe [NAME] sur cette parcelle dans l&apos;inventaire du propriétaire précédent ?
-
-*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés !
-
-Objets : [N]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- Etes-vous certain de vouloir renvoyer tous les objets que [NAME] possède sur cette parcelle dans son inventaire ?
-
-Objets : [N]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- Êtes-vous certain de vouloir renvoyer tous les objets que vous possédez sur cette parcelle dans votre inventaire ?
-
-Objets : [N]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- Êtes-vous certain de vouloir renvoyer tous les objets que vous ne possédez pas sur cette parcelle dans l&apos;inventaire de leur propriétaire ?
-Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents.
-
-*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés !
-
-Objets : [N]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- Êtes-vous certain de vouloir renvoyer tous les objets que [NAME] ne possède pas sur cette parcelle dans l&apos;inventaire de leur propriétaire ?
-Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents.
-
-*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés !
-
-Objets : [N]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- Êtes-vous certain de vouloir renvoyer tous les objets de la liste dans l&apos;inventaire de leur propriétaire ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- Êtes-vous certain de vouloir désactiver tous les objets dans cette région ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- Renvoyer les objets de cette parcelle qui ne sont pas partagés avec le groupe [NAME] à leur propriétaire ?
-
-Objets : [N]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- Impossible de désactiver les scripts.
-Les dégâts sont autorisés dans toute la région.
-Pour que les armes fonctionnent, les scripts doivent être autorisés.
- </notification>
- <notification name="MustBeInParcel">
- Pour définir le point d&apos;atterrissage, vous devez vous trouver à l&apos;intérieur de la parcelle.
- </notification>
- <notification name="PromptRecipientEmail">
- Veuillez saisir une adresse e-mail valide pour le(s) destinataire(s).
- </notification>
- <notification name="PromptSelfEmail">
- Veuillez saisir votre adresse e-mail.
- </notification>
- <notification name="PromptMissingSubjMsg">
- Envoyer la photo avec le sujet ou le message par défaut ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- Erreur dans le traitement des données de la photo
- </notification>
- <notification name="ErrorEncodingSnapshot">
- Erreur d&apos;encodage de la photo.
- </notification>
- <notification name="ErrorUploadingPostcard">
- Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- Une erreur est survenue lors du chargement de la capture d&apos;écran destinée au rapport, suite au problème suivant : [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- Pour vous connecter à [SECOND_LIFE], vous devez accepter les Conditions d&apos;utilisation.
- </notification>
- <notification name="CouldNotPutOnOutfit">
- Impossible de mettre cet ensemble.
-Ce dossier ne contient pas d&apos;habits, de parties du corps ni de pièces jointes.
- </notification>
- <notification name="CannotWearTrash">
- Vous ne pouvez pas porter d&apos;habits ni de parties du corps se trouvant dans la corbeille.
- </notification>
- <notification name="CannotWearInfoNotComplete">
- Vous ne pouvez pas porter cet article car il n&apos;a pas encore été chargé. Veuillez réessayer dans une minute.
- </notification>
- <notification name="MustHaveAccountToLogIn">
- Oups! Vous avez oublié de fournir certaines informations.
-Vous devez saisir le nom et le prénom de votre avatar.
-
-Pour entrer dans [SECOND_LIFE], vous devez avoir un compte. Voulez-vous en créer un maintenant ?
- <url name="url">
- http://join.secondlife.com/
- </url>
- <usetemplate name="okcancelbuttons" notext="Réessayer" yestext="Créer un compte"/>
- </notification>
- <notification name="AddClassified">
- Les petites annonces sont publiées à l&apos;onglet Petites annonces de la section Recherche pendant une semaine.
-Rédigez votre annonce, puis cliquez sur Publier pour l&apos;ajouter à la liste des annonces.
-Au moment de cliquer sur Publier, vous serez invité à payer des frais.
-Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dans les résultats de recherche de mots-clés.
- <usetemplate ignoretext="Comment ajouter une nouvelle petite annonce" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="DeleteClassified">
- Supprimer l&apos;annonce [NAME] ?
-Une fois payés, les frais ne sont pas remboursables.
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ClassifiedSave">
- Enregistrer les changements dans l&apos;annonce [NAME] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
- </notification>
- <notification name="DeleteAvatarPick">
- Supprimer le favori [PICK] ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- Aller à la page web de [SECOND_LIFE] réservée aux événements ?
- <url name="url">
- http://secondlife.com/events/
- </url>
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- Veuillez sélectionner une proposition.
- </notification>
- <notification name="SelectHistoryItemToView">
- Veuillez sélectionner un historique.
- </notification>
- <notification name="ResetShowNextTimeDialogs">
- Souhaitez-vous réactiver tous les pop-ups que vous aviez désactivés ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="SkipShowNextTimeDialogs">
- Voulez-vous désactiver tous les pop-ups qui peuvent être évités ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="CacheWillClear">
- Le cache sera vidé après le redémarrage de [APP_NAME].
- </notification>
- <notification name="CacheWillBeMoved">
- Le cache sera déplacé après le redémarrage de [APP_NAME].
-Remarque : cela videra le cache.
- </notification>
- <notification name="ChangeConnectionPort">
- Les paramètres du port prendront effet après le redémarrage de [APP_NAME].
- </notification>
- <notification name="ChangeSkin">
- Le nouveau thème apparaîtra après le redémarrage de [APP_NAME].
- </notification>
- <notification name="GoToAuctionPage">
- Aller à la page web de [SECOND_LIFE] pour voir le détail des enchères ou enchérir ?
- <url name="url">
- http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
- </url>
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- Enregistrer les changements ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- L&apos;enregistrement du geste a échoué.
-Il y a trop d&apos;étapes dans ce geste.
-Essayez d&apos;en supprimer quelques-unes.
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- L&apos;enregistrement du geste a échoué. Veuillez réessayer dans une minute.
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- Le geste n&apos;a pas pu être enregistré car l&apos;objet ou l&apos;inventaire de l&apos;objet associé n&apos;a pas été trouvé.
-L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
- </notification>
- <notification name="GestureSaveFailedReason">
- Une erreur est survenue lors de l&apos;enregistrement du geste, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre geste ultérieurement.
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- La note n&apos;a pas pu être enregistrée car l&apos;objet ou l&apos;inventaire de l&apos;objet associé n&apos;a pas été trouvé.
-L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
- </notification>
- <notification name="SaveNotecardFailReason">
- Une erreur est survenue lors de l&apos;enregistrement de la note, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre note ultérieurement.
- </notification>
- <notification name="ScriptCannotUndo">
- Impossible d&apos;annuler tous les changements dans votre version du script.
-Souhaitez-vous charger la dernière version enregistrée sur le serveur ?
-(**Attention** Cette opération est irréversible.)
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- Une erreur est survenue lors de l&apos;enregistrement du script, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre script ultérieurement.
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- Impossible d&apos;enregistrer le script car l&apos;objet qui le contient est introuvable.
-L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
- </notification>
- <notification name="SaveBytecodeFailReason">
- Une erreur est survenue lors de l&apos;enregistrement du script compilé, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre script ultérieurement.
- </notification>
- <notification name="StartRegionEmpty">
- Vous n&apos;avez pas défini de région de départ.
-Veuillez saisir le nom de la région dans la case Lieu de départ, ou choisissez Dernier emplacement ou Domicile comme Lieu de départ.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- Impossible de lancer ou d&apos;arrêter le script car l&apos;objet qui le contient est introuvable.
-L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
- </notification>
- <notification name="CannotDownloadFile">
- Impossible de télécharger le fichier
- </notification>
- <notification name="CannotWriteFile">
- Impossible d&apos;écrire le fichier [[FILE]]
- </notification>
- <notification name="UnsupportedHardware">
- Avertissement : vous n&apos;avez pas la configuration système requise pour utiliser [APP_NAME]. Si vous continuez à utiliser [APP_NAME], votre performance risque d&apos;être moindre. Malheureusement, la section [SUPPORT_SITE] n&apos;offre aucune aide pour les problèmes de configuration système.
-
-MINSPECS
-Voulez-vous visiter [_URL] pour plus d&apos;informations ?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=fr
- </url>
- <usetemplate ignoretext="Mon matériel n&apos;est pas pris en charge" name="okcancelignore" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="UnknownGPU">
- Votre système contient une carte graphique que nous ne connaissons pas actuellement.
-Cela est souvent le cas avec le nouveau materiel qui n&apos;a pas encore été testé avec [APP_NAME]. Vous pourrez probablement utiliser [APP_NAME] sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques.
-(Préférences &gt; Graphiques).
- <form name="form">
- <ignore name="ignore" text="Ma carte graphique ne peut être identifiée"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] a planté lors de l&apos;initialisation des drivers graphiques.
-La qualité des graphiques sera paramétrée sur Faible pour éviter certaines erreurs de driver fréquentes.
-Certaines fonctionnalités graphiques seront donc désactivées.
-Nous vous recommandons de mettre à jour les drivers de votre carte graphique.
-La qualité des graphiques peut être augmentée à la section Préférences &gt; Graphiques
- </notification>
- <notification name="RegionNoTerraforming">
- Le terraformage est interdit dans la région [REGION].
- </notification>
- <notification name="CannotCopyWarning">
- Vous n&apos;êtes pas autorisé à copier cet objet et il disparaîtra de votre inventaire si vous le donnez. Souhaitez-vous vraiment offrir cet objet ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="CannotGiveItem">
- Impossible de donner l&apos;objet de l&apos;inventaire.
- </notification>
- <notification name="TransactionCancelled">
- Transaction annulée.
- </notification>
- <notification name="TooManyItems">
- Impossible de donner plus de 42 objets au cours d&apos;un seul transfert d&apos;inventaire.
- </notification>
- <notification name="NoItems">
- Vous n&apos;êtes pas autorisé à transférer les objets sélectionnés.
- </notification>
- <notification name="CannotCopyCountItems">
- Vous n&apos;êtes pas autorisé à copier [COUNT] des objets sélectionnés. Ces objets disparaîtront de votre inventaire.
-Souhaitez-vous vraiment donner ces objets ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="CannotGiveCategory">
- Vous n&apos;êtes pas autorisé à transférer le dossier sélectionné.
- </notification>
- <notification name="FreezeAvatar">
- Geler cet avatar ?
-Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde.
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- Geler [AVATAR_NAME] ?
-Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde.
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/>
- </notification>
- <notification name="EjectAvatarFullname">
- Expulser [AVATAR_NAME] de votre terrain ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Expulser et bannir" yestext="Expulser"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- Expulser cet avatar de votre terrain ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- Expulser [AVATAR_NAME] de votre terrain ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/>
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- Erreur d&apos;acquisition : trop d&apos;objets sélectionnés.
- </notification>
- <notification name="AcquireErrorObjectSpan">
- Erreur d&apos;acquisition : les objets sont répartis dans plus d&apos;une région.
-Veuillez mettre tous les objets que vous souhaitez acquérir dans la même région.
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-Aller sur [_URL] pour obtenir des informations sur l&apos;achat de L$ ?
- <url name="url">
- http://secondlife.com/app/currency/
- </url>
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- Impossible de lier ces [COUNT] objets.
-Vous pouvez lier un maximum de [MAX] objets.
- </notification>
- <notification name="CannotLinkIncompleteSet">
- Vous ne pouvez lier que des ensembles d&apos;objets complets et vous devez choisir un minimum de deux objets.
- </notification>
- <notification name="CannotLinkModify">
- Impossible de lier car vous n&apos;avez pas le droit de modifier tous les objets.
-
-Assurez-vous que vous êtes le propriétaire de tous les objets et qu&apos;aucun d&apos;eux n&apos;est verrouillé.
- </notification>
- <notification name="CannotLinkDifferentOwners">
- Impossible de lier car les objets n&apos;ont pas tous le même propriétaire.
-
-Assurez-vous que vous êtes le propriétaire de tous les objets sélectionnés.
- </notification>
- <notification name="NoFileExtension">
- Pas d&apos;extension pour le fichier suivant : &apos;[FILE]&apos;
-
-Assurez-vous que le fichier a l&apos;extension correcte.
- </notification>
- <notification name="InvalidFileExtension">
- Extension de fichier [EXTENSION] invalide
-[VALIDS] attendu
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- Impossible de lire le fichier son chargé :
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- Il semble que le fichier ne soit pas un fichier RIFF WAVE :
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- Il semble que le fichier ne soit pas un fichier audio PCM WAVE :
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- Le fichier contient un nombre de canaux invalide (doit être mono ou stéréo) :
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- Le fichier ne semble pas être pris en charge (doit être 44,1 k) :
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- Le fichier ne semble pas être pris en charge (doit faire 8 ou 16 bit) :
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- Impossible de trouver les données dans l&apos;en-tête WAV :
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- Le fichier audio est trop long (10 secondes maximum) :
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- Problème avec le fichier [FILE] :
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- Impossible d&apos;ouvrir le fichier son compressé temporaire : [FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- Échec d&apos;encodage Vorbis inconnu sur : [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- Impossible d&apos;encoder le fichier : [FILE]
- </notification>
- <notification name="CorruptResourceFile">
- Fichier ressource corrompu : [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- Version de fichier ressource Linden inconnu : [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- Impossible de créer le fichier de sortie : [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- Actuellement, APP_NAME] ne prend pas en charge le chargement de lots de fichiers d&apos;animation.
- </notification>
- <notification name="CannotUploadReason">
- Impossible de charger [FILE] suite au problème suivant : [REASON]
-Veuillez réessayer ultérieurement.
- </notification>
- <notification name="LandmarkCreated">
- Vous avez ajouté &quot;[LANDMARK_NAME]&quot; à votre dossier [FOLDER_NAME].
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- Vous ne pouvez pas créer de repère ici car le propriétaire du terrain ne l&apos;autorise pas.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- Impossible d&apos;effectuer les recompilations.
-Sélectionnez un objet avec un script.
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- Impossible d&apos;effectuer les recompilations.
-
-Sélectionnez des objets qui ont des scripts et que vous pouvez modifier.
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- Impossible d&apos;effectuer la réinitialisation.
-
-Veuillez sélectionner des objets avec des scripts.
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- Impossible d&apos;effectuer la réinitialisation.
-
-Sélectionnez des objets qui ont des scripts et que vous pouvez modifier.
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- Impossible de définir les scripts sur « exécution ».
-
-Veuillez sélectionner des objets avec des scripts.
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- Impossible de définir les scripts sur « non-exécution ».
-
-Veuillez sélectionner des objets avec des scripts.
- </notification>
- <notification name="NoFrontmostFloater">
- Aucun floater frontmost à sauvegarder.
- </notification>
- <notification name="SeachFilteredOnShortWords">
- Votre requête a été modifiée et les mots trops courts ont été supprimés.
-
-Recherche effectuée : [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- Vos termes de recherche étaient trop courts et aucune recherche n&apos;a été effectuée.
- </notification>
- <notification name="CouldNotTeleportReason">
- Impossible de téléporter.
-[REASON]
- </notification>
- <notification name="invalid_tport">
- Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
-Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
- </notification>
- <notification name="invalid_region_handoff">
- Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir traverser des régions.
-Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
- </notification>
- <notification name="blocked_tport">
- Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
-Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème.
- </notification>
- <notification name="nolandmark_tport">
- Désolé, le système n&apos;a pas réussi à localiser la destination de votre repère.
- </notification>
- <notification name="timeout_tport">
- Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
-Veuillez réessayer dans un moment.
- </notification>
- <notification name="noaccess_tport">
- Désolé, vous n&apos;avez pas accès à cette destination.
- </notification>
- <notification name="missing_attach_tport">
- Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d&apos;essayer de vous téléporter.
- </notification>
- <notification name="too_many_uploads_tport">
- Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée.
- </notification>
- <notification name="expired_tport">
- Désolé, votre demande de téléportation n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
- </notification>
- <notification name="expired_region_handoff">
- Désolé, votre demande pour passer dans une autre région n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
- </notification>
- <notification name="no_host">
- Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu&apos;elle n&apos;existe plus. Veuillez réessayer dans quelques minutes.
- </notification>
- <notification name="no_inventory_host">
- L&apos;inventaire est temporairement indisponible.
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- Impossible de définir le propriétaire foncier :
-aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- Impossible de définir un propriétaire car la sélection couvre plusieurs régions. Veuillez sélectionner une zone plus petite et réessayer.
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. Souhaitez-vous définir un propriétaire ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- Problème :
-Aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotContentifyNoRegion">
- Problème :
-Aucune région sélectionnée.
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- Impossible d&apos;abandonner le terrain :
-aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- Impossible d&apos;abandonner le terrain :
-la région est introuvable.
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- Impossible d&apos;acheter le terrain :
-aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotBuyLandNoRegion">
- Impossible d&apos;acheter le terrain :
-la région dans laquelle il est situé est introuvable.
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- Vous ne pouvez pas fermer la fenêtre Acheter le terrain avant que [APP_NAME] n&apos;estime le montant de cette transaction.
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- Cession du terrain impossible :
-aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotDeedLandNoGroup">
- Cession du terrain impossible :
-aucun groupe sélectionné.
- </notification>
- <notification name="CannotDeedLandNoRegion">
- Cession du terrain impossible :
-la région dans laquelle il est situé est introuvable.
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- Cession du terrain impossible :
-plusieurs parcelles sélectionnées.
-
-Essayez de ne sélectionner qu&apos;une seule parcelle.
- </notification>
- <notification name="ParcelCanPlayMedia">
- Cette parcelle propose des flux média.
-Pour jouer des flux média, il faut avoir une connexion internet rapide.
-
-Jouer les flux média lorsqu&apos;ils sont disponibles ?
-(Vous pourrez modifier cette option ultérieurement sous Préférences &gt; Audio et vidéo.)
- <usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/>
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- Cession du terrain impossible :
-rapport de propriété sur le point d&apos;être envoyé par le serveur.
-
-Merci de réessayer.
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- Cession du terrain impossible :
-la cession de terrain est interdite dans la région [REGION].
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- Impossible d&apos;abandonner le terrain :
-mise à jour des informations sur la parcelle sur le point d&apos;être envoyée par le serveur.
-
-Veuillez réessayer dans quelques secondes.
- </notification>
- <notification name="CannotReleaseLandSelected">
- Impossible d&apos;abandonner le terrain :
-vous n&apos;êtes pas le propriétaire des parcelles sélectionnées.
-
-Veuillez sélectionner une seule parcelle.
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- Impossible d&apos;abandonner le terrain :
-vous n&apos;avez pas le droit de libérer cette parcelle.
-Les parcelles qui vous appartiennent sont en vert.
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- Impossible d&apos;abandonner le terrain :
-la région dans laquelle il est situé est introuvable.
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- Impossible d&apos;abandonner le terrain :
-le transfert de terrain est interdit dans la région [REGION].
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- Impossible d&apos;abandonner le terrain :
-vous devez sélectionner une parcelle entière pour la libérer.
-
-Sélectionnez toute la parcelle ou divisez-la d&apos;abord.
- </notification>
- <notification name="ReleaseLandWarning">
- Vous vous apprêtez à libérer [AREA] m² de terrain.
-Si vous libérez cette parcelle, elle sera supprimée de votre patrimoine, mais vous ne recevrez pas de L$.
-
-Libérer ce terrain ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- Division du terrain impossible :
-
-aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- Division du terrain impossible :
-
-Toute la parcelle est sélectionnée.
-Sélectionnez une partie de la parcelle uniquement.
- </notification>
- <notification name="LandDivideWarning">
- Si vous divisez ce terrain, cette parcelle sera partagée en deux et chaque parcelle pourra avoir ses propres paramètres. Après cette opération, certains paramètres reviendront aux paramètres par défaut.
-
-Diviser le terrain ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- Division du terrain impossible :
-la région dans laquelle il est situé est introuvable.
- </notification>
- <notification name="CannotJoinLandNoRegion">
- Impossible de fusionner le terrain :
-la région dans laquelle il est situé est introuvable.
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- Impossible de fusionner le terrain :
-aucune parcelle sélectionnée.
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- Impossible de fusionner le terrain :
-vous avez sélectionné une seule parcelle.
-
-Sélectionnez le terrain sur les deux parcelles.
- </notification>
- <notification name="CannotJoinLandSelection">
- Impossible de fusionner le terrain :
-vous devez sélectionner au moins deux parcelles.
-
-Sélectionnez le terrain sur les deux parcelles.
- </notification>
- <notification name="JoinLandWarning">
- En fusionnant ce terrain, vous créerez une grande parcelle composée de toutes les parcelles se trouvant dans le rectangle sélectionné.
-Vous devrez réinitialiser le nom et les options de la nouvelle parcelle.
-
-Fusionner le terrain ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- Cette note doit être sauvegardée avant que l&apos;objet ne puisse être copié ou visualisé. Enregistrer la note ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- Copier cet objet dans votre inventaire ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Copier"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- Échec du changement de résolution (à [RESX], de [RESY])
- </notification>
- <notification name="ErrorUndefinedGrasses">
- Erreur : herbes non identifiées : [SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- Erreur : arbres non identifiés : [SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- Impossible de sauvegarder [NAME]. Pour pouvoir sauvegarder ce fichier, vous devez d&apos;abord libérer de la mémoire sur votre ordinateur.
- </notification>
- <notification name="CannotSaveToAssetStore">
- Impossible de sauvegarder le fichier [NAME] dans la base de données centrale.
-Cette erreur est généralement temporaire. Veuillez éditer et sauvegarder l&apos;élément endossable à nouveau d&apos;ici quelques minutes.
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- Vous avez été déconnecté(e) de [SECOND_LIFE] :
- [MESSAGE]
-Vous pouvez afficher vos messages instantanés et votre chat en cliquant sur Afficher IM et chat. Sinon, cliquez sur Quitter pour quitter immédiatement [APP_NAME].
- <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Afficher IM et chat"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- Impossible d&apos;acheter du terrain pour le groupe :
-Vous n&apos;avez pas le droit d&apos;acheter de terrain pour votre groupe.
- </notification>
- <notification label="Devenir amis" name="AddFriend">
- Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu&apos;ils se connectent.
-
-Proposer à [NAME] de devenir votre ami(e) ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification label="Devenir amis" name="AddFriendWithMessage">
- Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu&apos;ils se connectent.
-
-Proposer à [NAME] de devenir votre ami(e) ?
- <form name="form">
- <input name="message">
- Voulez-vous être mon ami(e) ?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- Voulez-vous supprimer [FIRST_NAME] [LAST_NAME] de votre liste d&apos;amis ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- Voulez-vous supprimer plusieurs résidents de votre liste d&apos;amis ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains des autres résidents dans cette région ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- Êtes-vous certain de vouloir supprimer tous les objets (scriptés ou pas) appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- Vous devez choisir un nom pour votre petite annonce.
- </notification>
- <notification name="MinClassifiedPrice">
- Le coût de l&apos;annonce doit être de [MIN_PRICE] L$ minimum.
-
-Veuillez saisir un montant plus élevé.
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- Au moins un des objets que vous avez sélectionnés est verrouillé.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- Au moins un des objets que vous avez sélectionnés n&apos;est pas copiable.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- Au moins un des objets que vous avez sélectionnés ne vous appartient pas.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- Au moins un des objets est verrouillé.
-Au moins un des objets n&apos;est pas copiable.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- Au moins un des objets est verrouillé.
-Au moins un des objets ne vous appartient pas.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- Au moins un des objets n&apos;est pas copiable.
-Au moins un des objets ne vous appartient pas.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- Au moins un des objets est verrouillé.
-Au moins un des objets n&apos;est pas copiable.
-Au moins un des objets ne vous appartient pas.
-
-Êtes-vous certain de vouloir supprimer ces objets ?
- <usetemplate name="okcancelbuttons" notext="annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- Au moins un des objets est verrouillé.
-
-Êtes-vous certain de vouloir prendre ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- Vous n&apos;êtes pas le propriétaire de tous les objets que vous prenez.
-Si vous continuez, les droits accordés au prochain propriétaire seront activés et vous risquez de ne plus pouvoir modifier ou copier les objets.
-
-Êtes-vous certain de vouloir prendre ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- Au moins un des objets est verrouillé.
-Vous n&apos;êtes pas le propriétaire de tous les objets que vous prenez.
-Si vous continuez, les droits accordés au prochain propriétaire seront activés et vous risquez de ne plus pouvoir modifier ou copier les objets.
-Par contre, vous pouvez prendre les objets sélectionnés.
-
-Êtes-vous certain de vouloir prendre ces objets ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- Impossible d&apos;acheter le terrain car la sélection couvre plusieurs régions.
-
-Veuillez sélectionner une zone plus petite et réessayer.
- </notification>
- <notification name="DeedLandToGroup">
- Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge.
-Le prix de la vente du terrain n&apos;est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe.
-
-Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge.
-La cession incluera une contribution de terrain simultanée au groupe de [FIRST_NAME] [LAST_NAME].
-Le prix de la vente du terrain n&apos;est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe.
-
-Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- Les paramètres d&apos;affichage sont au niveau le plus sûr, comme vous l&apos;aviez indiqué.
- </notification>
- <notification name="DisplaySetToRecommended">
- Vos paramètres d&apos;affichage ont été réglés avec une marge de sécurité en fonction de votre configuration système.
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- </notification>
- <notification name="AvatarMovedDesired">
- La destination que vous avez choisie n&apos;est pas disponible actuellement.
-Vous avez été téléporté vers une région voisine.
- </notification>
- <notification name="AvatarMovedLast">
- Votre dernière destination n&apos;est pas disponible actuellement.
-Vous avez été téléporté vers une région voisine.
- </notification>
- <notification name="AvatarMovedHome">
- La destination que vous avez choisie n&apos;est pas disponible actuellement.
-Vous avez été téléporté vers une région voisine.
-Nous vous conseillons de définir votre domicile ailleurs.
- </notification>
- <notification name="ClothingLoading">
- Vos vêtements sont en cours de téléchargement.
-Vous pouvez utiliser [SECOND_LIFE] normalement, les autres résidents vous voient correctement.
- <form name="form">
- <ignore name="ignore" text="Vos habits prennent du temps à télécharger"/>
- </form>
- </notification>
- <notification name="FirstRun">
- L&apos;installation de [APP_NAME] est terminée.
-
-S&apos;il s&apos;agit de la première fois que vous utilisez [SECOND_LIFE], vous devrez créer un compte avant de pouvoir vous connecter.
-Retourner sur www.secondlife.com pour créer un nouveau compte ?
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Nouveau compte..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- Nous avons des difficultés à vous connecter. Il y a peut-être un problème avec votre connexion Internet ou la [SECOND_LIFE_GRID].
-
-Vérifiez votre connextion Internet et réessayez dans quelques minutes, cliquez sur Aide pour consulter la page [SUPPORT_SITE] ou bien sur Téléporter pour essayer d&apos;aller chez vous.
- <url name="url">
- http://secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="Aide"/>
- <button name="Teleport" text="Téléporter"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- Votre personnage va apparaître dans un moment.
-
-Pour marcher, utilisez les flèches de direction.
-Appuyez sur F1 pour obtenir de l&apos;aide ou en savoir plus sur [SECOND_LIFE].
-Choisissez un avatar homme ou femme.
-Vous pourrez revenir sur votre décision plus tard.
- <usetemplate name="okcancelbuttons" notext="Femme" yestext="Homme"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] [PRICE] L$ Vous n&apos;avez pas suffisamment de L$ pour faire cela.
- </notification>
- <notification name="GrantedModifyRights">
- [FIRST_NAME] [LAST_NAME] vous avez donné la permission de modifier ses objets.
- </notification>
- <notification name="RevokedModifyRights">
- Vous n&apos;avez plus le droit de modifier les objets de [FIRST_NAME] [LAST_NAME].
- </notification>
- <notification name="FlushMapVisibilityCaches">
- Cela videra le cache cartographique de cette région.
-Cela n&apos;est vraiment utile que pour faire du débugage.
-(En production, attendez 5 minutes. Les cartes seront mises à jour après reconnexion.)
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- Impossible d&apos;acheter plus d&apos;un objet à la fois. Veuillez ne sélectionner qu&apos;un seul objet.
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- Impossible de copier les contenus de plus d&apos;un objet à la fois.
-Veuillez ne sélectionner qu&apos;un seul objet.
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- Téléporter tous les résidents de cette région chez eux ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- Etes-vous certain de vouloir renvoyer les objets appartenant à [USER_NAME] ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- Impossible de definir les textures de la région :
-La texture du terrain [TEXTURE_NUM] a une profondeur invalide ([TEXTURE_BIT_DEPTH]).
-
-Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer.
- </notification>
- <notification name="InvalidTerrainSize">
- Impossible de definir les textures de la région :
-La texture du terrain [TEXTURE_NUM] est trop volumineuse ([TEXTURE_SIZE_X] X [TEXTURE_SIZE_Y]).
-
-Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer.
- </notification>
- <notification name="RawUploadStarted">
- Le chargement a commencé. Cela va prendre une à deux minutes,
-suivant votre vitesse de connexion.
- </notification>
- <notification name="ConfirmBakeTerrain">
- Etes-vous sûr(e) de vouloir figer le relief actuel, en faire le point central des limites d&apos;élévation/abaissement de relief et la valeur par défaut du bouton Annuler modification ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- Vous ne pouvez pas autoriser plus de [MAX_AGENTS] résidents.
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- Vous ne pouvez pas bannir plus de [MAX_BANNED] résidents.
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- Echec lors de la tentative d&apos;ajout de [NUM_ADDED] agents :
-Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS].
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- Vous ne pouvez pas avoir plus que [MAX_GROUPS] groupes autorisés.
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Figer"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- Vous ne pouvez avoir que [MAX_MANAGER] gérants de domaine.
- </notification>
- <notification name="OwnerCanNotBeDenied">
- Impossible d&apos;ajouter le propriétaire du domaine à la liste des résidents bannis.
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- Impossible de changer d&apos;apparence jusqu&apos;à ce que les habits et la silhouette soient chargés.
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- Le nom de votre petite annonce doit commencer par un chiffre ou une lettre (A à Z). La ponctuation n&apos;est pas autorisée.
- </notification>
- <notification name="CantSetBuyObject">
- Cet objet n&apos;est pas à vendre.
-Veuillez choisir un objet à vendre et réessayer.
- </notification>
- <notification name="FinishedRawDownload">
- Chargement du fichier de terrain raw effectué vers :
-[DOWNLOAD_PATH].
- </notification>
- <notification name="DownloadWindowsMandatory">
- Une nouvelle version de [APP_NAME] est disponible.
-[MESSAGE]
-Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour.
- <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadWindows">
- Une mise à jour de [APP_NAME] est disponible.
-[MESSAGE]
-Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- Une mise à jour de [APP_NAME] est disponible.
-[MESSAGE]
-Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- Une nouvelle version de [APP_NAME] est disponible.
-[MESSAGE]
-Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour.
- <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadLinux">
- Une mise à jour de [SECOND_LIFE] est disponible.
-[MESSAGE]
-Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- Une mise à jour de [SECOND_LIFE] est disponible.
-[MESSAGE]
-Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadMacMandatory">
- Une nouvelle version de [APP_NAME] est disponible.
-[MESSAGE]
-Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour.
-
-Télécharger vers le dossier Applications ?
- <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadMac">
- Une mise à jour de [APP_NAME] est disponible.
-[MESSAGE]
-Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
-
-Télécharger vers le dossier Applications ?
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- Une mise à jour de [APP_NAME] est disponible.
-[MESSAGE]
-Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
-
-Télécharger vers le dossier Applications ?
- <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
- </notification>
- <notification name="DeedObjectToGroup">
- Si vous cédez cet objet, le groupe :
-* recevra les L$ versés pour l&apos;objet ;
- <usetemplate ignoretext="Confimer avant que je ne cède un objet à un groupe" name="okcancelignore" notext="Annuler" yestext="Céder"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Voulez-vous ouvrir votre navigateur web système pour afficher ce contenu ?
- <usetemplate ignoretext="Ouvrir mon navigateur pour consulter une page web" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- Aller sur secondlife.com pour gérer votre compte ?
- <usetemplate ignoretext="Lancer mon navigateur pour gérer mon compte" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- Pour apprendre à signaler un problème de sécurité, consultez le Wiki de [SECOND_LIFE].
- <usetemplate ignoretext="Lancer mon navigateur pour apprendre comment signaler un problème de sécurité" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- Consultez le Wiki sur l&apos;Assurance Qualité de [SECOND_LIFE].
- <usetemplate ignoretext="Lancer mon navigateur web pour consulter la page Wiki sur l&apos;Assurance Qualité." name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- Pour signaler des bugs et autres problèmes, utilisez le JIRA de [SECOND_LIFE].
- <usetemplate ignoretext="Lancer mon navigateur pour utiliser le Public Issue Tracker (JIRA)" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Visitez le blog officiel des Lindens pour les dernières nouvelles et informations.
- <usetemplate ignoretext="Lancer mon navigateur web pour consulter le blog" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- Voulez-vous ouvrir le guide pour l&apos;écriture de scripts ?
- <usetemplate ignoretext="Lancer mon navigateur web pour consulter le guide pour l&apos;écriture de scripts" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- Voulez-vous ouvrir le portail LSL pour l&apos;écriture de scripts ?
- <usetemplate ignoretext="Lancer mon navigateur web pour consulter le portail LSL" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/>
- </notification>
- <notification name="ReturnToOwner">
- Êtes-vous certain de vouloir renvoyer les objets sélectionnés à leur propriétaire ? Les objets donnés transférables seront renvoyés à leur ancien propriétaire.
-
-*Avertissement* Les objets non transférables seront supprimés !
- <usetemplate ignoretext="Confirmer avant de rendre les objets à leurs propriétaires" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- Vous êtes actuellement membre du groupe [GROUP].
-Quitter le groupe ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- Souhaitez-vous vraiment éjecter tous les utilisateurs de la grille ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous"/>
- </notification>
- <notification name="MuteLinden">
- Désolé, vous ne pouvez pas ignorer un Linden.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- Vous ne pouvez pas démarrer des enchères sur une parcelle déjà en vente. Si vous êtes certain de vouloir démarrer des enchères, mettez fin à la vente.
- </notification>
- <notification label="Échec de la fonction Ignorer les objets par nom" name="MuteByNameFailed">
- Vous ignorez déjà ce résident.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- Si vous supprimez des contenus, vous risquez d&apos;endommager l&apos;objet. Souhaitez-vous supprimer cet objet ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- Impossible d&apos;offrir une carte de visite actuellement. Veuillez réessayer dans un moment.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- Le mode Occupé est sélectionné.
-Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages instantanés génèreront la réponse en mode occupé que vous avez créée. Toutes les offres de téléportation seront refusées. Toutes les offres d&apos;inventaire iront dans la corbeille.
- <usetemplate ignoretext="Je change mon statut en mode Occupé" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre.
-[NAME] vous invite à rejoindre un groupe.
-[INVITE]
- <usetemplate name="okcancelbuttons" notext="Refuser" yestext="Rejoindre"/>
- </notification>
- <notification name="KickUser">
- Éjecter cet utilisateur avec quel message ?
- <form name="form">
- <input name="message">
- Un administrateur vous a déconnecté.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- Éjecter tous les résidents actuellement en ligne avec quel message ?
- <form name="form">
- <input name="message">
- Un administrateur vous a déconnecté.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- Geler cet utilisateur avec quel message ?
- <form name="form">
- <input name="message">
- Vous avez été gelé. Vous ne pouvez ni bouger ni chatter. Un administrateur va vous envoyer un message instantané (IM).
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- Dégeler cet utilisateur avec quel message ?
- <form name="form">
- <input name="message">
- Vous n&apos;êtes plus gelé.
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="OfferTeleport">
- Proposez une téléportation avec le message suivant ?
- <form name="form">
- <input name="message">
- On se rejoint à [REGION] ?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- Demander au résident de venir vous rejoindre ?
- <form name="form">
- <input name="message">
- On se rejoint à [REGION] ?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- Êtes-vous certain de vouloir être téléporté ?
- <usetemplate ignoretext="Confirmer que je veux me téléporter à un repère" name="okcancelignore" notext="Annuler" yestext="Téléporter"/>
- </notification>
- <notification name="TeleportToPick">
- Téléporter vers [PICK] ?
- <usetemplate ignoretext="Confirmer que je veux me téléporter à un endroit dans mes Préférences" name="okcancelignore" notext="Annuler" yestext="Téléporter"/>
- </notification>
- <notification label="Envoyer un message à tout le monde dans votre domaine" name="MessageEstate">
- Saisissez un message court qui sera envoyé à tous les résidents se trouvant actuellement sur votre domaine.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification label="Modifier un domaine Linden" name="ChangeLindenEstate">
- Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.).
-
-Cela est extrêmement délicat car l&apos;expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur.
-
-Continuer ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification label="Modifier l&apos;accès à un domaine Linden" name="ChangeLindenAccess">
- Vous vous apprêtez à modifier la liste d&apos;accès à un domaine appartenant aux Linden (continent, zone réservée aux ados, orientation etc.).
-
-Cette action est délicate et ne doit être effectuée que pour appeler le hack autorisant des objets/L$ à être transférés à l&apos;intérieur/extérieur de la grille.
-Cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur.
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateAllowedAgentAdd">
- Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateAllowedAgentRemove">
- Supprimer de la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateAllowedGroupAdd">
- Ajouter à la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateAllowedGroupRemove">
- Supprimer de la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateBannedAgentAdd">
- Refuser l&apos;accès à ce domaine uniquement ou à [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateBannedAgentRemove">
- Supprimer ce résident de la liste des résidents bannis pour ce domaine uniquement ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateManagerAdd">
- Ajouter un gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Choisir le domaine" name="EstateManagerRemove">
- Supprimer le gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
- </notification>
- <notification label="Confirmer" name="EstateKickUser">
- Éjecter [EVIL_USER] de ce domaine ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- Êtes-vous certain de vouloir modifier le règlement du domaine ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- Votre catégorie d&apos;accès ne vous autorise pas à pénétrer dans cette région. Cela vient peut-être du fait qu&apos;il manquait des informations pour valider votre âge.
-
-Vérifiez que vous avez la toute dernière version du client et consultez les pages d&apos;aide pour savoir comment accéder aux zones ayant ce niveau d&apos;accès.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- Votre catégorie d&apos;accès ne vous permet pas de pénétrer dans cette région.
-
-Souhaitez-vous en savoir plus sur les différentes catégories d&apos;accès ?
- <url name="url">
- http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
- </url>
- <usetemplate ignoretext="Je ne peux pas pénétrer dans cette région car je n&apos;ai pas accès à cette catégorie de contenu" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d&apos;aide"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- Votre catégorie d&apos;accès ne vous permet pas de pénétrer dans cette région.
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- Votre catégorie d&apos;accès ne vous permet pas de pénétrer dans cette région.
-
-En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d&apos;accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition &gt; Préférences... &gt; Général.
- <form name="form">
- <button name="OK" text="Modifier les Préférences"/>
- <button default="true" name="Cancel" text="Fermer"/>
- <ignore name="ignore" text="La catégorie de contenu que j&apos;ai choisie m&apos;empêche de pénétrer dans une région"/>
- </form>
- </notification>
- <notification name="LandClaimAccessBlocked">
- Votre catégorie d&apos;accès ne vous permet pas de réclamer cette région. Cela vient peut-être du fait qu&apos;il manquait des informations pour valider votre âge.
-
-Vérifiez que vous avez la toute dernière version du client et consultez les pages d&apos;aide pour savoir comment accéder aux zones ayant ce niveau d&apos;accès.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- Votre catégorie d&apos;accès ne vous permet pas de réclamer cette région.
-
-Souhaitez-vous en savoir plus sur les différentes catégories d&apos;accès ?
- <url name="url">
- http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
- </url>
- <usetemplate ignoretext="Je ne peux pas réclamer cette région car je n&apos;ai pas accès à cette catégorie de contenu" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d&apos;aide"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- Votre catégorie d&apos;accès ne vous autorise pas à réclamer cette région.
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- Votre catégorie d&apos;accès ne vous permet pas de réclamer cette région.
-
-En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d&apos;accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition &gt; Préférences... &gt; Général.
- <usetemplate ignoretext="La catégorie de contenu que j&apos;ai choisie m&apos;empêche de réclamer un terrain" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- Votre catégorie d&apos;accès ne vous permet pas d&apos;acheter cette région. Cela vient peut-être du fait qu&apos;il manquait des informations pour valider votre âge.
-
-Vérifiez que vous avez la toute dernière version du client et consultez les pages d&apos;aide pour savoir comment accéder aux zones ayant ce niveau d&apos;accès.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- Votre catégorie d&apos;accès ne vous permet pas d&apos;acheter cette région.
-
-Souhaitez-vous en savoir plus sur les différentes catégories d&apos;accès ?
- <url name="url">
- http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
- </url>
- <usetemplate ignoretext="Je ne peux pas acheter ce terrain car je n&apos;ai pas accès à cette catégorie de contenu" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d&apos;aide"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- Votre catégorie d&apos;accès ne vous permet pas d&apos;acheter cette région.
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- Votre catégorie d&apos;accès ne vous autorise pas à acheter cette région.
-
-En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d&apos;accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition &gt; Préférences... &gt; Général.
- <usetemplate ignoretext="La catégorie de contenu que j&apos;ai choisie m&apos;empêche d&apos;acheter un terrain" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- &quot;Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer.&quot;
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- Problème lors de l&apos;importation du règlement du domaine.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- Problèmes lors de l&apos;ajout d&apos;un nouveau gérant de domaine. Il est possible qu&apos;au moins un des domaines ait une liste de gérants complète.
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- Problème lors de l&apos;ajout à la liste de ce domaine. Il est possible qu&apos;au moins un des domaines ait une liste complète.
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- Impossible de charger les données de la note actuellement.
- </notification>
- <notification name="NotAllowedToViewNotecard">
- Permissions pour afficher la note insuffisantes.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- Les références de la note ne se trouvent pas dans la base de données.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- Rappel : les frais pour passer des petites annonces ne sont pas remboursables.
-
-Publier cette petite annonce maintenant pour [AMOUNT] L$ ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- Cette petite annonce contient-elle du contenu Mature ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="SetGroupMature">
- Ce groupe contient-il du contenu Mature ?
- <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification label="Confirmer le redémarrage" name="ConfirmRestart">
- Souhaitez-vous vraiment redémarrer cette région dans 2 minutes ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification label="Envoyer un message à la région" name="MessageRegion">
- Saisissez une message qui sera envoyé à tous les résidents présents dans cette région.
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification label="Catégorie de la région modifiée" name="RegionMaturityChange">
- La catégorie d&apos;accès de cette région a été mise à jour.
-Ce changement n&apos;apparaîtra pas immédiatement sur la carte.
- </notification>
- <notification label="Versions de voix non compatibles" name="VoiceVersionMismatch">
- Cette version de [APP_NAME] n&apos;est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour [APP_NAME] pour que le chat vocal fonctionne correctement.
- </notification>
- <notification label="Impossible d&apos;acheter des objets" name="BuyObjectOneOwner">
- Impossible d&apos;acheter simultanément des objets de propriétaires différents.
-Veuillez ne sélectionner qu&apos;un seul objet.
- </notification>
- <notification label="Impossible d&apos;acheter des contenus" name="BuyContentsOneOnly">
- Impossible d&apos;acheter les contenus de plus d&apos;un objet à la fois.
-Veuillez ne sélectionner qu&apos;un seul objet.
- </notification>
- <notification label="Impossible d&apos;acheter des contenus" name="BuyContentsOneOwner">
- Impossible d&apos;acheter simultanément des objets de propriétaires différents.
-Veuillez ne sélectionner qu&apos;un seul objet.
- </notification>
- <notification name="BuyOriginal">
- Acheter l&apos;objet original pour [PRICE] L$ à [PRICE] ?
-Vous deviendrez le propriétaire de cet objet.
-Vous pourrez :
- Modifier : [MODIFYPERM]
- Copier : [COPYPERM]
- Revendre ou donner : [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- Acheter l&apos;objet original pour [PRICE] L$ ?
-Vous deviendrez le propriétaire de cet objet.
-Vous pourrez :
- Modifier : [MODIFYPERM]
- Copier : [COPYPERM]
- Revendre ou donner : [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- Acheter une copie pour [PRICE] L$ à [OWNER] ?
-L&apos;objet sera copié dans votre inventaire.
-Vous pourrez :
- Modifier : [MODIFYPERM]
- Copier : [COPYPERM]
- Revendre ou donner : [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- Acheter une copie pour [PRICE] L$ ?
-L&apos;objet sera copié dans votre inventaire.
-Vous pourrez :
- Modifier : [MODIFYPERM]
- Copier : [COPYPERM]
- Revendre ou donner : [RESELLPERM]
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- Acheter des contenus pour [PRICE] L$ à [OWNER] ?
-Ils seront copiés dans votre inventaire.
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- Acheter des contenus pour [PRICE] L$ ?
-Ils seront copiés dans votre inventaire.
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- Suite à cette transaction, vous allez :
-[ACTION]
-
-Êtes-vous certain de vouloir effectuer cette transaction ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- Suite à cette transaction, vous allez :
-[ACTION]
-
-Êtes-vous certain de vouloir effectuer cette transaction ?
-Veuillez saisir à nouveau votre mot de passe et cliquer sur OK.
- <form name="form">
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- Remarque :
-vous avez mis à jour l&apos;emplacement de ce favori mais les autres détails resteront inchangés.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- Vous avez sélectionné des objets non copiables.
-Ces objets seront déplacés dans votre inventaire et non pas copiés.
-
-Déplacer les objets de l&apos;inventaire ?
- <usetemplate ignoretext="M&apos;avertir avant que je ne déplace des objets pour lesquels la copie est interdite" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- Vous avez sélectionné des objets de l&apos;inventaire qui ne peuvent pas être copiés. Ces objets seront déplacés vers votre inventaire, et non pas copiés.
-L&apos;objet les contenant est scripté, déplacer ces objets peut causer des problèmes au niveau du script.
-
-Déplacer les objets de l&apos;inventaire ?
- <usetemplate ignoretext="M&apos;avertir avant que je ne déplace des objets pour lesquels la copie est interdite et qui pourraient casser des objets scriptés" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- Avertissement : l&apos;action du clic Payer l&apos;objet a été définie mais ne fonctionnera que si un script est ajouté avec l&apos;event money().
- <form name="form">
- <ignore name="ignore" text="Je définis l&apos;action du clic Payer l&apos;objet lorsque je construis un objet sans le script money()"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- Vous n&apos;êtes autorisé à copier aucun élément dans cet objet.
- </notification>
- <notification name="WebLaunchAccountHistory">
- Aller sur secondlife.com pour consulter l&apos;historique de votre compte ?
- <usetemplate ignoretext="Lancer mon navigateur pour consulter l&apos;historique de mon compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
- </notification>
- <notification name="ConfirmQuit">
- Êtes-vous certain de vouloir quitter ?
- <usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- Utilisez cet outil pour signaler des infractions aux Conditions d&apos;utilisation et aux Règles de la communauté. Voir :
-
-http://secondlife.com/corporate/tos.php
-http://secondlife.com/corporate/cs.php
-
-Lorsqu&apos;elles sont signalées, toutes les infractions aux Conditions d&apos;utilisation et aux Règles de la communauté font l&apos;objet d&apos;une enquête et sont résolues. Pour accéder aux détails de la résolution d&apos;un incident, allez sur :
-
-http://secondlife.com/support/incidentreport.php
- </notification>
- <notification name="HelpReportAbuseEmailEO">
- Important : ce rapport ira au propriétaire de la région dans laquelle vous êtes et non à Linden Lab.
-
-Pour aider les résidents et les visiteurs, le propriétaire de la région dans laquelle vous êtes a choisi de recevoir et de s&apos;occuper de tous les rapports envoyés à partir de cette région. Linden Lab n&apos;enquêtera pas sur les rapports que vous envoyez à partir de cet endroit.
-
-Le propriétaire de la région traitera les rapports en fonction des règles de cette région, comme indiqué dans le réglement du domaine.
-(Les réglements sont visibles à partir du menu Monde &gt; À propos du terrain.)
-
-La résolution de ce rapport ne s&apos;applique qu&apos;à cette région ; L&apos;accès aux autres endroits de [SECOND_LIFE] ne sera pas affecté par les résultats de cette enquête. Seul Linden Lab peut interdire l&apos;accès à l&apos;ensemble de [SECOND_LIFE].
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- Veuillez choisir une catégorie pour ce rapport d&apos;infraction.
-Le choix d&apos;une catégorie nous permet de traiter les rapports d&apos;infraction plus rapidement.
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- Veuillez saisir le nom du contrevenant.
-Lorsque nous avons le nom du contrevenant, nous sommes en mesure de traiter les rapports plus rapidement.
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- Veuillez indiquer l&apos;endroit où l&apos;infraction a eu lieu.
-Les informations précises et exactes nous permettent de traiter les rapports plus rapidement.
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- Veuillez saisir un récapitulatif de l&apos;infraction.
-Les récapitulatifs précis nous permettent de traiter les rapports plus rapidement.
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- Veuillez saisir une description détaillée de l&apos;infraction.
-Soyez aussi précis que possible et essayez de fournir des noms ainsi que des détails sur l&apos;incident que vous signalez.
-Les descriptions précises nous permettent de traiter les rapports plus rapidement.
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- Cher résident,
-
-Il semble que vous souhaitiez reporter une infraction à des droits de propriété intellectuelle. Pour signaler correctement cette infraction :
-
-(1) Remplissez un rapport d&apos;infraction. Vous pouvez soumettre un rapport d&apos;infraction si vous pensez qu&apos;un résident exploite le système de droits de [SECOND_LIFE], par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l&apos;encontre du résident non respectueux des Conditions d&apos;utilisation ou des règles de la communauté. Sachez toutefois que l&apos;équipe chargée des infractions ne supprimera pas de contenu à l&apos;intérieur de [SECOND_LIFE].
-
-(2) Demandez à ce que du contenu à l&apos;intérieur de [SECOND_LIFE] soit supprimé. Pour demander à ce que du contenu soit supprimé de [SECOND_LIFE], vous devez soumettre un rapport d&apos;infraction valide, tel que fourni dans notre Règlement contre les violations des droit d&apos;auteurs (DMCA), à http://secondlife.com/corporate/dmca.php.
-
-Si vous souhaitez toujours reporter cette infraction, veuillez fermer cette fenêtre et soumettre votre rapport. Vous devrez peut-être sélectionner la catégorie CopyBot ou exploitation abusive des droits.
-
-Merci,
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- Les composantes requises suivantes ne se trouvent pas dans [FLOATER]:
-[COMPONENTS]
- </notification>
- <notification label="Remplacer la pièce-jointe existante" name="ReplaceAttachment">
- Vous avez déjà un objet sur cette partie du corps.
-Voulez-vous le remplacer par l&apos;objet sélectionné ?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Remplacer une pièce-jointe existante par l&apos;objet sélectionné"/>
- <button ignore="Remplacer automatiquement" name="Yes" text="OK"/>
- <button ignore="Ne jamais remplacer" name="No" text="Annuler"/>
- </form>
- </notification>
- <notification label="Réponse si occupé(e)" name="BusyModePay">
- Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement.
-
-Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ?
- <form name="form">
- <ignore name="ignore" save_option="true" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Occupé"/>
- <button ignore="Toujours quitter le mode occupé" name="Yes" text="OK"/>
- <button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/>
- </form>
- </notification>
- <notification name="ConfirmEmptyTrash">
- Êtes-vous certain de vouloir supprimer le contenu de votre corbeille de manière permanente ?
- <usetemplate ignoretext="Confimer avant de vider la corbeille" name="okcancelignore" notext="Annuler" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- Êtes-vous certain de vouloir supprimer l&apos;historique de vos visites et recherches ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
- </notification>
- <notification name="ConfirmClearCookies">
- Êtes-vous certain de vouloir supprimer vos cookies ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- Êtes-vous certain de vouloir supprimer la liste des URL enregistrées ?
- <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- Êtes-vous certain de vouloir supprimer le contenu de votre dossier Objets trouvés de manière permanente ?
- <usetemplate ignoretext="Confimer avant de vider le dossier Objets trouvés" name="okcancelignore" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="CopySLURL">
- La SLurl suivante a été copiée dans votre presse-papier :
- [SLURL]
-
-Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apos;accéder facilement à cet endroit ou bien collez-la dans la barre d&apos;adresse de votre navigateur.
- <form name="form">
- <ignore name="ignore" text="La SLurl est copiée dans mon presse-papier"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- Voulez-vous écraser l&apos;option précédemment enregistrée ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- Voulez-vous supprimer [SKY] ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="WLNoEditDefault">
- Vous ne pouvez pas éditer ou supprimer un préréglage par défaut.
- </notification>
- <notification name="WLMissingSky">
- Une dossier semble manquer au Cycle du jour : [SKY].
- </notification>
- <notification name="PPSaveEffectAlert">
- Certains effets post-traitement existent. Voulez-vous quand même écraser ce fichier ?
- <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="NewSkyPreset">
- Nommez le nouveau ciel.
- <form name="form">
- <input name="message">
- Nouveau préréglage
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- Ce préréglage existe déjà !
- </notification>
- <notification name="NewWaterPreset">
- Nommez ce nouveau préréglage d&apos;eau.
- <form name="form">
- <input name="message">
- Nouveau préréglage
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- Ce préréglage existe déjà !
- </notification>
- <notification name="WaterNoEditDefault">
- Vous ne pouvez pas éditer ou supprimer un préréglage par défaut.
- </notification>
- <notification name="ChatterBoxSessionStartError">
- Impossible de démarrer une nouvelle session de chat avec [RECIPIENT].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- Vous devez terminer votre session de chat avec [NAME].
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- Vous ne pouvez pas acheter un objet s&apos;il fait partie d&apos;une pièce-jointe.
- </notification>
- <notification label="À propos des requêtes pour les autorisations de débit" name="DebitPermissionDetails">
- Accepter cette requête donne au script l&apos;autorisation de prélever des dollars Linden (L$) sur votre compte de manière continue. Pour révoquer cette autorisation, le propriétaire de l&apos;objet doit supprimer l&apos;objet ou bien réinitialiser les scripts dans l&apos;objet.
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- Voulez-vous automatiquement porter l&apos;habit que vous allez créer ?
- <usetemplate ignoretext="Porter automatiquement tout en modifiant mon apparence" name="okcancelignore" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="NotAgeVerified">
- Pour pouvoir pénétrer dans cette zone, vous devez avoir procédé à la vérification de votre âge. Souhaitez-vous aller sur [SECOND_LIFE] et procéder à la vérification de votre âge ?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=fr
- </url>
- <usetemplate ignoretext="Je n&apos;ai pas procédé à la vérification de mon âge" name="okcancelignore" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- Pour pouvoir pénétrer dans cette zone, vous devez avoir enregistré vos informations de paiement. Souhaitez-vous aller sur [SECOND_LIFE] et enregistrer vos informations de paiement ?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=fr
- </url>
- <usetemplate ignoretext="Mes informations de paiement ne sont pas enregistrées" name="okcancelignore" notext="Non" yestext="Oui"/>
- </notification>
- <notification name="MissingString">
- The string [STRING_NAME] is missing from strings.xml
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- Annulé
- </notification>
- <notification name="CancelledSit">
- Action annulée
- </notification>
- <notification name="CancelledAttach">
- Attachement annulé
- </notification>
- <notification name="ReplacedMissingWearable">
- Habits et parties du corps manquants remplacés par les éléments par défaut.
- </notification>
- <notification name="GroupNotice">
- Sujet : [SUBJECT], Message : [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [FIRST] [LAST] est connecté(e)
- </notification>
- <notification name="FriendOffline">
- [FIRST] [LAST] est déconnecté(e)
- </notification>
- <notification name="AddSelfFriend">
- Même si vous êtes extrêmement sympathique, vous ne pouvez pas devenir ami avec vous-même.
- </notification>
- <notification name="UploadingAuctionSnapshot">
- Importation de photos SL et Web en cours...
-(prend environ 5 minutes.)
- </notification>
- <notification name="UploadPayment">
- Le chargement a coûté [AMOUNT] L$.
- </notification>
- <notification name="UploadWebSnapshotDone">
- Photo Web importée
- </notification>
- <notification name="UploadSnapshotDone">
- Photo SL importée
- </notification>
- <notification name="TerrainDownloaded">
- Fichier terrain.raw téléchargé
- </notification>
- <notification name="GestureMissing">
- Geste [NAME] absent de la base de données.
- </notification>
- <notification name="UnableToLoadGesture">
- Impossible de charger le geste [NAME].
-Merci de réessayer.
- </notification>
- <notification name="LandmarkMissing">
- Repère absent de la base de données.
- </notification>
- <notification name="UnableToLoadLandmark">
- Impossible de charger le repère. Merci de réessayer.
- </notification>
- <notification name="CapsKeyOn">
- La touche Verr.maj est activée.
-Cela risque d&apos;impacter votre mot de passe.
- </notification>
- <notification name="NotecardMissing">
- Note absente de la base de données.
- </notification>
- <notification name="NotecardNoPermissions">
- Vous n&apos;avez pas le droit de consulter cette note.
- </notification>
- <notification name="RezItemNoPermissions">
- Permissions insuffisantes pour rezzer l&apos;objet.
- </notification>
- <notification name="UnableToLoadNotecard">
- Impossible de lire les données de la note actuellement.
- </notification>
- <notification name="ScriptMissing">
- Script absent de la base de données.
- </notification>
- <notification name="ScriptNoPermissions">
- Permissions insuffisantes pour voir le script.
- </notification>
- <notification name="UnableToLoadScript">
- Impossible de charger le script. Merci de réessayer.
- </notification>
- <notification name="IncompleteInventory">
- Tous les éléments que vous souhaitez transférer ne sont pas encore disponibles sur le serveur.
-Merci d&apos;essayer à nouveau dans une minute.
- </notification>
- <notification name="CannotModifyProtectedCategories">
- Vous ne pouvez pas modifier de catégories protégées.
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- Vous ne pouvez pas supprimer de catégories protégées.
- </notification>
- <notification name="OfferedCard">
- Vous avez offert votre carte de visite à [FIRST] [LAST]
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- Achat impossible durant le chargement de l&apos;objet.
-Merci de réessayer.
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- Impossible de lier durant le chargement de l&apos;objet.
-Merci de réessayer.
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- Vous ne pouvez pas acheter simultanément des objets de propriétaires différents.
-Veuillez sélectionner un seul objet.
- </notification>
- <notification name="ObjectNotForSale">
- Cet objet n&apos;est pas à vendre.
- </notification>
- <notification name="EnteringGodMode">
- Activation du mode divin : niveau [LEVEL]
- </notification>
- <notification name="LeavingGodMode">
- Désactivation du mode divin : niveau [LEVEL]
- </notification>
- <notification name="CopyFailed">
- Vous n&apos;avez pas le droit de copier ceci.
- </notification>
- <notification name="InventoryAccepted">
- [NAME] a accepté votre envoi.
- </notification>
- <notification name="InventoryDeclined">
- [NAME] a refusé votre envoi.
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- Votre carte de visite a été acceptée.
- </notification>
- <notification name="CallingCardDeclined">
- Votre carte de visite a été refusée.
- </notification>
- <notification name="TeleportToLandmark">
- A présent que vous êtes sur le continent, vous pouvez voyager par téléportation (vers [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l&apos;écran puis sélectionnez le dossier Repères (Landmarks).
-Choisissez un repère, double-cliquez dessus et cliquez sur Téléporter.
- </notification>
- <notification name="TeleportToPerson">
- A présent que vous êtes sur le continent, vous pouvez contacter des résidents (tel [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l&apos;écran puis sélectionnez le dossier Cartes de visite (Calling Cards).
-Choisissez en une, double-cliquez dessus et cliquez sur Message Instantané.
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur.
-Veuillez sélectionner un terrain plus petit.
- </notification>
- <notification name="SearchWordBanned">
- Certains termes de votre recherche ont été exclus car ils ne correspondaient pas aux standards fixés dans les Règles communautaires.
- </notification>
- <notification name="NoContentToSearch">
- Veuillez sélectionner au moins un type de contenu à rechercher (PG, Mature ou Adulte)
- </notification>
- <notification name="GroupVote">
- [NAME] a proposé un vote pour :
-[MESSAGE]
- <form name="form">
- <button name="VoteNow" text="Voter"/>
- <button name="Later" text="Plus tard"/>
- </form>
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- Avis d&apos;événement :
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Teleport" text="Téléporter"/>
- <button name="Description" text="Description"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- Tous les objets de cette parcelle qui seront transférés à l&apos;acheteur sont maintenant mis en surbrillance.
-
-* Les arbres et la pelouse qui seront transférés ne sont pas mis en surbrillance.
- <form name="form">
- <button name="Done" text="Transfert effectué"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- Gestes désactivés ayant le même mot-clé :
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Le logiciel Apple QuickTime ne semble pas installé sur votre système.
-Pour voir les vidéos sur les terrains qui le permettent, allez sur le site de QuickTime (http://www.apple.com/fr/quicktime/download) et installez le lecteur QuickTime.
- </notification>
- <notification name="NoPlugin">
- Aucun Media Plugin n&apos;a été trouvé pour prendre en charge &quot;[MIME_TYPE]&quot;. Les médias de ce type ne sont pas disponibles.
- </notification>
- <notification name="MediaPluginFailed">
- Le Media Plugin suivant a échoué :
- [PLUGIN]
-
-Si le problème persiste, veuillez réinstaller le plugin ou contacter le vendeur.
- <form name="form">
- <ignore name="ignore" text="L&apos;éxécution d&apos;un Media Plugin a échoué"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- Les objets que vous possédez sur la parcelle de terrain sélectionnée ont été renvoyés dans votre inventaire.
- </notification>
- <notification name="OtherObjectsReturned">
- Les objets que vous possédez sur la parcelle de terrain appartenant à [FIRST] [LAST] ont été renvoyés dans votre inventaire.
- </notification>
- <notification name="OtherObjectsReturned2">
- Les objets sur la parcelle appartenant à « [NAME] » ont étés renvoyés à leur propriétaire.
- </notification>
- <notification name="GroupObjectsReturned">
- Les objets sélectionnés sur la parcelle de terrain partagée avec le groupe [GROUPNAME] ont été renvoyés dans l&apos;inventaire de leur propriétaire.
-Les objets donnés transférables ont étés renvoyés à leur propriétaire.
-Les objets non transférables donnés au groupe ont étés supprimés.
- </notification>
- <notification name="UnOwnedObjectsReturned">
- Les objets sélectionnés sur la parcelle et qui ne sont pas à vous ont été rendus à leurs propriétaires.
- </notification>
- <notification name="NotSafe">
- Les dégâts sont autorisés sur ce terrain.
-Vous pouvez être blessé ici. Si vous décédez, vous serez téléporté à votre domicile.
- </notification>
- <notification name="NoFly">
- Le vol est interdit dans cette zone.
-Vous ne pouvez pas voler ici.
- </notification>
- <notification name="PushRestricted">
- Les bousculades sont interdites dans cette zone.
-Vous ne pouvez pas pousser les autres à moins que vous soyez propriétaire de ce terrain.
- </notification>
- <notification name="NoVoice">
- Le chat vocal est interdit dans cette zone. Vous n&apos;entendrez personne parler.
- </notification>
- <notification name="NoBuild">
- La construction est interdite dans cette zone. Vous ne pouvez pas construite ou rezzer d&apos;objets ici.
- </notification>
- <notification name="ScriptsStopped">
- Un administrateur a temporairement stoppé les scripts dans cette région.
- </notification>
- <notification name="ScriptsNotRunning">
- Aucun script ne fonctionne dans cette région.
- </notification>
- <notification name="NoOutsideScripts">
- Les scripts externes sont désactivés sur ce terrain.
-
-Aucun script ne marche ici à part ceux du propriétaire du terrain.
- </notification>
- <notification name="ClaimPublicLand">
- Vous ne pouvez réclamer qu&apos;un terrain public dans la région où vous vous trouvez actuellement.
- </notification>
- <notification name="RegionTPAccessBlocked">
- Votre catégorie d&apos;accès ne vous autorise pas à pénétrer dans cette région. Vous devez sans doute procéder à la vérification de votre âge ou installer une version plus récente du client.
-
-Pour savoir comment accéder aux zones ayant un tel niveau d&apos;accès, veuillez consulter les pages d&apos;aide.
- </notification>
- <notification name="URBannedFromRegion">
- Vous avez été banni de cette région.
- </notification>
- <notification name="NoTeenGridAccess">
- Votre compte ne peut pas se connecter à cette région du Teen grid.
- </notification>
- <notification name="ImproperPaymentStatus">
- Vous n&apos;avez pas le statut de paiement approprié pour pénétrer dans cette région.
- </notification>
- <notification name="MustGetAgeParcel">
- Pour pouvoir pénétrer sur cette parcelle, vous devez avoir procédé à la vérification de votre âge.
- </notification>
- <notification name="NoDestRegion">
- Région de destination introuvable.
- </notification>
- <notification name="NotAllowedInDest">
- Vous n&apos;êtes pas autorisé dans cette région.
- </notification>
- <notification name="RegionParcelBan">
- Impossible de traverser une parcelle bannie. Veuillez trouver une autre solution.
- </notification>
- <notification name="TelehubRedirect">
- Vous avez été redirigé vers un téléhub.
- </notification>
- <notification name="CouldntTPCloser">
- Il n&apos;a pas été possible de vous téléporter vers une destination plus proche.
- </notification>
- <notification name="TPCancelled">
- Téléportation annulée.
- </notification>
- <notification name="FullRegionTryAgain">
- La région dans laquelle vous essayez de pénétrer est pleine actuellement.
-Veuillez réessayer dans quelques minutes.
- </notification>
- <notification name="GeneralFailure">
- Panne générale.
- </notification>
- <notification name="RoutedWrongRegion">
- Dirigé vers la mauvaise région. Merci de réessayer.
- </notification>
- <notification name="NoValidAgentID">
- ID agent non valide.
- </notification>
- <notification name="NoValidSession">
- ID de session non valide.
- </notification>
- <notification name="NoValidCircuit">
- Aucun code de circuit valide.
- </notification>
- <notification name="NoValidTimestamp">
- Timestamp non valide.
- </notification>
- <notification name="NoPendingConnection">
- Impossible de créer la connexion en attente.
- </notification>
- <notification name="InternalUsherError">
- Erreur interne lors de la tentative de connexion.
- </notification>
- <notification name="NoGoodTPDestination">
- Impossible de trouver un lieu de téléportation valide dans cette région.
- </notification>
- <notification name="InternalErrorRegionResolver">
- Une erreur interne est survenue lors de la résolution des coodonnées de la région.
- </notification>
- <notification name="NoValidLanding">
- Impossible de trouver un point d&apos;atterrissage valide.
- </notification>
- <notification name="NoValidParcel">
- Aucune parcelle valide n&apos;a été trouvée.
- </notification>
- <notification name="ObjectGiveItem">
- Un objet appelé [OBJECTFROMNAME] appartenant à [FIRST] [LAST] vous a donné : [OBJECTTYPE] appelé(e) [OBJECTNAME].
- <form name="form">
- <button name="Keep" text="Garder"/>
- <button name="Discard" text="Jeter"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="ObjectGiveItemUnknownUser">
- L&apos;objet [OBJECTFROMNAME] appartenant à un utilisateur inconnu vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME].
- <form name="form">
- <button name="Keep" text="Garder"/>
- <button name="Discard" text="Jeter"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME] vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME].
- <form name="form">
- <button name="Keep" text="Garder"/>
- <button name="Discard" text="Jeter"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="Rejoindre"/>
- <button name="Decline" text="Refuser"/>
- <button name="Info" text="Infos"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME] vous propose de le/la rejoindre par téléportation :
-
-[MESSAGE]
- <form name="form">
- <button name="Teleport" text="Téléporter"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="Plus tard"/>
- <button name="GoNow..." text="Y aller maintenant..."/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME] vous demande de devenir son ami(e).
-
-[MESSAGE]
-
-(Par défaut, vous pourrez voir lorsque vous êtes tous deux connectés.)
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- </form>
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME] vous demande de devenir son ami.
-
-(Par défaut, vous pourrez voir quand vous êtes tous deux connectés)
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME] a accepté votre amitié.
- </notification>
- <notification name="FriendshipDeclined">
- [NAME] a refusé votre amitié.
- </notification>
- <notification name="OfferCallingCard">
- [FIRST] [LAST] vous offre sa carte de visite.
-Cela ajoute un marque-page dans votre inventaire, ce qui vous permet d&apos;envoyer rapidement un IM à ce résident.
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- La région va redémarrer dans [MINUTES] minutes.
-Si vous restez dans cette région, vous serez déconnecté(e).
- </notification>
- <notification name="RegionRestartSeconds">
- La région va redémarrer dans [SECONDS] secondes.
-Si vous restez dans cette région, vous serez déconnecté(e).
- </notification>
- <notification name="LoadWebPage">
- Charger cette page web [URL] ?
-
-[MESSAGE]
-
-Venant de l&apos;objet : [OBJECTNAME], appartenant à : [NAME]?
- <form name="form">
- <button name="Gotopage" text="Charger"/>
- <button name="Cancel" text="Annuler"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- La recherche du [TYPE] dans la base de données a échoué.
- </notification>
- <notification name="FailedToFindWearable">
- La recherche du [TYPE] nommé(e) [DESC] dans la base de données a échoué.
- </notification>
- <notification name="InvalidWearable">
- L&apos;objet que vous essayez de porter utilise une fonctionnalité que le client ne peut lire. Pour porter cet objet, veuillez télécharger une mise à jour du client.
- </notification>
- <notification name="ScriptQuestion">
- &apos;[OBJECTNAME]&apos;, un objet appartenant à &apos;[NAME]&apos;, aimerait :
-
-[QUESTIONS]
-Acceptez-vous ?
- <form name="form">
- <button name="Yes" text="Oui"/>
- <button name="No" text="Non"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- Un objet appelé « [OBJECTNAME] », appartenant à « [NAME] », aimerait :
-
-[QUESTIONS]
-Si vous n&apos;avez pas confiance en cet objet ni en son créateur, vous devriez refuser cette requête.
-
-Accepter cette requête ?
- <form name="form">
- <button name="Grant" text="Accepter"/>
- <button name="Deny" text="Refuser"/>
- <button name="Details" text="Détails..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- &apos;[TITLE]&apos; de [FIRST] [LAST]
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorer"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- &apos;[TITLE]&apos; de [GROUPNAME]
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="Ignorer"/>
- </form>
- </notification>
- <notification name="FirstBalanceIncrease">
- Vous venez de recevoir [AMOUNT] L$.
-Votre solde en L$ est affiché en haut à droite.
- </notification>
- <notification name="FirstBalanceDecrease">
- Vous venez de payer [AMOUNT] L$.
-Votre solde en L$ est affiché en haut à droite.
- </notification>
- <notification name="FirstSit">
- Vous êtes assis(e).
-Utilisez les touches de direction (ou AWSD) pour regarder autour de vous.
-Pour vous lever, cliquez sur le bouton Me lever.
- </notification>
- <notification name="FirstMap">
- Cliquez et faîtes glisser pour faire défiler la carte.
-Double-cliquez pour vous téléporter.
-Utilisez les contrôles à droite pour trouver des choses et afficher différents arrière-plans.
- </notification>
- <notification name="FirstBuild">
- Vous avez ouvert les outils de construction. Tous les objets autour de vous ont été créés avec ces outils.
- </notification>
- <notification name="FirstTeleport">
- Vous ne pouvez vous téléporter que dans certaines zones de cette région. La flèche pointe vers votre destination. Cliquez sur la flèche pour la faire disparaître.
- </notification>
- <notification name="FirstOverrideKeys">
- Vos mouvements sont maintenant pris en charge par un objet.
-Essayez les flèches de votre clavier ou AWSD pour voir à quoi elles servent.
-Certains objets (comme les armes) nécessitent l&apos;activation du mode Vue subjective pour être utilisés.
-Pour cela, appuyez sur la touche M.
- </notification>
- <notification name="FirstAppearance">
- Vous êtes en train d&apos;éditer votre apparence.
-Utilisez les touches de direction pour regarder autour de vous.
-Une fois terminé, cliquer sur Tout enregistrer.
- </notification>
- <notification name="FirstInventory">
- Il s&apos;agit de votre inventaire qui contient vos possessions.
-
-* Pour porter quelque chose, faites glisser l&apos;objet sur vous-même.
-* Pour rezzer un objet dans le monde, faites-le glisser sur le sol.
-* Pour lire une note, double-cliquez dessus.
- </notification>
- <notification name="FirstSandbox">
- Cette région est un bac à sable et est utilisée par les résidents pour apprendre à construire.
-
-Les objets que vous construisez ici seront supprimés après votre départ. N&apos;oubliez donc pas de cliquer droit et de choisir Prendre pour sauvegarder votre création dans votre inventaire.
- </notification>
- <notification name="FirstFlexible">
- Cet objet est flexible. Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent rester fantômes.
- </notification>
- <notification name="FirstDebugMenus">
- Vous avez ouvert le menu Avancé.
-
-Pour activer/désactiver ce menu,
- Windows : Ctrl-Alt-D
- Mac : ⌘-Opt-D
- </notification>
- <notification name="FirstSculptedPrim">
- Vous êtes en train d&apos;éditer un sculptie. Pour spécifier la forme d&apos;un sculptie, vous devez utiliser une texture spécifique.
- </notification>
- <notification name="MaxListSelectMessage">
- Vous ne pouvez sélectionner que [MAX_SELECT] objets maximum dans cette liste.
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME] vous invite à un chat vocal.
-Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer.
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [FIRST] [LAST] a reçu un message instantané et n&apos;est donc plus ignoré.
- </notification>
- <notification name="AutoUnmuteByMoney">
- [FIRST] [LAST] a reçu de l&apos;argent et n&apos;est donc plus ignoré.
- </notification>
- <notification name="AutoUnmuteByInventory">
- [FIRST] [LAST] a reçu un inventaire et n&apos;est donc plus ignoré.
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME] a rejoint un chat vocal avec le groupe [GROUP].
-Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer.
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME] a rejoint un chat vocal avec conférence.
-Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer.
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME] vous invite à un chat conférence.
-Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer.
- <form name="form">
- <button name="Accept" text="Accepter"/>
- <button name="Decline" text="Refuser"/>
- <button name="Mute" text="Ignorer"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- L&apos;appel auquel vous essayez de participer, [VOICE_CHANNEL_NAME], a atteint le nombre maximum de participants. Veuillez réessayer ultérieurement.
- </notification>
- <notification name="ProximalVoiceChannelFull">
- Nous sommes désolés. Le nombre maximum de conversations vocales a été atteint dans cette zone. Veuillez trouver un autre endroit pour discuter.
- </notification>
- <notification name="VoiceChannelDisconnected">
- Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté au chat vocal spatial.
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME] a mis fin à l&apos;appel. Vous allez maintenant être reconnecté au chat vocal spatial.
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME] a refusé votre appel. Vous allez maintenant être reconnecté au chat vocal spatial.
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME] ne peut pas prendre votre appel. Vous allez maintenant être reconnecté au chat vocal spatial.
- </notification>
- <notification name="VoiceChannelJoinFailed">
- Echec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté au chat vocal spatial.
- </notification>
- <notification name="VoiceLoginRetry">
- Nous sommes en train de créer un canal vocal pour vous. Veuillez patienter quelques instants.
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- Seuls les membres d&apos;un certain groupe peuvent visiter cette zone.
- </notification>
- <notification name="Cannot enter parcel: banned">
- Vous ne pouvez pas pénétrer sur ce terrain car l&apos;accès vous y est interdit.
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- Vous ne pouvez pas pénétrer sur ce terrain car vous n&apos;avez pas les droits d&apos;accès requis.
- </notification>
- <notification name="VoiceNotAllowed">
- Vous n&apos;êtes pas autorisé à vous connecter au chat vocal pour [VOICE_CHANNEL_NAME].
- </notification>
- <notification name="VoiceCallGenericError">
- Une erreur est survenue pendant la connexion au chat vocal pour [VOICE_CHANNEL_NAME]. Veuillez réessayer ultérieurement.
- </notification>
- <notification name="ServerVersionChanged">
- La région dans laquelle vous avez pénétré utilise une version de serveur différente, ce qui peut avoir un impact sur votre performance. Cliquez pour voir les notes de version.
- </notification>
- <notification name="UnsupportedCommandSLURL">
- La SLurl que vous avez saisie n&apos;est pas prise en charge.
- </notification>
- <notification name="IMToast">
- <form name="form">
- <button name="respondbutton" text="Répondre"/>
- </form>
- </notification>
- <notification name="AttachmentSaved">
- L&apos;élément joint a été sauvegardé.
- </notification>
- <notification name="UnableToFindHelpTopic">
- Impossible de trouver l&apos;aide.
- </notification>
- <global name="UnsupportedCPU">
- - Votre processeur ne remplit pas les conditions minimum requises.
- </global>
- <global name="UnsupportedGLRequirements">
- Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d&apos;exploitation.
-
-Si vous avez toujours des problèmes, veuillez consulter la page [SUPPORT_SITE].
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - Votre carte graphique ne remplit pas les conditions minimum requises.
- </global>
- <global name="UnsupportedRAM">
- - Votre mémoire système ne remplit pas les conditions minimum requises.
- </global>
- <global name="PermYes">
- Oui
- </global>
- <global name="PermNo">
- Non
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- Si vous possédez un terrain, vous pouvez le définir comme domicile.
-Sinon, consultez la carte et trouvez les « infohubs ».
- </global>
-</notifications>
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+ <global name="skipnexttime">
+ Ne plus afficher
+ </global>
+ <global name="alwayschoose">
+ Toujours choisir cette option
+ </global>
+ <global name="implicitclosebutton">
+ Fermer
+ </global>
+ <template name="okbutton">
+ <form>
+ <button name="OK" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore"/>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="Cancel" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore"/>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ </form>
+ </template>
+ <notification functor="GenericAcknowledge" label="Message d&apos;alerte inconnu" name="MissingAlert">
+ Votre version de [APP_NAME] ne peut afficher ce message d&apos;erreur. Veuillez vous assurer que vous avez bien la toute dernière version du client.
+
+Détails de l&apos;erreur : L&apos;alerte, appelée &apos;[_NAME]&apos; est introuvable dans notifications.xml.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="FloaterNotFound">
+ Erreur floater : impossible de trouver les contrôles suivants :
+
+[CONTROLS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TutorialNotFound">
+ Aucun didacticiel n&apos;est disponible actuellement.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GenericAlert">
+ [MESSAGE]
+ </notification>
+ <notification name="GenericAlertYesCancel">
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
+ </notification>
+ <notification name="BadInstallation">
+ Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version su client. http://get.secondlife.com
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LoginFailedNoNetwork">
+ Connexion à [SECOND_LIFE_GRID] impossible.
+&apos;[DIAGNOSTIC]&apos;
+Veuillez vérifier votre connexion Internet.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MessageTemplateNotFound">
+ Le modèle de message [PATH] est introuvable.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="WearableSave">
+ Enregistrer les changements dans la partie du corps/les habits actuels ?
+ <usetemplate canceltext="Cancel" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
+ </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>
+ <notification name="CompileQueueSaveBytecode">
+ Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON]. Veuillez réessayer ultérieurement.
+ </notification>
+ <notification name="WriteAnimationFail">
+ Une erreur est survenue lors de l&apos;écriture des données d&apos;animation. Veuillez réessayer ultérieurement.
+ </notification>
+ <notification name="UploadAuctionSnapshotFail">
+ Un problème est survenu lors du chargement du script compilé, suite au problème suivant : [REASON]
+ </notification>
+ <notification name="UnableToViewContentsMoreThanOne">
+ Impossible d&apos;afficher les contenus de plus d&apos;un objet à la fois.
+Veuillez ne sélectionner qu&apos;un seul objet.
+ </notification>
+ <notification name="SaveClothingBodyChanges">
+ Enregistrer tous les changements dans les habits/parties du corps ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Tout enregistrer"/>
+ </notification>
+ <notification name="GrantModifyRights">
+ Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer, supprimer ou prendre n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
+Souhaitez-vous accorder des droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="GrantModifyRightsMultiple">
+ Lorsque vous accordez des droits d&apos;édition à un autre résident, vous lui permettez de changer n&apos;importe lequel de vos objets dans le Monde. Réfléchissez bien avant d&apos;accorder ces droits.
+Souhaitez-vous accorder des droits d&apos;édition aux résidents selectionnés ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="RevokeModifyRights">
+ Souhaitez-vous retirer les droits d&apos;édition à [FIRST_NAME] [LAST_NAME] ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="RevokeModifyRightsMultiple">
+ Souhaitez-vous retirer les droits d&apos;édition aux résidents selectionnés ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="UnableToCreateGroup">
+ Impossible de créer le groupe.
+[MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PanelGroupApply">
+ [NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ignorer les modifications" yestext="Enregistrer les modifications"/>
+ </notification>
+ <notification name="MustSpecifyGroupNoticeSubject">
+ Pour envoyer une notice au groupe, vous devez indiquer un sujet.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AddGroupOwnerWarning">
+ Vous êtes sur le point d&apos;ajouter des membres du groupe dans le rôle de [ROLE_NAME].
+Les membres ne peuvent pas être destitués de ce rôle.
+Ils doivent donner eux-mêmes leur démission.
+Êtes-vous certain de vouloir continuer ?
+ <usetemplate ignoretext="Confirmer avant d&apos;ajouter un nouveau propriétaire" name="okcancelignore" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="AssignDangerousActionWarning">
+ Vous êtes sur le point d&apos;ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ».
+ *Avertissement*
+ Tout membre disposant de ce pouvoir peut s&apos;affecter lui-même, ainsi que tout autre membre, à des rôles disposant de pouvoirs plus importants, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de bien comprendre ce que vous faites avant d&apos;attribuer ce pouvoir.
+
+Ajouter ce pouvoir à « [ROLE_NAME] » ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="AssignDangerousAbilityWarning">
+ Vous êtes sur le point d&apos;ajouter le pouvoir « [ACTION_NAME] » au rôle « [ROLE_NAME] ».
+
+ *Avertissement*
+ Tout membre dans un rôle avec ce pouvoir peut s&apos;attribuer à lui-même, ainsi qu&apos;à tout autre membre, Tous les pouvoirs, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire.
+
+Ajouter ce pouvoir à « [ROLE_NAME] » ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="JoinGroupCanAfford">
+ Rejoindre ce groupe coûte [COST] L$.
+Voulez-vous continuer ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Rejoindre"/>
+ </notification>
+ <notification name="JoinGroupCannotAfford">
+ Rejoindre ce groupe coûte [COST] L$.
+Vous n&apos;avez pas suffisamment de L$ pour rejoindre ce groupe.
+ </notification>
+ <notification name="CreateGroupCost">
+ La création de ce groupe coûte 100 L$.
+Les groupes doivent comporter plus d&apos;un membre, sinon ils sont supprimés.
+Veuillez inviter des membres d&apos;ici 48 heures.
+ <usetemplate canceltext="Annuler" name="okcancelbuttons" notext="Annuler" yestext="Créer un groupe pour 100 L$"/>
+ </notification>
+ <notification name="LandBuyPass">
+ Pour [COST] L$ vous pouvez pénétrer sur ce terrain ([PARCEL_NAME]) et y rester [TIME] heures. Acheter un pass ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="SalePriceRestriction">
+ Pour rendre l&apos;annonce disponible à tous, le prix de vente doit être supérieur à 0 L$.
+Si le prix de vente est de 0 L$, vous devez choisir un acheteur spécifique.
+ </notification>
+ <notification name="ConfirmLandSaleChange">
+ Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente.
+Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME].
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmLandSaleToAnyoneChange">
+ Attention : en cliquant sur Vendre à n&apos;importe qui, vous rendez votre terrain disponible à toute la communauté de [SECOND_LIFE], même aux personnes qui ne sont pas dans cette région.
+
+Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente.
+Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME].
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsDeededToGroup">
+ Êtes-vous certain de vouloir renvoyer tous les objets partagés par le groupe [NAME] sur cette parcelle dans l&apos;inventaire du propriétaire précédent ?
+
+*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés !
+
+Objets : [N]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedByUser">
+ Etes-vous certain de vouloir renvoyer tous les objets que [NAME] possède sur cette parcelle dans son inventaire ?
+
+Objets : [N]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedBySelf">
+ Êtes-vous certain de vouloir renvoyer tous les objets que vous possédez sur cette parcelle dans votre inventaire ?
+
+Objets : [N]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedBySelf">
+ Êtes-vous certain de vouloir renvoyer tous les objets que vous ne possédez pas sur cette parcelle dans l&apos;inventaire de leur propriétaire ?
+Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents.
+
+*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés !
+
+Objets : [N]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByUser">
+ Êtes-vous certain de vouloir renvoyer tous les objets que [NAME] ne possède pas sur cette parcelle dans l&apos;inventaire de leur propriétaire ?
+Les objets transférables cédés à un groupe seront renvoyés aux propriétaires précédents.
+
+*Avertissement* Tous les objets non transférables cédés au groupe seront supprimés !
+
+Objets : [N]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnAllTopObjects">
+ Êtes-vous certain de vouloir renvoyer tous les objets de la liste dans l&apos;inventaire de leur propriétaire ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="DisableAllTopObjects">
+ Êtes-vous certain de vouloir désactiver tous les objets dans cette région ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByGroup">
+ Renvoyer les objets de cette parcelle qui ne sont pas partagés avec le groupe [NAME] à leur propriétaire ?
+
+Objets : [N]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="UnableToDisableOutsideScripts">
+ Impossible de désactiver les scripts.
+Les dégâts sont autorisés dans toute la région.
+Pour que les armes fonctionnent, les scripts doivent être autorisés.
+ </notification>
+ <notification name="MustBeInParcel">
+ Pour définir le point d&apos;atterrissage, vous devez vous trouver à l&apos;intérieur de la parcelle.
+ </notification>
+ <notification name="PromptRecipientEmail">
+ Veuillez saisir une adresse e-mail valide pour le(s) destinataire(s).
+ </notification>
+ <notification name="PromptSelfEmail">
+ Veuillez saisir votre adresse e-mail.
+ </notification>
+ <notification name="PromptMissingSubjMsg">
+ Envoyer la photo avec le sujet ou le message par défaut ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ErrorProcessingSnapshot">
+ Erreur dans le traitement des données de la photo
+ </notification>
+ <notification name="ErrorEncodingSnapshot">
+ Erreur d&apos;encodage de la photo.
+ </notification>
+ <notification name="ErrorUploadingPostcard">
+ Une erreur est survenue lors du chargement du script compilé, suite au problème suivant : [REASON]
+ </notification>
+ <notification name="ErrorUploadingReportScreenshot">
+ Une erreur est survenue lors du chargement de la capture d&apos;écran destinée au rapport, suite au problème suivant : [REASON]
+ </notification>
+ <notification name="MustAgreeToLogIn">
+ Pour vous connecter à [SECOND_LIFE], vous devez accepter les Conditions d&apos;utilisation.
+ </notification>
+ <notification name="CouldNotPutOnOutfit">
+ Impossible de mettre cet ensemble.
+Ce dossier ne contient pas d&apos;habits, de parties du corps ni de pièces jointes.
+ </notification>
+ <notification name="CannotWearTrash">
+ Vous ne pouvez pas porter d&apos;habits ni de parties du corps se trouvant dans la corbeille.
+ </notification>
+ <notification name="CannotWearInfoNotComplete">
+ Vous ne pouvez pas porter cet article car il n&apos;a pas encore été chargé. Veuillez réessayer dans une minute.
+ </notification>
+ <notification name="MustHaveAccountToLogIn">
+ Oups! Vous avez oublié de fournir certaines informations.
+Vous devez saisir le nom et le prénom de votre avatar.
+
+Pour entrer dans [SECOND_LIFE], vous devez avoir un compte. Voulez-vous en créer un maintenant ?
+ <url name="url">
+ http://join.secondlife.com/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Réessayer" yestext="Créer un compte"/>
+ </notification>
+ <notification name="AddClassified">
+ Les petites annonces sont publiées à l&apos;onglet Petites annonces de la section Recherche pendant une semaine.
+Rédigez votre annonce, puis cliquez sur Publier pour l&apos;ajouter à la liste des annonces.
+Au moment de cliquer sur Publier, vous serez invité à payer des frais.
+Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dans les résultats de recherche de mots-clés.
+ <usetemplate ignoretext="Comment ajouter une nouvelle petite annonce" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="DeleteClassified">
+ Supprimer l&apos;annonce [NAME] ?
+Une fois payés, les frais ne sont pas remboursables.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ClassifiedSave">
+ Enregistrer les changements dans l&apos;annonce [NAME] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
+ </notification>
+ <notification name="DeleteAvatarPick">
+ Supprimer le favori [PICK] ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="PromptGoToEventsPage">
+ Aller à la page web de [SECOND_LIFE] réservée aux événements ?
+ <url name="url">
+ http://secondlife.com/events/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="SelectProposalToView">
+ Veuillez sélectionner une proposition.
+ </notification>
+ <notification name="SelectHistoryItemToView">
+ Veuillez sélectionner un historique.
+ </notification>
+ <notification name="ResetShowNextTimeDialogs">
+ Souhaitez-vous réactiver tous les pop-ups que vous aviez désactivés ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="SkipShowNextTimeDialogs">
+ Voulez-vous désactiver tous les pop-ups qui peuvent être évités ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="CacheWillClear">
+ Le cache sera vidé après le redémarrage de [APP_NAME].
+ </notification>
+ <notification name="CacheWillBeMoved">
+ Le cache sera déplacé après le redémarrage de [APP_NAME].
+Remarque : cela videra le cache.
+ </notification>
+ <notification name="ChangeConnectionPort">
+ Les paramètres du port prendront effet après le redémarrage de [APP_NAME].
+ </notification>
+ <notification name="ChangeSkin">
+ Le nouveau thème apparaîtra après le redémarrage de [APP_NAME].
+ </notification>
+ <notification name="GoToAuctionPage">
+ Aller à la page web de [SECOND_LIFE] pour voir le détail des enchères ou enchérir ?
+ <url name="url">
+ http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="SaveChanges">
+ Enregistrer les changements ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/>
+ </notification>
+ <notification name="GestureSaveFailedTooManySteps">
+ L&apos;enregistrement du geste a échoué.
+Il y a trop d&apos;étapes dans ce geste.
+Essayez d&apos;en supprimer quelques-unes.
+ </notification>
+ <notification name="GestureSaveFailedTryAgain">
+ L&apos;enregistrement du geste a échoué. Veuillez réessayer dans une minute.
+ </notification>
+ <notification name="GestureSaveFailedObjectNotFound">
+ Le geste n&apos;a pas pu être enregistré car l&apos;objet ou l&apos;inventaire de l&apos;objet associé n&apos;a pas été trouvé.
+L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
+ </notification>
+ <notification name="GestureSaveFailedReason">
+ Une erreur est survenue lors de l&apos;enregistrement du geste, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre geste ultérieurement.
+ </notification>
+ <notification name="SaveNotecardFailObjectNotFound">
+ La note n&apos;a pas pu être enregistrée car l&apos;objet ou l&apos;inventaire de l&apos;objet associé n&apos;a pas été trouvé.
+L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
+ </notification>
+ <notification name="SaveNotecardFailReason">
+ Une erreur est survenue lors de l&apos;enregistrement de la note, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre note ultérieurement.
+ </notification>
+ <notification name="ScriptCannotUndo">
+ Impossible d&apos;annuler tous les changements dans votre version du script.
+Souhaitez-vous charger la dernière version enregistrée sur le serveur ?
+(**Attention** Cette opération est irréversible.)
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="SaveScriptFailReason">
+ Une erreur est survenue lors de l&apos;enregistrement du script, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre script ultérieurement.
+ </notification>
+ <notification name="SaveScriptFailObjectNotFound">
+ Impossible d&apos;enregistrer le script car l&apos;objet qui le contient est introuvable.
+L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
+ </notification>
+ <notification name="SaveBytecodeFailReason">
+ Une erreur est survenue lors de l&apos;enregistrement du script compilé, suite au problème suivant : [REASON]. Essayez d&apos;enregistrer votre script ultérieurement.
+ </notification>
+ <notification name="StartRegionEmpty">
+ Vous n&apos;avez pas défini de région de départ.
+Veuillez saisir le nom de la région dans la case Lieu de départ, ou choisissez Dernier emplacement ou Domicile comme Lieu de départ.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CouldNotStartStopScript">
+ Impossible de lancer ou d&apos;arrêter le script car l&apos;objet qui le contient est introuvable.
+L&apos;objet est peut-être inaccessible ou a peut-être été supprimé.
+ </notification>
+ <notification name="CannotDownloadFile">
+ Impossible de télécharger le fichier
+ </notification>
+ <notification name="CannotWriteFile">
+ Impossible d&apos;écrire le fichier [[FILE]]
+ </notification>
+ <notification name="UnsupportedHardware">
+ Avertissement : vous n&apos;avez pas la configuration système requise pour utiliser [APP_NAME]. Si vous continuez à utiliser [APP_NAME], votre performance risque d&apos;être moindre. Malheureusement, la section [SUPPORT_SITE] n&apos;offre aucune aide pour les problèmes de configuration système.
+
+MINSPECS
+Voulez-vous visiter [_URL] pour plus d&apos;informations ?
+ <url name="url" option="0">
+ http://secondlife.com/support/sysreqs.php?lang=fr
+ </url>
+ <usetemplate ignoretext="Mon matériel n&apos;est pas pris en charge" name="okcancelignore" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="UnknownGPU">
+ Votre système contient une carte graphique que nous ne connaissons pas actuellement.
+Cela est souvent le cas avec le nouveau materiel qui n&apos;a pas encore été testé avec [APP_NAME]. Vous pourrez probablement utiliser [APP_NAME] sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques.
+(Préférences &gt; Graphiques).
+ <form name="form">
+ <ignore name="ignore" text="Ma carte graphique ne peut être identifiée"/>
+ </form>
+ </notification>
+ <notification name="DisplaySettingsNoShaders">
+ [APP_NAME] a planté lors de l&apos;initialisation des drivers graphiques.
+La qualité des graphiques sera paramétrée sur Faible pour éviter certaines erreurs de driver fréquentes.
+Certaines fonctionnalités graphiques seront donc désactivées.
+Nous vous recommandons de mettre à jour les drivers de votre carte graphique.
+La qualité des graphiques peut être augmentée à la section Préférences &gt; Graphiques
+ </notification>
+ <notification name="RegionNoTerraforming">
+ Le terraformage est interdit dans la région [REGION].
+ </notification>
+ <notification name="CannotCopyWarning">
+ Vous n&apos;êtes pas autorisé à copier cet objet et il disparaîtra de votre inventaire si vous le donnez. Souhaitez-vous vraiment offrir cet objet ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="CannotGiveItem">
+ Impossible de donner l&apos;objet de l&apos;inventaire.
+ </notification>
+ <notification name="TransactionCancelled">
+ Transaction annulée.
+ </notification>
+ <notification name="TooManyItems">
+ Impossible de donner plus de 42 objets au cours d&apos;un seul transfert d&apos;inventaire.
+ </notification>
+ <notification name="NoItems">
+ Vous n&apos;êtes pas autorisé à transférer les objets sélectionnés.
+ </notification>
+ <notification name="CannotCopyCountItems">
+ Vous n&apos;êtes pas autorisé à copier [COUNT] des objets sélectionnés. Ces objets disparaîtront de votre inventaire.
+Souhaitez-vous vraiment donner ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="CannotGiveCategory">
+ Vous n&apos;êtes pas autorisé à transférer le dossier sélectionné.
+ </notification>
+ <notification name="FreezeAvatar">
+ Geler cet avatar ?
+Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde.
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/>
+ </notification>
+ <notification name="FreezeAvatarFullname">
+ Geler [AVATAR_NAME] ?
+Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le Monde.
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Dégeler" yestext="Geler"/>
+ </notification>
+ <notification name="EjectAvatarFullname">
+ Expulser [AVATAR_NAME] de votre terrain ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Expulser et bannir" yestext="Expulser"/>
+ </notification>
+ <notification name="EjectAvatarNoBan">
+ Expulser cet avatar de votre terrain ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/>
+ </notification>
+ <notification name="EjectAvatarFullnameNoBan">
+ Expulser [AVATAR_NAME] de votre terrain ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/>
+ </notification>
+ <notification name="AcquireErrorTooManyObjects">
+ Erreur d&apos;acquisition : trop d&apos;objets sélectionnés.
+ </notification>
+ <notification name="AcquireErrorObjectSpan">
+ Erreur d&apos;acquisition : les objets sont répartis dans plus d&apos;une région.
+Veuillez mettre tous les objets que vous souhaitez acquérir dans la même région.
+ </notification>
+ <notification name="PromptGoToCurrencyPage">
+ [EXTRA]
+
+Aller sur [_URL] pour obtenir des informations sur l&apos;achat de L$ ?
+ <url name="url">
+ http://secondlife.com/app/currency/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="UnableToLinkObjects">
+ Impossible de lier ces [COUNT] objets.
+Vous pouvez lier un maximum de [MAX] objets.
+ </notification>
+ <notification name="CannotLinkIncompleteSet">
+ Vous ne pouvez lier que des ensembles d&apos;objets complets et vous devez choisir un minimum de deux objets.
+ </notification>
+ <notification name="CannotLinkModify">
+ Impossible de lier car vous n&apos;avez pas le droit de modifier tous les objets.
+
+Assurez-vous que vous êtes le propriétaire de tous les objets et qu&apos;aucun d&apos;eux n&apos;est verrouillé.
+ </notification>
+ <notification name="CannotLinkDifferentOwners">
+ Impossible de lier car les objets n&apos;ont pas tous le même propriétaire.
+
+Assurez-vous que vous êtes le propriétaire de tous les objets sélectionnés.
+ </notification>
+ <notification name="NoFileExtension">
+ Pas d&apos;extension pour le fichier suivant : &apos;[FILE]&apos;
+
+Assurez-vous que le fichier a l&apos;extension correcte.
+ </notification>
+ <notification name="InvalidFileExtension">
+ Extension de fichier [EXTENSION] invalide
+[VALIDS] attendu
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotUploadSoundFile">
+ Impossible de lire le fichier son chargé :
+[FILE]
+ </notification>
+ <notification name="SoundFileNotRIFF">
+ Il semble que le fichier ne soit pas un fichier RIFF WAVE :
+[FILE]
+ </notification>
+ <notification name="SoundFileNotPCM">
+ Il semble que le fichier ne soit pas un fichier audio PCM WAVE :
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChannelCount">
+ Le fichier contient un nombre de canaux invalide (doit être mono ou stéréo) :
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidSampleRate">
+ Le fichier ne semble pas être pris en charge (doit être 44,1 k) :
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidWordSize">
+ Le fichier ne semble pas être pris en charge (doit faire 8 ou 16 bit) :
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidHeader">
+ Impossible de trouver les données dans l&apos;en-tête WAV :
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidTooLong">
+ Le fichier audio est trop long (10 secondes maximum) :
+[FILE]
+ </notification>
+ <notification name="ProblemWithFile">
+ Problème avec le fichier [FILE] :
+
+[ERROR]
+ </notification>
+ <notification name="CannotOpenTemporarySoundFile">
+ Impossible d&apos;ouvrir le fichier son compressé temporaire : [FILE]
+ </notification>
+ <notification name="UnknownVorbisEncodeFailure">
+ Échec d&apos;encodage Vorbis inconnu sur : [FILE]
+ </notification>
+ <notification name="CannotEncodeFile">
+ Impossible d&apos;encoder le fichier : [FILE]
+ </notification>
+ <notification name="CorruptResourceFile">
+ Fichier ressource corrompu : [FILE]
+ </notification>
+ <notification name="UnknownResourceFileVersion">
+ Version de fichier ressource Linden inconnu : [FILE]
+ </notification>
+ <notification name="UnableToCreateOutputFile">
+ Impossible de créer le fichier de sortie : [FILE]
+ </notification>
+ <notification name="DoNotSupportBulkAnimationUpload">
+ Actuellement, APP_NAME] ne prend pas en charge le chargement de lots de fichiers d&apos;animation.
+ </notification>
+ <notification name="CannotUploadReason">
+ Impossible de charger [FILE] suite au problème suivant : [REASON]
+Veuillez réessayer ultérieurement.
+ </notification>
+ <notification name="LandmarkCreated">
+ Vous avez ajouté &quot;[LANDMARK_NAME]&quot; à votre dossier [FOLDER_NAME].
+ </notification>
+ <notification name="CannotCreateLandmarkNotOwner">
+ Vous ne pouvez pas créer de repère ici car le propriétaire du terrain ne l&apos;autorise pas.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoScripts">
+ Impossible d&apos;effectuer les recompilations.
+Sélectionnez un objet avec un script.
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoPermission">
+ Impossible d&apos;effectuer les recompilations.
+
+Sélectionnez des objets qui ont des scripts et que vous pouvez modifier.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoScripts">
+ Impossible d&apos;effectuer la réinitialisation.
+
+Veuillez sélectionner des objets avec des scripts.
+ </notification>
+ <notification name="CannotResetSelectObjectsNoPermission">
+ Impossible d&apos;effectuer la réinitialisation.
+
+Sélectionnez des objets qui ont des scripts et que vous pouvez modifier.
+ </notification>
+ <notification name="CannotSetRunningSelectObjectsNoScripts">
+ Impossible de définir les scripts sur « exécution ».
+
+Veuillez sélectionner des objets avec des scripts.
+ </notification>
+ <notification name="CannotSetRunningNotSelectObjectsNoScripts">
+ Impossible de définir les scripts sur « non-exécution ».
+
+Veuillez sélectionner des objets avec des scripts.
+ </notification>
+ <notification name="NoFrontmostFloater">
+ Aucun floater frontmost à sauvegarder.
+ </notification>
+ <notification name="SeachFilteredOnShortWords">
+ Votre requête a été modifiée et les mots trops courts ont été supprimés.
+
+Recherche effectuée : [FINALQUERY]
+ </notification>
+ <notification name="SeachFilteredOnShortWordsEmpty">
+ Vos termes de recherche étaient trop courts et aucune recherche n&apos;a été effectuée.
+ </notification>
+ <notification name="CouldNotTeleportReason">
+ Impossible de téléporter.
+[REASON]
+ </notification>
+ <notification name="invalid_tport">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
+Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
+ </notification>
+ <notification name="invalid_region_handoff">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir traverser des régions.
+Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
+ </notification>
+ <notification name="blocked_tport">
+ Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
+Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème.
+ </notification>
+ <notification name="nolandmark_tport">
+ Désolé, le système n&apos;a pas réussi à localiser la destination de votre repère.
+ </notification>
+ <notification name="timeout_tport">
+ Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
+Veuillez réessayer dans un moment.
+ </notification>
+ <notification name="noaccess_tport">
+ Désolé, vous n&apos;avez pas accès à cette destination.
+ </notification>
+ <notification name="missing_attach_tport">
+ Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d&apos;essayer de vous téléporter.
+ </notification>
+ <notification name="too_many_uploads_tport">
+ Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée.
+ </notification>
+ <notification name="expired_tport">
+ Désolé, votre demande de téléportation n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
+ </notification>
+ <notification name="expired_region_handoff">
+ Désolé, votre demande pour passer dans une autre région n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
+ </notification>
+ <notification name="no_host">
+ Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu&apos;elle n&apos;existe plus. Veuillez réessayer dans quelques minutes.
+ </notification>
+ <notification name="no_inventory_host">
+ L&apos;inventaire est temporairement indisponible.
+ </notification>
+ <notification name="CannotSetLandOwnerNothingSelected">
+ Impossible de définir le propriétaire foncier :
+aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotSetLandOwnerMultipleRegions">
+ Impossible de définir un propriétaire car la sélection couvre plusieurs régions. Veuillez sélectionner une zone plus petite et réessayer.
+ </notification>
+ <notification name="ForceOwnerAuctionWarning">
+ Cette parcelle est mise aux enchères. Définir un propriétaire annulerait les enchères, ce qui pourrait être gênant pour certains résidents si ces dernières ont commencé. Souhaitez-vous définir un propriétaire ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="CannotContentifyNothingSelected">
+ Problème :
+Aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotContentifyNoRegion">
+ Problème :
+Aucune région sélectionnée.
+ </notification>
+ <notification name="CannotReleaseLandNothingSelected">
+ Impossible d&apos;abandonner le terrain :
+aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotReleaseLandNoRegion">
+ Impossible d&apos;abandonner le terrain :
+la région est introuvable.
+ </notification>
+ <notification name="CannotBuyLandNothingSelected">
+ Impossible d&apos;acheter le terrain :
+aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotBuyLandNoRegion">
+ Impossible d&apos;acheter le terrain :
+la région dans laquelle il est situé est introuvable.
+ </notification>
+ <notification name="CannotCloseFloaterBuyLand">
+ Vous ne pouvez pas fermer la fenêtre Acheter le terrain avant que [APP_NAME] n&apos;estime le montant de cette transaction.
+ </notification>
+ <notification name="CannotDeedLandNothingSelected">
+ Cession du terrain impossible :
+aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotDeedLandNoGroup">
+ Cession du terrain impossible :
+aucun groupe sélectionné.
+ </notification>
+ <notification name="CannotDeedLandNoRegion">
+ Cession du terrain impossible :
+la région dans laquelle il est situé est introuvable.
+ </notification>
+ <notification name="CannotDeedLandMultipleSelected">
+ Cession du terrain impossible :
+plusieurs parcelles sélectionnées.
+
+Essayez de ne sélectionner qu&apos;une seule parcelle.
+ </notification>
+ <notification name="ParcelCanPlayMedia">
+ Cette parcelle propose des flux média.
+Pour jouer des flux média, il faut avoir une connexion internet rapide.
+
+Jouer les flux média lorsqu&apos;ils sont disponibles ?
+(Vous pourrez modifier cette option ultérieurement sous Préférences &gt; Audio et vidéo.)
+ <usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/>
+ </notification>
+ <notification name="CannotDeedLandWaitingForServer">
+ Cession du terrain impossible :
+rapport de propriété sur le point d&apos;être envoyé par le serveur.
+
+Merci de réessayer.
+ </notification>
+ <notification name="CannotDeedLandNoTransfer">
+ Cession du terrain impossible :
+la cession de terrain est interdite dans la région [REGION].
+ </notification>
+ <notification name="CannotReleaseLandWatingForServer">
+ Impossible d&apos;abandonner le terrain :
+mise à jour des informations sur la parcelle sur le point d&apos;être envoyée par le serveur.
+
+Veuillez réessayer dans quelques secondes.
+ </notification>
+ <notification name="CannotReleaseLandSelected">
+ Impossible d&apos;abandonner le terrain :
+vous n&apos;êtes pas le propriétaire des parcelles sélectionnées.
+
+Veuillez sélectionner une seule parcelle.
+ </notification>
+ <notification name="CannotReleaseLandDontOwn">
+ Impossible d&apos;abandonner le terrain :
+vous n&apos;avez pas le droit de libérer cette parcelle.
+Les parcelles qui vous appartiennent sont en vert.
+ </notification>
+ <notification name="CannotReleaseLandRegionNotFound">
+ Impossible d&apos;abandonner le terrain :
+la région dans laquelle il est situé est introuvable.
+ </notification>
+ <notification name="CannotReleaseLandNoTransfer">
+ Impossible d&apos;abandonner le terrain :
+le transfert de terrain est interdit dans la région [REGION].
+ </notification>
+ <notification name="CannotReleaseLandPartialSelection">
+ Impossible d&apos;abandonner le terrain :
+vous devez sélectionner une parcelle entière pour la libérer.
+
+Sélectionnez toute la parcelle ou divisez-la d&apos;abord.
+ </notification>
+ <notification name="ReleaseLandWarning">
+ Vous vous apprêtez à libérer [AREA] m² de terrain.
+Si vous libérez cette parcelle, elle sera supprimée de votre patrimoine, mais vous ne recevrez pas de L$.
+
+Libérer ce terrain ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNothingSelected">
+ Division du terrain impossible :
+
+aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotDivideLandPartialSelection">
+ Division du terrain impossible :
+
+Toute la parcelle est sélectionnée.
+Sélectionnez une partie de la parcelle uniquement.
+ </notification>
+ <notification name="LandDivideWarning">
+ Si vous divisez ce terrain, cette parcelle sera partagée en deux et chaque parcelle pourra avoir ses propres paramètres. Après cette opération, certains paramètres reviendront aux paramètres par défaut.
+
+Diviser le terrain ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNoRegion">
+ Division du terrain impossible :
+la région dans laquelle il est situé est introuvable.
+ </notification>
+ <notification name="CannotJoinLandNoRegion">
+ Impossible de fusionner le terrain :
+la région dans laquelle il est situé est introuvable.
+ </notification>
+ <notification name="CannotJoinLandNothingSelected">
+ Impossible de fusionner le terrain :
+aucune parcelle sélectionnée.
+ </notification>
+ <notification name="CannotJoinLandEntireParcelSelected">
+ Impossible de fusionner le terrain :
+vous avez sélectionné une seule parcelle.
+
+Sélectionnez le terrain sur les deux parcelles.
+ </notification>
+ <notification name="CannotJoinLandSelection">
+ Impossible de fusionner le terrain :
+vous devez sélectionner au moins deux parcelles.
+
+Sélectionnez le terrain sur les deux parcelles.
+ </notification>
+ <notification name="JoinLandWarning">
+ En fusionnant ce terrain, vous créerez une grande parcelle composée de toutes les parcelles se trouvant dans le rectangle sélectionné.
+Vous devrez réinitialiser le nom et les options de la nouvelle parcelle.
+
+Fusionner le terrain ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmNotecardSave">
+ Cette note doit être sauvegardée avant que l&apos;objet ne puisse être copié ou visualisé. Enregistrer la note ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmItemCopy">
+ Copier cet objet dans votre inventaire ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Copier"/>
+ </notification>
+ <notification name="ResolutionSwitchFail">
+ Échec du changement de résolution (à [RESX], de [RESY])
+ </notification>
+ <notification name="ErrorUndefinedGrasses">
+ Erreur : herbes non identifiées : [SPECIES]
+ </notification>
+ <notification name="ErrorUndefinedTrees">
+ Erreur : arbres non identifiés : [SPECIES]
+ </notification>
+ <notification name="CannotSaveWearableOutOfSpace">
+ Impossible de sauvegarder [NAME]. Pour pouvoir sauvegarder ce fichier, vous devez d&apos;abord libérer de la mémoire sur votre ordinateur.
+ </notification>
+ <notification name="CannotSaveToAssetStore">
+ Impossible de sauvegarder le fichier [NAME] dans la base de données centrale.
+Cette erreur est généralement temporaire. Veuillez éditer et sauvegarder l&apos;élément endossable à nouveau d&apos;ici quelques minutes.
+ </notification>
+ <notification name="YouHaveBeenLoggedOut">
+ Vous avez été déconnecté(e) de [SECOND_LIFE] :
+ [MESSAGE]
+Vous pouvez afficher vos messages instantanés et votre chat en cliquant sur Afficher IM et chat. Sinon, cliquez sur Quitter pour quitter immédiatement [APP_NAME].
+ <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Afficher IM et chat"/>
+ </notification>
+ <notification name="OnlyOfficerCanBuyLand">
+ Impossible d&apos;acheter du terrain pour le groupe :
+Vous n&apos;avez pas le droit d&apos;acheter de terrain pour votre groupe.
+ </notification>
+ <notification label="Devenir amis" name="AddFriend">
+ Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu&apos;ils se connectent.
+
+Proposer à [NAME] de devenir votre ami(e) ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification label="Devenir amis" name="AddFriendWithMessage">
+ Vous pouvez suivre les déplacements de vos amis sur la carte et voir lorsqu&apos;ils se connectent.
+
+Proposer à [NAME] de devenir votre ami(e) ?
+ <form name="form">
+ <input name="message">
+ Voulez-vous être mon ami(e) ?
+ </input>
+ <button name="Offer" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="RemoveFromFriends">
+ Voulez-vous supprimer [FIRST_NAME] [LAST_NAME] de votre liste d&apos;amis ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="RemoveMultipleFromFriends">
+ Voulez-vous supprimer plusieurs résidents de votre liste d&apos;amis ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedPublicObjectsByUser">
+ Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains des autres résidents dans cette région ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedObjectsByUser">
+ Êtes-vous certain de vouloir supprimer tous les objets scriptés appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllObjectsByUser">
+ Êtes-vous certain de vouloir supprimer tous les objets (scriptés ou pas) appartenant à ** [AVATAR_NAME] ** sur tous les terrains de cette région ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BlankClassifiedName">
+ Vous devez choisir un nom pour votre petite annonce.
+ </notification>
+ <notification name="MinClassifiedPrice">
+ Le coût de l&apos;annonce doit être de [MIN_PRICE] L$ minimum.
+
+Veuillez saisir un montant plus élevé.
+ </notification>
+ <notification name="ConfirmObjectDeleteLock">
+ Au moins un des objets que vous avez sélectionnés est verrouillé.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopy">
+ Au moins un des objets que vous avez sélectionnés n&apos;est pas copiable.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoOwn">
+ Au moins un des objets que vous avez sélectionnés ne vous appartient pas.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopy">
+ Au moins un des objets est verrouillé.
+Au moins un des objets n&apos;est pas copiable.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoOwn">
+ Au moins un des objets est verrouillé.
+Au moins un des objets ne vous appartient pas.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopyNoOwn">
+ Au moins un des objets n&apos;est pas copiable.
+Au moins un des objets ne vous appartient pas.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+ Au moins un des objets est verrouillé.
+Au moins un des objets n&apos;est pas copiable.
+Au moins un des objets ne vous appartient pas.
+
+Êtes-vous certain de vouloir supprimer ces objets ?
+ <usetemplate name="okcancelbuttons" notext="annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLock">
+ Au moins un des objets est verrouillé.
+
+Êtes-vous certain de vouloir prendre ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeNoOwn">
+ Vous n&apos;êtes pas le propriétaire de tous les objets que vous prenez.
+Si vous continuez, les droits accordés au prochain propriétaire seront activés et vous risquez de ne plus pouvoir modifier ou copier les objets.
+
+Êtes-vous certain de vouloir prendre ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLockNoOwn">
+ Au moins un des objets est verrouillé.
+Vous n&apos;êtes pas le propriétaire de tous les objets que vous prenez.
+Si vous continuez, les droits accordés au prochain propriétaire seront activés et vous risquez de ne plus pouvoir modifier ou copier les objets.
+Par contre, vous pouvez prendre les objets sélectionnés.
+
+Êtes-vous certain de vouloir prendre ces objets ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="CantBuyLandAcrossMultipleRegions">
+ Impossible d&apos;acheter le terrain car la sélection couvre plusieurs régions.
+
+Veuillez sélectionner une zone plus petite et réessayer.
+ </notification>
+ <notification name="DeedLandToGroup">
+ Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge.
+Le prix de la vente du terrain n&apos;est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe.
+
+Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="DeedLandToGroupWithContribution">
+ Si vous cédez ce terrain, le groupe devra avoir les moyens de le prendre en charge.
+La cession incluera une contribution de terrain simultanée au groupe de [FIRST_NAME] [LAST_NAME].
+Le prix de la vente du terrain n&apos;est pas remboursé par le propriétaire. Si la parcelle que vous cédez se vend, le prix de la vente sera divisé en parts égales parmi les membres du groupe.
+
+Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="DisplaySetToSafe">
+ Les paramètres d&apos;affichage sont au niveau le plus sûr, comme vous l&apos;aviez indiqué.
+ </notification>
+ <notification name="DisplaySetToRecommended">
+ Vos paramètres d&apos;affichage ont été réglés avec une marge de sécurité en fonction de votre configuration système.
+ </notification>
+ <notification name="ErrorMessage">
+ [ERROR_MESSAGE]
+ </notification>
+ <notification name="AvatarMovedDesired">
+ La destination que vous avez choisie n&apos;est pas disponible actuellement.
+Vous avez été téléporté vers une région voisine.
+ </notification>
+ <notification name="AvatarMovedLast">
+ Votre dernière destination n&apos;est pas disponible actuellement.
+Vous avez été téléporté vers une région voisine.
+ </notification>
+ <notification name="AvatarMovedHome">
+ La destination que vous avez choisie n&apos;est pas disponible actuellement.
+Vous avez été téléporté vers une région voisine.
+Nous vous conseillons de définir votre domicile ailleurs.
+ </notification>
+ <notification name="ClothingLoading">
+ Vos vêtements sont en cours de téléchargement.
+Vous pouvez utiliser [SECOND_LIFE] normalement, les autres résidents vous voient correctement.
+ <form name="form">
+ <ignore name="ignore" text="Vos habits prennent du temps à télécharger"/>
+ </form>
+ </notification>
+ <notification name="FirstRun">
+ L&apos;installation de [APP_NAME] est terminée.
+
+S&apos;il s&apos;agit de la première fois que vous utilisez [SECOND_LIFE], vous devrez créer un compte avant de pouvoir vous connecter.
+Retourner sur www.secondlife.com pour créer un nouveau compte ?
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Nouveau compte..."/>
+ </notification>
+ <notification name="LoginPacketNeverReceived">
+ Nous avons des difficultés à vous connecter. Il y a peut-être un problème avec votre connexion Internet ou la [SECOND_LIFE_GRID].
+
+Vérifiez votre connextion Internet et réessayez dans quelques minutes, cliquez sur Aide pour consulter la page [SUPPORT_SITE] ou bien sur Téléporter pour essayer d&apos;aller chez vous.
+ <url name="url">
+ http://secondlife.com/support/
+ </url>
+ <form name="form">
+ <button name="OK" text="OK"/>
+ <button name="Help" text="Aide"/>
+ <button name="Teleport" text="Téléporter"/>
+ </form>
+ </notification>
+ <notification name="WelcomeChooseSex">
+ Votre personnage va apparaître dans un moment.
+
+Pour marcher, utilisez les flèches de direction.
+Appuyez sur F1 pour obtenir de l&apos;aide ou en savoir plus sur [SECOND_LIFE].
+Choisissez un avatar homme ou femme.
+Vous pourrez revenir sur votre décision plus tard.
+ <usetemplate name="okcancelbuttons" notext="Femme" yestext="Homme"/>
+ </notification>
+ <notification name="NotEnoughCurrency">
+ [NAME] [PRICE] L$ Vous n&apos;avez pas suffisamment de L$ pour faire cela.
+ </notification>
+ <notification name="GrantedModifyRights">
+ [FIRST_NAME] [LAST_NAME] vous avez donné la permission de modifier ses objets.
+ </notification>
+ <notification name="RevokedModifyRights">
+ Vous n&apos;avez plus le droit de modifier les objets de [FIRST_NAME] [LAST_NAME].
+ </notification>
+ <notification name="FlushMapVisibilityCaches">
+ Cela videra le cache cartographique de cette région.
+Cela n&apos;est vraiment utile que pour faire du débugage.
+(En production, attendez 5 minutes. Les cartes seront mises à jour après reconnexion.)
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BuyOneObjectOnly">
+ Impossible d&apos;acheter plus d&apos;un objet à la fois. Veuillez ne sélectionner qu&apos;un seul objet.
+ </notification>
+ <notification name="OnlyCopyContentsOfSingleItem">
+ Impossible de copier les contenus de plus d&apos;un objet à la fois.
+Veuillez ne sélectionner qu&apos;un seul objet.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="KickUsersFromRegion">
+ Téléporter tous les résidents de cette région chez eux ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="EstateObjectReturn">
+ Etes-vous certain de vouloir renvoyer les objets appartenant à [USER_NAME] ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="InvalidTerrainBitDepth">
+ Impossible de definir les textures de la région :
+La texture du terrain [TEXTURE_NUM] a une profondeur invalide ([TEXTURE_BIT_DEPTH]).
+
+Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer.
+ </notification>
+ <notification name="InvalidTerrainSize">
+ Impossible de definir les textures de la région :
+La texture du terrain [TEXTURE_NUM] est trop volumineuse ([TEXTURE_SIZE_X] X [TEXTURE_SIZE_Y]).
+
+Remplacer la texture [TEXTURE_NUM] avec une image de 24 bits, 512 X 512, ou plus petite, puis cliquez à nouveau sur Appliquer.
+ </notification>
+ <notification name="RawUploadStarted">
+ Le chargement a commencé. Cela va prendre une à deux minutes,
+suivant votre vitesse de connexion.
+ </notification>
+ <notification name="ConfirmBakeTerrain">
+ Etes-vous sûr(e) de vouloir figer le relief actuel, en faire le point central des limites d&apos;élévation/abaissement de relief et la valeur par défaut du bouton Annuler modification ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="MaxAllowedAgentOnRegion">
+ Vous ne pouvez pas autoriser plus de [MAX_AGENTS] résidents.
+ </notification>
+ <notification name="MaxBannedAgentsOnRegion">
+ Vous ne pouvez pas bannir plus de [MAX_BANNED] résidents.
+ </notification>
+ <notification name="MaxAgentOnRegionBatch">
+ Echec lors de la tentative d&apos;ajout de [NUM_ADDED] agents :
+Dépasse la limite fixée à [MAX_AGENTS] [LIST_TYPE] de [NUM_EXCESS].
+ </notification>
+ <notification name="MaxAllowedGroupsOnRegion">
+ Vous ne pouvez pas avoir plus que [MAX_GROUPS] groupes autorisés.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Figer"/>
+ </notification>
+ <notification name="MaxManagersOnRegion">
+ Vous ne pouvez avoir que [MAX_MANAGER] gérants de domaine.
+ </notification>
+ <notification name="OwnerCanNotBeDenied">
+ Impossible d&apos;ajouter le propriétaire du domaine à la liste des résidents bannis.
+ </notification>
+ <notification name="CanNotChangeAppearanceUntilLoaded">
+ Impossible de changer d&apos;apparence jusqu&apos;à ce que les habits et la silhouette soient chargés.
+ </notification>
+ <notification name="ClassifiedMustBeAlphanumeric">
+ Le nom de votre petite annonce doit commencer par un chiffre ou une lettre (A à Z). La ponctuation n&apos;est pas autorisée.
+ </notification>
+ <notification name="CantSetBuyObject">
+ Cet objet n&apos;est pas à vendre.
+Veuillez choisir un objet à vendre et réessayer.
+ </notification>
+ <notification name="FinishedRawDownload">
+ Chargement du fichier de terrain raw effectué vers :
+[DOWNLOAD_PATH].
+ </notification>
+ <notification name="DownloadWindowsMandatory">
+ Une nouvelle version de [APP_NAME] est disponible.
+[MESSAGE]
+Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour.
+ <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadWindows">
+ Une mise à jour de [APP_NAME] est disponible.
+[MESSAGE]
+Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadWindowsReleaseForDownload">
+ Une mise à jour de [APP_NAME] est disponible.
+[MESSAGE]
+Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadLinuxMandatory">
+ Une nouvelle version de [APP_NAME] est disponible.
+[MESSAGE]
+Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour.
+ <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadLinux">
+ Une mise à jour de [SECOND_LIFE] est disponible.
+[MESSAGE]
+Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ Une mise à jour de [SECOND_LIFE] est disponible.
+[MESSAGE]
+Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadMacMandatory">
+ Une nouvelle version de [APP_NAME] est disponible.
+[MESSAGE]
+Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour.
+
+Télécharger vers le dossier Applications ?
+ <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadMac">
+ Une mise à jour de [APP_NAME] est disponible.
+[MESSAGE]
+Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
+
+Télécharger vers le dossier Applications ?
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
+ </notification>
+ <notification name="DownloadMacReleaseForDownload">
+ Une mise à jour de [APP_NAME] est disponible.
+[MESSAGE]
+Cette mise à jour n&apos;est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l&apos;installer.
+
+Télécharger vers le dossier Applications ?
+ <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/>
+ </notification>
+ <notification name="DeedObjectToGroup">
+ Si vous cédez cet objet, le groupe :
+* recevra les L$ versés pour l&apos;objet ;
+ <usetemplate ignoretext="Confimer avant que je ne cède un objet à un groupe" name="okcancelignore" notext="Annuler" yestext="Céder"/>
+ </notification>
+ <notification name="WebLaunchExternalTarget">
+ Voulez-vous ouvrir votre navigateur web système pour afficher ce contenu ?
+ <usetemplate ignoretext="Ouvrir mon navigateur pour consulter une page web" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchJoinNow">
+ Aller sur secondlife.com pour gérer votre compte ?
+ <usetemplate ignoretext="Lancer mon navigateur pour gérer mon compte" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchSecurityIssues">
+ Pour apprendre à signaler un problème de sécurité, consultez le Wiki de [SECOND_LIFE].
+ <usetemplate ignoretext="Lancer mon navigateur pour apprendre comment signaler un problème de sécurité" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchQAWiki">
+ Consultez le Wiki sur l&apos;Assurance Qualité de [SECOND_LIFE].
+ <usetemplate ignoretext="Lancer mon navigateur web pour consulter la page Wiki sur l&apos;Assurance Qualité." name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchPublicIssue">
+ Pour signaler des bugs et autres problèmes, utilisez le JIRA de [SECOND_LIFE].
+ <usetemplate ignoretext="Lancer mon navigateur pour utiliser le Public Issue Tracker (JIRA)" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
+ </notification>
+ <notification name="WebLaunchSupportWiki">
+ Visitez le blog officiel des Lindens pour les dernières nouvelles et informations.
+ <usetemplate ignoretext="Lancer mon navigateur web pour consulter le blog" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/>
+ </notification>
+ <notification name="WebLaunchLSLGuide">
+ Voulez-vous ouvrir le guide pour l&apos;écriture de scripts ?
+ <usetemplate ignoretext="Lancer mon navigateur web pour consulter le guide pour l&apos;écriture de scripts" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLWiki">
+ Voulez-vous ouvrir le portail LSL pour l&apos;écriture de scripts ?
+ <usetemplate ignoretext="Lancer mon navigateur web pour consulter le portail LSL" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/>
+ </notification>
+ <notification name="ReturnToOwner">
+ Êtes-vous certain de vouloir renvoyer les objets sélectionnés à leur propriétaire ? Les objets donnés transférables seront renvoyés à leur ancien propriétaire.
+
+*Avertissement* Les objets non transférables seront supprimés !
+ <usetemplate ignoretext="Confirmer avant de rendre les objets à leurs propriétaires" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="GroupLeaveConfirmMember">
+ Vous êtes actuellement membre du groupe [GROUP].
+Quitter le groupe ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmKick">
+ Souhaitez-vous vraiment éjecter tous les utilisateurs de la grille ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous"/>
+ </notification>
+ <notification name="MuteLinden">
+ Désolé, vous ne pouvez pas ignorer un Linden.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotStartAuctionAlreadyForSale">
+ Vous ne pouvez pas démarrer des enchères sur une parcelle déjà en vente. Si vous êtes certain de vouloir démarrer des enchères, mettez fin à la vente.
+ </notification>
+ <notification label="Échec de la fonction Ignorer les objets par nom" name="MuteByNameFailed">
+ Vous ignorez déjà ce résident.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RemoveItemWarn">
+ Si vous supprimez des contenus, vous risquez d&apos;endommager l&apos;objet. Souhaitez-vous supprimer cet objet ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferCallingCard">
+ Impossible d&apos;offrir une carte de visite actuellement. Veuillez réessayer dans un moment.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferFriendship">
+ Impossible de proposer votre amitié actuellement. Veuillez réessayer dans un moment.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="BusyModeSet">
+ Le mode Occupé est sélectionné.
+Les chats et les messages instantanés ne s&apos;afficheront pas. Les messages instantanés génèreront la réponse en mode occupé que vous avez créée. Toutes les offres de téléportation seront refusées. Toutes les offres d&apos;inventaire iront dans la corbeille.
+ <usetemplate ignoretext="Je change mon statut en mode Occupé" name="okignore" yestext="OK"/>
+ </notification>
+ <notification name="JoinedTooManyGroupsMember">
+ Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre.
+[NAME] vous invite à rejoindre un groupe.
+[INVITE]
+ <usetemplate name="okcancelbuttons" notext="Refuser" yestext="Rejoindre"/>
+ </notification>
+ <notification name="KickUser">
+ Éjecter cet utilisateur avec quel message ?
+ <form name="form">
+ <input name="message">
+ Un administrateur vous a déconnecté.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="KickAllUsers">
+ Éjecter tous les résidents actuellement en ligne avec quel message ?
+ <form name="form">
+ <input name="message">
+ Un administrateur vous a déconnecté.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="FreezeUser">
+ Geler cet utilisateur avec quel message ?
+ <form name="form">
+ <input name="message">
+ Vous avez été gelé. Vous ne pouvez ni bouger ni chatter. Un administrateur va vous envoyer un message instantané (IM).
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="UnFreezeUser">
+ Dégeler cet utilisateur avec quel message ?
+ <form name="form">
+ <input name="message">
+ Vous n&apos;êtes plus gelé.
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="OfferTeleport">
+ Proposez une téléportation avec le message suivant ?
+ <form name="form">
+ <input name="message">
+ On se rejoint à [REGION] ?
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="OfferTeleportFromGod">
+ Demander au résident de venir vous rejoindre ?
+ <form name="form">
+ <input name="message">
+ On se rejoint à [REGION] ?
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="TeleportFromLandmark">
+ Êtes-vous certain de vouloir être téléporté ?
+ <usetemplate ignoretext="Confirmer que je veux me téléporter à un repère" name="okcancelignore" notext="Annuler" yestext="Téléporter"/>
+ </notification>
+ <notification name="TeleportToPick">
+ Téléporter vers [PICK] ?
+ <usetemplate ignoretext="Confirmer que je veux me téléporter à un endroit dans mes Préférences" name="okcancelignore" notext="Annuler" yestext="Téléporter"/>
+ </notification>
+ <notification label="Envoyer un message à tout le monde dans votre domaine" name="MessageEstate">
+ Saisissez un message court qui sera envoyé à tous les résidents se trouvant actuellement sur votre domaine.
+ <form name="form">
+ <input name="message"/>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification label="Modifier un domaine Linden" name="ChangeLindenEstate">
+ Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.).
+
+Cela est extrêmement délicat car l&apos;expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur.
+
+Continuer ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification label="Modifier l&apos;accès à un domaine Linden" name="ChangeLindenAccess">
+ Vous vous apprêtez à modifier la liste d&apos;accès à un domaine appartenant aux Linden (continent, zone réservée aux ados, orientation etc.).
+
+Cette action est délicate et ne doit être effectuée que pour appeler le hack autorisant des objets/L$ à être transférés à l&apos;intérieur/extérieur de la grille.
+Cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateAllowedAgentAdd">
+ Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateAllowedAgentRemove">
+ Supprimer de la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateAllowedGroupAdd">
+ Ajouter à la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateAllowedGroupRemove">
+ Supprimer de la liste des groupes autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateBannedAgentAdd">
+ Refuser l&apos;accès à ce domaine uniquement ou à [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateBannedAgentRemove">
+ Supprimer ce résident de la liste des résidents bannis pour ce domaine uniquement ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateManagerAdd">
+ Ajouter un gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Choisir le domaine" name="EstateManagerRemove">
+ Supprimer le gérant de domaine pour ce domaine uniquement ou pour [ALL_ESTATES] ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
+ </notification>
+ <notification label="Confirmer" name="EstateKickUser">
+ Éjecter [EVIL_USER] de ce domaine ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="EstateChangeCovenant">
+ Êtes-vous certain de vouloir modifier le règlement du domaine ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked">
+ Votre catégorie d&apos;accès ne vous autorise pas à pénétrer dans cette région. Cela vient peut-être du fait qu&apos;il manquait des informations pour valider votre âge.
+
+Vérifiez que vous avez la toute dernière version du client et consultez les pages d&apos;aide pour savoir comment accéder aux zones ayant ce niveau d&apos;accès.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_KB">
+ Votre catégorie d&apos;accès ne vous permet pas de pénétrer dans cette région.
+
+Souhaitez-vous en savoir plus sur les différentes catégories d&apos;accès ?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
+ </url>
+ <usetemplate ignoretext="Je ne peux pas pénétrer dans cette région car je n&apos;ai pas accès à cette catégorie de contenu" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d&apos;aide"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Notify">
+ Votre catégorie d&apos;accès ne vous permet pas de pénétrer dans cette région.
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Change">
+ Votre catégorie d&apos;accès ne vous permet pas de pénétrer dans cette région.
+
+En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d&apos;accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition &gt; Préférences... &gt; Général.
+ <form name="form">
+ <button name="OK" text="Modifier les Préférences"/>
+ <button default="true" name="Cancel" text="Fermer"/>
+ <ignore name="ignore" text="La catégorie de contenu que j&apos;ai choisie m&apos;empêche de pénétrer dans une région"/>
+ </form>
+ </notification>
+ <notification name="LandClaimAccessBlocked">
+ Votre catégorie d&apos;accès ne vous permet pas de réclamer cette région. Cela vient peut-être du fait qu&apos;il manquait des informations pour valider votre âge.
+
+Vérifiez que vous avez la toute dernière version du client et consultez les pages d&apos;aide pour savoir comment accéder aux zones ayant ce niveau d&apos;accès.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_KB">
+ Votre catégorie d&apos;accès ne vous permet pas de réclamer cette région.
+
+Souhaitez-vous en savoir plus sur les différentes catégories d&apos;accès ?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
+ </url>
+ <usetemplate ignoretext="Je ne peux pas réclamer cette région car je n&apos;ai pas accès à cette catégorie de contenu" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d&apos;aide"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_Notify">
+ Votre catégorie d&apos;accès ne vous autorise pas à réclamer cette région.
+ </notification>
+ <notification name="LandClaimAccessBlocked_Change">
+ Votre catégorie d&apos;accès ne vous permet pas de réclamer cette région.
+
+En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d&apos;accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition &gt; Préférences... &gt; Général.
+ <usetemplate ignoretext="La catégorie de contenu que j&apos;ai choisie m&apos;empêche de réclamer un terrain" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked">
+ Votre catégorie d&apos;accès ne vous permet pas d&apos;acheter cette région. Cela vient peut-être du fait qu&apos;il manquait des informations pour valider votre âge.
+
+Vérifiez que vous avez la toute dernière version du client et consultez les pages d&apos;aide pour savoir comment accéder aux zones ayant ce niveau d&apos;accès.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_KB">
+ Votre catégorie d&apos;accès ne vous permet pas d&apos;acheter cette région.
+
+Souhaitez-vous en savoir plus sur les différentes catégories d&apos;accès ?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
+ </url>
+ <usetemplate ignoretext="Je ne peux pas acheter ce terrain car je n&apos;ai pas accès à cette catégorie de contenu" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d&apos;aide"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_Notify">
+ Votre catégorie d&apos;accès ne vous permet pas d&apos;acheter cette région.
+ </notification>
+ <notification name="LandBuyAccessBlocked_Change">
+ Votre catégorie d&apos;accès ne vous autorise pas à acheter cette région.
+
+En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d&apos;accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition &gt; Préférences... &gt; Général.
+ <usetemplate ignoretext="La catégorie de contenu que j&apos;ai choisie m&apos;empêche d&apos;acheter un terrain" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/>
+ </notification>
+ <notification name="TooManyPrimsSelected">
+ &quot;Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer.&quot;
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemImportingEstateCovenant">
+ Problème lors de l&apos;importation du règlement du domaine.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemAddingEstateManager">
+ Problèmes lors de l&apos;ajout d&apos;un nouveau gérant de domaine. Il est possible qu&apos;au moins un des domaines ait une liste de gérants complète.
+ </notification>
+ <notification name="ProblemAddingEstateGeneric">
+ Problème lors de l&apos;ajout à la liste de ce domaine. Il est possible qu&apos;au moins un des domaines ait une liste complète.
+ </notification>
+ <notification name="UnableToLoadNotecardAsset">
+ Impossible de charger les données de la note actuellement.
+ </notification>
+ <notification name="NotAllowedToViewNotecard">
+ Permissions pour afficher la note insuffisantes.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MissingNotecardAssetID">
+ Les références de la note ne se trouvent pas dans la base de données.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PublishClassified">
+ Rappel : les frais pour passer des petites annonces ne sont pas remboursables.
+
+Publier cette petite annonce maintenant pour [AMOUNT] L$ ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="SetClassifiedMature">
+ Cette petite annonce contient-elle du contenu Mature ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="SetGroupMature">
+ Ce groupe contient-il du contenu Mature ?
+ <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification label="Confirmer le redémarrage" name="ConfirmRestart">
+ Souhaitez-vous vraiment redémarrer cette région dans 2 minutes ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification label="Envoyer un message à la région" name="MessageRegion">
+ Saisissez une message qui sera envoyé à tous les résidents présents dans cette région.
+ <form name="form">
+ <input name="message"/>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification label="Catégorie de la région modifiée" name="RegionMaturityChange">
+ La catégorie d&apos;accès de cette région a été mise à jour.
+Ce changement n&apos;apparaîtra pas immédiatement sur la carte.
+ </notification>
+ <notification label="Versions de voix non compatibles" name="VoiceVersionMismatch">
+ Cette version de [APP_NAME] n&apos;est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour [APP_NAME] pour que le chat vocal fonctionne correctement.
+ </notification>
+ <notification label="Impossible d&apos;acheter des objets" name="BuyObjectOneOwner">
+ Impossible d&apos;acheter simultanément des objets de propriétaires différents.
+Veuillez ne sélectionner qu&apos;un seul objet.
+ </notification>
+ <notification label="Impossible d&apos;acheter des contenus" name="BuyContentsOneOnly">
+ Impossible d&apos;acheter les contenus de plus d&apos;un objet à la fois.
+Veuillez ne sélectionner qu&apos;un seul objet.
+ </notification>
+ <notification label="Impossible d&apos;acheter des contenus" name="BuyContentsOneOwner">
+ Impossible d&apos;acheter simultanément des objets de propriétaires différents.
+Veuillez ne sélectionner qu&apos;un seul objet.
+ </notification>
+ <notification name="BuyOriginal">
+ Acheter l&apos;objet original pour [PRICE] L$ à [PRICE] ?
+Vous deviendrez le propriétaire de cet objet.
+Vous pourrez :
+ Modifier : [MODIFYPERM]
+ Copier : [COPYPERM]
+ Revendre ou donner : [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BuyOriginalNoOwner">
+ Acheter l&apos;objet original pour [PRICE] L$ ?
+Vous deviendrez le propriétaire de cet objet.
+Vous pourrez :
+ Modifier : [MODIFYPERM]
+ Copier : [COPYPERM]
+ Revendre ou donner : [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopy">
+ Acheter une copie pour [PRICE] L$ à [OWNER] ?
+L&apos;objet sera copié dans votre inventaire.
+Vous pourrez :
+ Modifier : [MODIFYPERM]
+ Copier : [COPYPERM]
+ Revendre ou donner : [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopyNoOwner">
+ Acheter une copie pour [PRICE] L$ ?
+L&apos;objet sera copié dans votre inventaire.
+Vous pourrez :
+ Modifier : [MODIFYPERM]
+ Copier : [COPYPERM]
+ Revendre ou donner : [RESELLPERM]
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BuyContents">
+ Acheter des contenus pour [PRICE] L$ à [OWNER] ?
+Ils seront copiés dans votre inventaire.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="BuyContentsNoOwner">
+ Acheter des contenus pour [PRICE] L$ ?
+Ils seront copiés dans votre inventaire.
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchase">
+ Suite à cette transaction, vous allez :
+[ACTION]
+
+Êtes-vous certain de vouloir effectuer cette transaction ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchasePassword">
+ Suite à cette transaction, vous allez :
+[ACTION]
+
+Êtes-vous certain de vouloir effectuer cette transaction ?
+Veuillez saisir à nouveau votre mot de passe et cliquer sur OK.
+ <form name="form">
+ <button name="ConfirmPurchase" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="SetPickLocation">
+ Remarque :
+vous avez mis à jour l&apos;emplacement de ce favori mais les autres détails resteront inchangés.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromObject">
+ Vous avez sélectionné des objets non copiables.
+Ces objets seront déplacés dans votre inventaire et non pas copiés.
+
+Déplacer les objets de l&apos;inventaire ?
+ <usetemplate ignoretext="M&apos;avertir avant que je ne déplace des objets pour lesquels la copie est interdite" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromScriptedObject">
+ Vous avez sélectionné des objets de l&apos;inventaire qui ne peuvent pas être copiés. Ces objets seront déplacés vers votre inventaire, et non pas copiés.
+L&apos;objet les contenant est scripté, déplacer ces objets peut causer des problèmes au niveau du script.
+
+Déplacer les objets de l&apos;inventaire ?
+ <usetemplate ignoretext="M&apos;avertir avant que je ne déplace des objets pour lesquels la copie est interdite et qui pourraient casser des objets scriptés" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ClickActionNotPayable">
+ Avertissement : l&apos;action du clic Payer l&apos;objet a été définie mais ne fonctionnera que si un script est ajouté avec l&apos;event money().
+ <form name="form">
+ <ignore name="ignore" text="Je définis l&apos;action du clic Payer l&apos;objet lorsque je construis un objet sans le script money()"/>
+ </form>
+ </notification>
+ <notification name="OpenObjectCannotCopy">
+ Vous n&apos;êtes autorisé à copier aucun élément dans cet objet.
+ </notification>
+ <notification name="WebLaunchAccountHistory">
+ Aller sur secondlife.com pour consulter l&apos;historique de votre compte ?
+ <usetemplate ignoretext="Lancer mon navigateur pour consulter l&apos;historique de mon compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/>
+ </notification>
+ <notification name="ConfirmQuit">
+ Êtes-vous certain de vouloir quitter ?
+ <usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
+ </notification>
+ <notification name="HelpReportAbuseEmailLL">
+ Utilisez cet outil pour signaler des infractions aux Conditions d&apos;utilisation et aux Règles de la communauté. Voir :
+
+http://secondlife.com/corporate/tos.php
+http://secondlife.com/corporate/cs.php
+
+Lorsqu&apos;elles sont signalées, toutes les infractions aux Conditions d&apos;utilisation et aux Règles de la communauté font l&apos;objet d&apos;une enquête et sont résolues. Pour accéder aux détails de la résolution d&apos;un incident, allez sur :
+
+http://secondlife.com/support/incidentreport.php
+ </notification>
+ <notification name="HelpReportAbuseEmailEO">
+ Important : ce rapport ira au propriétaire de la région dans laquelle vous êtes et non à Linden Lab.
+
+Pour aider les résidents et les visiteurs, le propriétaire de la région dans laquelle vous êtes a choisi de recevoir et de s&apos;occuper de tous les rapports envoyés à partir de cette région. Linden Lab n&apos;enquêtera pas sur les rapports que vous envoyez à partir de cet endroit.
+
+Le propriétaire de la région traitera les rapports en fonction des règles de cette région, comme indiqué dans le réglement du domaine.
+(Les réglements sont visibles à partir du menu Monde &gt; À propos du terrain.)
+
+La résolution de ce rapport ne s&apos;applique qu&apos;à cette région ; L&apos;accès aux autres endroits de [SECOND_LIFE] ne sera pas affecté par les résultats de cette enquête. Seul Linden Lab peut interdire l&apos;accès à l&apos;ensemble de [SECOND_LIFE].
+ </notification>
+ <notification name="HelpReportAbuseSelectCategory">
+ Veuillez choisir une catégorie pour ce rapport d&apos;infraction.
+Le choix d&apos;une catégorie nous permet de traiter les rapports d&apos;infraction plus rapidement.
+ </notification>
+ <notification name="HelpReportAbuseAbuserNameEmpty">
+ Veuillez saisir le nom du contrevenant.
+Lorsque nous avons le nom du contrevenant, nous sommes en mesure de traiter les rapports plus rapidement.
+ </notification>
+ <notification name="HelpReportAbuseAbuserLocationEmpty">
+ Veuillez indiquer l&apos;endroit où l&apos;infraction a eu lieu.
+Les informations précises et exactes nous permettent de traiter les rapports plus rapidement.
+ </notification>
+ <notification name="HelpReportAbuseSummaryEmpty">
+ Veuillez saisir un récapitulatif de l&apos;infraction.
+Les récapitulatifs précis nous permettent de traiter les rapports plus rapidement.
+ </notification>
+ <notification name="HelpReportAbuseDetailsEmpty">
+ Veuillez saisir une description détaillée de l&apos;infraction.
+Soyez aussi précis que possible et essayez de fournir des noms ainsi que des détails sur l&apos;incident que vous signalez.
+Les descriptions précises nous permettent de traiter les rapports plus rapidement.
+ </notification>
+ <notification name="HelpReportAbuseContainsCopyright">
+ Cher résident,
+
+Il semble que vous souhaitiez reporter une infraction à des droits de propriété intellectuelle. Pour signaler correctement cette infraction :
+
+(1) Remplissez un rapport d&apos;infraction. Vous pouvez soumettre un rapport d&apos;infraction si vous pensez qu&apos;un résident exploite le système de droits de [SECOND_LIFE], par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l&apos;encontre du résident non respectueux des Conditions d&apos;utilisation ou des règles de la communauté. Sachez toutefois que l&apos;équipe chargée des infractions ne supprimera pas de contenu à l&apos;intérieur de [SECOND_LIFE].
+
+(2) Demandez à ce que du contenu à l&apos;intérieur de [SECOND_LIFE] soit supprimé. Pour demander à ce que du contenu soit supprimé de [SECOND_LIFE], vous devez soumettre un rapport d&apos;infraction valide, tel que fourni dans notre Règlement contre les violations des droit d&apos;auteurs (DMCA), à http://secondlife.com/corporate/dmca.php.
+
+Si vous souhaitez toujours reporter cette infraction, veuillez fermer cette fenêtre et soumettre votre rapport. Vous devrez peut-être sélectionner la catégorie CopyBot ou exploitation abusive des droits.
+
+Merci,
+
+Linden Lab
+ </notification>
+ <notification name="FailedRequirementsCheck">
+ Les composantes requises suivantes ne se trouvent pas dans [FLOATER]:
+[COMPONENTS]
+ </notification>
+ <notification label="Remplacer la pièce-jointe existante" name="ReplaceAttachment">
+ Vous avez déjà un objet sur cette partie du corps.
+Voulez-vous le remplacer par l&apos;objet sélectionné ?
+ <form name="form">
+ <ignore name="ignore" save_option="true" text="Remplacer une pièce-jointe existante par l&apos;objet sélectionné"/>
+ <button ignore="Remplacer automatiquement" name="Yes" text="OK"/>
+ <button ignore="Ne jamais remplacer" name="No" text="Annuler"/>
+ </form>
+ </notification>
+ <notification label="Réponse si occupé(e)" name="BusyModePay">
+ Vous êtes en mode occupé et vous ne recevrez donc aucun objet en échange de ce paiement.
+
+Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ?
+ <form name="form">
+ <ignore name="ignore" save_option="true" text="Je suis sur le point de payer une personne ou un objet mais suis en mode Occupé"/>
+ <button ignore="Toujours quitter le mode occupé" name="Yes" text="OK"/>
+ <button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="ConfirmEmptyTrash">
+ Êtes-vous certain de vouloir supprimer le contenu de votre corbeille de manière permanente ?
+ <usetemplate ignoretext="Confimer avant de vider la corbeille" name="okcancelignore" notext="Annuler" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearBrowserCache">
+ Êtes-vous certain de vouloir supprimer l&apos;historique de vos visites et recherches ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
+ </notification>
+ <notification name="ConfirmClearCookies">
+ Êtes-vous certain de vouloir supprimer vos cookies ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
+ </notification>
+ <notification name="ConfirmClearMediaUrlList">
+ Êtes-vous certain de vouloir supprimer la liste des URL enregistrées ?
+ <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
+ </notification>
+ <notification name="ConfirmEmptyLostAndFound">
+ Êtes-vous certain de vouloir supprimer le contenu de votre dossier Objets trouvés de manière permanente ?
+ <usetemplate ignoretext="Confimer avant de vider le dossier Objets trouvés" name="okcancelignore" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="CopySLURL">
+ La SLurl suivante a été copiée dans votre presse-papier :
+ [SLURL]
+
+Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apos;accéder facilement à cet endroit ou bien collez-la dans la barre d&apos;adresse de votre navigateur.
+ <form name="form">
+ <ignore name="ignore" text="La SLurl est copiée dans mon presse-papier"/>
+ </form>
+ </notification>
+ <notification name="WLSavePresetAlert">
+ Voulez-vous écraser l&apos;option précédemment enregistrée ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="WLDeletePresetAlert">
+ Voulez-vous supprimer [SKY] ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="WLNoEditDefault">
+ Vous ne pouvez pas éditer ou supprimer un préréglage par défaut.
+ </notification>
+ <notification name="WLMissingSky">
+ Une dossier semble manquer au Cycle du jour : [SKY].
+ </notification>
+ <notification name="PPSaveEffectAlert">
+ Certains effets post-traitement existent. Voulez-vous quand même écraser ce fichier ?
+ <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="NewSkyPreset">
+ Nommez le nouveau ciel.
+ <form name="form">
+ <input name="message">
+ Nouveau préréglage
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="ExistsSkyPresetAlert">
+ Ce préréglage existe déjà !
+ </notification>
+ <notification name="NewWaterPreset">
+ Nommez ce nouveau préréglage d&apos;eau.
+ <form name="form">
+ <input name="message">
+ Nouveau préréglage
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="ExistsWaterPresetAlert">
+ Ce préréglage existe déjà !
+ </notification>
+ <notification name="WaterNoEditDefault">
+ Vous ne pouvez pas éditer ou supprimer un préréglage par défaut.
+ </notification>
+ <notification name="ChatterBoxSessionStartError">
+ Impossible de démarrer une nouvelle session de chat avec [RECIPIENT].
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ChatterBoxSessionEventError">
+ [EVENT]
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ForceCloseChatterBoxSession">
+ Vous devez terminer votre session de chat avec [NAME].
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="Cannot_Purchase_an_Attachment">
+ Vous ne pouvez pas acheter un objet s&apos;il fait partie d&apos;une pièce-jointe.
+ </notification>
+ <notification label="À propos des requêtes pour les autorisations de débit" name="DebitPermissionDetails">
+ Accepter cette requête donne au script l&apos;autorisation de prélever des dollars Linden (L$) sur votre compte de manière continue. Pour révoquer cette autorisation, le propriétaire de l&apos;objet doit supprimer l&apos;objet ou bien réinitialiser les scripts dans l&apos;objet.
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AutoWearNewClothing">
+ Voulez-vous automatiquement porter l&apos;habit que vous allez créer ?
+ <usetemplate ignoretext="Porter automatiquement tout en modifiant mon apparence" name="okcancelignore" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="NotAgeVerified">
+ Pour pouvoir pénétrer dans cette zone, vous devez avoir procédé à la vérification de votre âge. Souhaitez-vous aller sur [SECOND_LIFE] et procéder à la vérification de votre âge ?
+
+[_URL]
+ <url name="url" option="0">
+ https://secondlife.com/account/verification.php?lang=fr
+ </url>
+ <usetemplate ignoretext="Je n&apos;ai pas procédé à la vérification de mon âge" name="okcancelignore" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="Cannot enter parcel: no payment info on file">
+ Pour pouvoir pénétrer dans cette zone, vous devez avoir enregistré vos informations de paiement. Souhaitez-vous aller sur [SECOND_LIFE] et enregistrer vos informations de paiement ?
+
+[_URL]
+ <url name="url" option="0">
+ https://secondlife.com/account/index.php?lang=fr
+ </url>
+ <usetemplate ignoretext="Mes informations de paiement ne sont pas enregistrées" name="okcancelignore" notext="Non" yestext="Oui"/>
+ </notification>
+ <notification name="MissingString">
+ The string [STRING_NAME] is missing from strings.xml
+ </notification>
+ <notification name="SystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="Cancelled">
+ Annulé
+ </notification>
+ <notification name="CancelledSit">
+ Action annulée
+ </notification>
+ <notification name="CancelledAttach">
+ Attachement annulé
+ </notification>
+ <notification name="ReplacedMissingWearable">
+ Habits et parties du corps manquants remplacés par les éléments par défaut.
+ </notification>
+ <notification name="GroupNotice">
+ Sujet : [SUBJECT], Message : [MESSAGE]
+ </notification>
+ <notification name="FriendOnline">
+ [FIRST] [LAST] est connecté(e)
+ </notification>
+ <notification name="FriendOffline">
+ [FIRST] [LAST] est déconnecté(e)
+ </notification>
+ <notification name="AddSelfFriend">
+ Même si vous êtes extrêmement sympathique, vous ne pouvez pas devenir ami avec vous-même.
+ </notification>
+ <notification name="UploadingAuctionSnapshot">
+ Importation de photos SL et Web en cours...
+(prend environ 5 minutes.)
+ </notification>
+ <notification name="UploadPayment">
+ Le chargement a coûté [AMOUNT] L$.
+ </notification>
+ <notification name="UploadWebSnapshotDone">
+ Photo Web importée
+ </notification>
+ <notification name="UploadSnapshotDone">
+ Photo SL importée
+ </notification>
+ <notification name="TerrainDownloaded">
+ Fichier terrain.raw téléchargé
+ </notification>
+ <notification name="GestureMissing">
+ Geste [NAME] absent de la base de données.
+ </notification>
+ <notification name="UnableToLoadGesture">
+ Impossible de charger le geste [NAME].
+Merci de réessayer.
+ </notification>
+ <notification name="LandmarkMissing">
+ Repère absent de la base de données.
+ </notification>
+ <notification name="UnableToLoadLandmark">
+ Impossible de charger le repère. Merci de réessayer.
+ </notification>
+ <notification name="CapsKeyOn">
+ La touche Verr.maj est activée.
+Cela risque d&apos;impacter votre mot de passe.
+ </notification>
+ <notification name="NotecardMissing">
+ Note absente de la base de données.
+ </notification>
+ <notification name="NotecardNoPermissions">
+ Vous n&apos;avez pas le droit de consulter cette note.
+ </notification>
+ <notification name="RezItemNoPermissions">
+ Permissions insuffisantes pour rezzer l&apos;objet.
+ </notification>
+ <notification name="UnableToLoadNotecard">
+ Impossible de lire les données de la note actuellement.
+ </notification>
+ <notification name="ScriptMissing">
+ Script absent de la base de données.
+ </notification>
+ <notification name="ScriptNoPermissions">
+ Permissions insuffisantes pour voir le script.
+ </notification>
+ <notification name="UnableToLoadScript">
+ Impossible de charger le script. Merci de réessayer.
+ </notification>
+ <notification name="IncompleteInventory">
+ Tous les éléments que vous souhaitez transférer ne sont pas encore disponibles sur le serveur.
+Merci d&apos;essayer à nouveau dans une minute.
+ </notification>
+ <notification name="CannotModifyProtectedCategories">
+ Vous ne pouvez pas modifier de catégories protégées.
+ </notification>
+ <notification name="CannotRemoveProtectedCategories">
+ Vous ne pouvez pas supprimer de catégories protégées.
+ </notification>
+ <notification name="OfferedCard">
+ Vous avez offert votre carte de visite à [FIRST] [LAST]
+ </notification>
+ <notification name="UnableToBuyWhileDownloading">
+ Achat impossible durant le chargement de l&apos;objet.
+Merci de réessayer.
+ </notification>
+ <notification name="UnableToLinkWhileDownloading">
+ Impossible de lier durant le chargement de l&apos;objet.
+Merci de réessayer.
+ </notification>
+ <notification name="CannotBuyObjectsFromDifferentOwners">
+ Vous ne pouvez pas acheter simultanément des objets de propriétaires différents.
+Veuillez sélectionner un seul objet.
+ </notification>
+ <notification name="ObjectNotForSale">
+ Cet objet n&apos;est pas à vendre.
+ </notification>
+ <notification name="EnteringGodMode">
+ Activation du mode divin : niveau [LEVEL]
+ </notification>
+ <notification name="LeavingGodMode">
+ Désactivation du mode divin : niveau [LEVEL]
+ </notification>
+ <notification name="CopyFailed">
+ Vous n&apos;avez pas le droit de copier ceci.
+ </notification>
+ <notification name="InventoryAccepted">
+ [NAME] a accepté votre envoi.
+ </notification>
+ <notification name="InventoryDeclined">
+ [NAME] a refusé votre envoi.
+ </notification>
+ <notification name="ObjectMessage">
+ [NAME]: [MESSAGE]
+ </notification>
+ <notification name="CallingCardAccepted">
+ Votre carte de visite a été acceptée.
+ </notification>
+ <notification name="CallingCardDeclined">
+ Votre carte de visite a été refusée.
+ </notification>
+ <notification name="TeleportToLandmark">
+ A présent que vous êtes sur le continent, vous pouvez voyager par téléportation (vers [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l&apos;écran puis sélectionnez le dossier Repères (Landmarks).
+Choisissez un repère, double-cliquez dessus et cliquez sur Téléporter.
+ </notification>
+ <notification name="TeleportToPerson">
+ A présent que vous êtes sur le continent, vous pouvez contacter des résidents (tel [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l&apos;écran puis sélectionnez le dossier Cartes de visite (Calling Cards).
+Choisissez en une, double-cliquez dessus et cliquez sur Message Instantané.
+ </notification>
+ <notification name="CantSelectLandFromMultipleRegions">
+ Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur.
+Veuillez sélectionner un terrain plus petit.
+ </notification>
+ <notification name="SearchWordBanned">
+ Certains termes de votre recherche ont été exclus car ils ne correspondaient pas aux standards fixés dans les Règles communautaires.
+ </notification>
+ <notification name="NoContentToSearch">
+ Veuillez sélectionner au moins un type de contenu à rechercher (PG, Mature ou Adulte)
+ </notification>
+ <notification name="GroupVote">
+ [NAME] a proposé un vote pour :
+[MESSAGE]
+ <form name="form">
+ <button name="VoteNow" text="Voter"/>
+ <button name="Later" text="Plus tard"/>
+ </form>
+ </notification>
+ <notification name="SystemMessage">
+ [MESSAGE]
+ </notification>
+ <notification name="EventNotification">
+ Avis d&apos;événement :
+
+[NAME]
+[DATE]
+ <form name="form">
+ <button name="Teleport" text="Téléporter"/>
+ <button name="Description" text="Description"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="TransferObjectsHighlighted">
+ Tous les objets de cette parcelle qui seront transférés à l&apos;acheteur sont maintenant mis en surbrillance.
+
+* Les arbres et la pelouse qui seront transférés ne sont pas mis en surbrillance.
+ <form name="form">
+ <button name="Done" text="Transfert effectué"/>
+ </form>
+ </notification>
+ <notification name="DeactivatedGesturesTrigger">
+ Gestes désactivés ayant le même mot-clé :
+[NAMES]
+ </notification>
+ <notification name="NoQuickTime">
+ Le logiciel Apple QuickTime ne semble pas installé sur votre système.
+Pour voir les vidéos sur les terrains qui le permettent, allez sur le site de QuickTime (http://www.apple.com/fr/quicktime/download) et installez le lecteur QuickTime.
+ </notification>
+ <notification name="NoPlugin">
+ Aucun Media Plugin n&apos;a été trouvé pour prendre en charge &quot;[MIME_TYPE]&quot;. Les médias de ce type ne sont pas disponibles.
+ </notification>
+ <notification name="MediaPluginFailed">
+ Le Media Plugin suivant a échoué :
+ [PLUGIN]
+
+Si le problème persiste, veuillez réinstaller le plugin ou contacter le vendeur.
+ <form name="form">
+ <ignore name="ignore" text="L&apos;éxécution d&apos;un Media Plugin a échoué"/>
+ </form>
+ </notification>
+ <notification name="OwnedObjectsReturned">
+ Les objets que vous possédez sur la parcelle de terrain sélectionnée ont été renvoyés dans votre inventaire.
+ </notification>
+ <notification name="OtherObjectsReturned">
+ Les objets que vous possédez sur la parcelle de terrain appartenant à [FIRST] [LAST] ont été renvoyés dans votre inventaire.
+ </notification>
+ <notification name="OtherObjectsReturned2">
+ Les objets sur la parcelle appartenant à « [NAME] » ont étés renvoyés à leur propriétaire.
+ </notification>
+ <notification name="GroupObjectsReturned">
+ Les objets sélectionnés sur la parcelle de terrain partagée avec le groupe [GROUPNAME] ont été renvoyés dans l&apos;inventaire de leur propriétaire.
+Les objets donnés transférables ont étés renvoyés à leur propriétaire.
+Les objets non transférables donnés au groupe ont étés supprimés.
+ </notification>
+ <notification name="UnOwnedObjectsReturned">
+ Les objets sélectionnés sur la parcelle et qui ne sont pas à vous ont été rendus à leurs propriétaires.
+ </notification>
+ <notification name="NotSafe">
+ Les dégâts sont autorisés sur ce terrain.
+Vous pouvez être blessé ici. Si vous décédez, vous serez téléporté à votre domicile.
+ </notification>
+ <notification name="NoFly">
+ Le vol est interdit dans cette zone.
+Vous ne pouvez pas voler ici.
+ </notification>
+ <notification name="PushRestricted">
+ Les bousculades sont interdites dans cette zone.
+Vous ne pouvez pas pousser les autres à moins que vous soyez propriétaire de ce terrain.
+ </notification>
+ <notification name="NoVoice">
+ Le chat vocal est interdit dans cette zone. Vous n&apos;entendrez personne parler.
+ </notification>
+ <notification name="NoBuild">
+ La construction est interdite dans cette zone. Vous ne pouvez pas construite ou rezzer d&apos;objets ici.
+ </notification>
+ <notification name="ScriptsStopped">
+ Un administrateur a temporairement stoppé les scripts dans cette région.
+ </notification>
+ <notification name="ScriptsNotRunning">
+ Aucun script ne fonctionne dans cette région.
+ </notification>
+ <notification name="NoOutsideScripts">
+ Les scripts externes sont désactivés sur ce terrain.
+
+Aucun script ne marche ici à part ceux du propriétaire du terrain.
+ </notification>
+ <notification name="ClaimPublicLand">
+ Vous ne pouvez réclamer qu&apos;un terrain public dans la région où vous vous trouvez actuellement.
+ </notification>
+ <notification name="RegionTPAccessBlocked">
+ Votre catégorie d&apos;accès ne vous autorise pas à pénétrer dans cette région. Vous devez sans doute procéder à la vérification de votre âge ou installer une version plus récente du client.
+
+Pour savoir comment accéder aux zones ayant un tel niveau d&apos;accès, veuillez consulter les pages d&apos;aide.
+ </notification>
+ <notification name="URBannedFromRegion">
+ Vous avez été banni de cette région.
+ </notification>
+ <notification name="NoTeenGridAccess">
+ Votre compte ne peut pas se connecter à cette région du Teen grid.
+ </notification>
+ <notification name="ImproperPaymentStatus">
+ Vous n&apos;avez pas le statut de paiement approprié pour pénétrer dans cette région.
+ </notification>
+ <notification name="MustGetAgeParcel">
+ Pour pouvoir pénétrer sur cette parcelle, vous devez avoir procédé à la vérification de votre âge.
+ </notification>
+ <notification name="NoDestRegion">
+ Région de destination introuvable.
+ </notification>
+ <notification name="NotAllowedInDest">
+ Vous n&apos;êtes pas autorisé dans cette région.
+ </notification>
+ <notification name="RegionParcelBan">
+ Impossible de traverser une parcelle bannie. Veuillez trouver une autre solution.
+ </notification>
+ <notification name="TelehubRedirect">
+ Vous avez été redirigé vers un téléhub.
+ </notification>
+ <notification name="CouldntTPCloser">
+ Il n&apos;a pas été possible de vous téléporter vers une destination plus proche.
+ </notification>
+ <notification name="TPCancelled">
+ Téléportation annulée.
+ </notification>
+ <notification name="FullRegionTryAgain">
+ La région dans laquelle vous essayez de pénétrer est pleine actuellement.
+Veuillez réessayer dans quelques minutes.
+ </notification>
+ <notification name="GeneralFailure">
+ Panne générale.
+ </notification>
+ <notification name="RoutedWrongRegion">
+ Dirigé vers la mauvaise région. Merci de réessayer.
+ </notification>
+ <notification name="NoValidAgentID">
+ ID agent non valide.
+ </notification>
+ <notification name="NoValidSession">
+ ID de session non valide.
+ </notification>
+ <notification name="NoValidCircuit">
+ Aucun code de circuit valide.
+ </notification>
+ <notification name="NoValidTimestamp">
+ Timestamp non valide.
+ </notification>
+ <notification name="NoPendingConnection">
+ Impossible de créer la connexion en attente.
+ </notification>
+ <notification name="InternalUsherError">
+ Erreur interne lors de la tentative de connexion.
+ </notification>
+ <notification name="NoGoodTPDestination">
+ Impossible de trouver un lieu de téléportation valide dans cette région.
+ </notification>
+ <notification name="InternalErrorRegionResolver">
+ Une erreur interne est survenue lors de la résolution des coodonnées de la région.
+ </notification>
+ <notification name="NoValidLanding">
+ Impossible de trouver un point d&apos;atterrissage valide.
+ </notification>
+ <notification name="NoValidParcel">
+ Aucune parcelle valide n&apos;a été trouvée.
+ </notification>
+ <notification name="ObjectGiveItem">
+ Un objet appelé [OBJECTFROMNAME] appartenant à [FIRST] [LAST] vous a donné : [OBJECTTYPE] appelé(e) [OBJECTNAME].
+ <form name="form">
+ <button name="Keep" text="Garder"/>
+ <button name="Discard" text="Jeter"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="ObjectGiveItemUnknownUser">
+ L&apos;objet [OBJECTFROMNAME] appartenant à un utilisateur inconnu vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME].
+ <form name="form">
+ <button name="Keep" text="Garder"/>
+ <button name="Discard" text="Jeter"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="UserGiveItem">
+ [NAME] vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME].
+ <form name="form">
+ <button name="Keep" text="Garder"/>
+ <button name="Discard" text="Jeter"/>
+ </form>
+ </notification>
+ <notification name="GodMessage">
+ [NAME]
+[MESSAGE]
+ </notification>
+ <notification name="JoinGroup">
+ [MESSAGE]
+ <form name="form">
+ <button name="Join" text="Rejoindre"/>
+ <button name="Decline" text="Refuser"/>
+ <button name="Info" text="Infos"/>
+ </form>
+ </notification>
+ <notification name="TeleportOffered">
+ [NAME] vous propose de le/la rejoindre par téléportation :
+
+[MESSAGE]
+ <form name="form">
+ <button name="Teleport" text="Téléporter"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="GotoURL">
+ [MESSAGE]
+[URL]
+ <form name="form">
+ <button name="Later" text="Plus tard"/>
+ <button name="GoNow..." text="Y aller maintenant..."/>
+ </form>
+ </notification>
+ <notification name="OfferFriendship">
+ [NAME] vous demande de devenir son ami(e).
+
+[MESSAGE]
+
+(Par défaut, vous pourrez voir lorsque vous êtes tous deux connectés.)
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ </form>
+ </notification>
+ <notification name="OfferFriendshipNoMessage">
+ [NAME] vous demande de devenir son ami.
+
+(Par défaut, vous pourrez voir quand vous êtes tous deux connectés)
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ </form>
+ </notification>
+ <notification name="FriendshipAccepted">
+ [NAME] a accepté votre amitié.
+ </notification>
+ <notification name="FriendshipDeclined">
+ [NAME] a refusé votre amitié.
+ </notification>
+ <notification name="OfferCallingCard">
+ [FIRST] [LAST] vous offre sa carte de visite.
+Cela ajoute un marque-page dans votre inventaire, ce qui vous permet d&apos;envoyer rapidement un IM à ce résident.
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ </form>
+ </notification>
+ <notification name="RegionRestartMinutes">
+ La région va redémarrer dans [MINUTES] minutes.
+Si vous restez dans cette région, vous serez déconnecté(e).
+ </notification>
+ <notification name="RegionRestartSeconds">
+ La région va redémarrer dans [SECONDS] secondes.
+Si vous restez dans cette région, vous serez déconnecté(e).
+ </notification>
+ <notification name="LoadWebPage">
+ Charger cette page web [URL] ?
+
+[MESSAGE]
+
+Venant de l&apos;objet : [OBJECTNAME], appartenant à : [NAME]?
+ <form name="form">
+ <button name="Gotopage" text="Charger"/>
+ <button name="Cancel" text="Annuler"/>
+ </form>
+ </notification>
+ <notification name="FailedToFindWearableUnnamed">
+ La recherche du [TYPE] dans la base de données a échoué.
+ </notification>
+ <notification name="FailedToFindWearable">
+ La recherche du [TYPE] nommé(e) [DESC] dans la base de données a échoué.
+ </notification>
+ <notification name="InvalidWearable">
+ L&apos;objet que vous essayez de porter utilise une fonctionnalité que le client ne peut lire. Pour porter cet objet, veuillez télécharger une mise à jour du client.
+ </notification>
+ <notification name="ScriptQuestion">
+ &apos;[OBJECTNAME]&apos;, un objet appartenant à &apos;[NAME]&apos;, aimerait :
+
+[QUESTIONS]
+Acceptez-vous ?
+ <form name="form">
+ <button name="Yes" text="Oui"/>
+ <button name="No" text="Non"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="ScriptQuestionCaution">
+ Un objet appelé « [OBJECTNAME] », appartenant à « [NAME] », aimerait :
+
+[QUESTIONS]
+Si vous n&apos;avez pas confiance en cet objet ni en son créateur, vous devriez refuser cette requête.
+
+Accepter cette requête ?
+ <form name="form">
+ <button name="Grant" text="Accepter"/>
+ <button name="Deny" text="Refuser"/>
+ <button name="Details" text="Détails..."/>
+ </form>
+ </notification>
+ <notification name="ScriptDialog">
+ &apos;[TITLE]&apos; de [FIRST] [LAST]
+[MESSAGE]
+ <form name="form">
+ <button name="Ignore" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="ScriptDialogGroup">
+ &apos;[TITLE]&apos; de [GROUPNAME]
+[MESSAGE]
+ <form name="form">
+ <button name="Ignore" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="FirstBalanceIncrease">
+ Vous venez de recevoir [AMOUNT] L$.
+Votre solde en L$ est affiché en haut à droite.
+ </notification>
+ <notification name="FirstBalanceDecrease">
+ Vous venez de payer [AMOUNT] L$.
+Votre solde en L$ est affiché en haut à droite.
+ </notification>
+ <notification name="FirstSit">
+ Vous êtes assis(e).
+Utilisez les touches de direction (ou AWSD) pour regarder autour de vous.
+Pour vous lever, cliquez sur le bouton Me lever.
+ </notification>
+ <notification name="FirstMap">
+ Cliquez et faîtes glisser pour faire défiler la carte.
+Double-cliquez pour vous téléporter.
+Utilisez les contrôles à droite pour trouver des choses et afficher différents arrière-plans.
+ </notification>
+ <notification name="FirstBuild">
+ Vous avez ouvert les outils de construction. Tous les objets autour de vous ont été créés avec ces outils.
+ </notification>
+ <notification name="FirstTeleport">
+ Vous ne pouvez vous téléporter que dans certaines zones de cette région. La flèche pointe vers votre destination. Cliquez sur la flèche pour la faire disparaître.
+ </notification>
+ <notification name="FirstOverrideKeys">
+ Vos mouvements sont maintenant pris en charge par un objet.
+Essayez les flèches de votre clavier ou AWSD pour voir à quoi elles servent.
+Certains objets (comme les armes) nécessitent l&apos;activation du mode Vue subjective pour être utilisés.
+Pour cela, appuyez sur la touche M.
+ </notification>
+ <notification name="FirstAppearance">
+ Vous êtes en train d&apos;éditer votre apparence.
+Utilisez les touches de direction pour regarder autour de vous.
+Une fois terminé, cliquer sur Tout enregistrer.
+ </notification>
+ <notification name="FirstInventory">
+ Il s&apos;agit de votre inventaire qui contient vos possessions.
+
+* Pour porter quelque chose, faites glisser l&apos;objet sur vous-même.
+* Pour rezzer un objet dans le monde, faites-le glisser sur le sol.
+* Pour lire une note, double-cliquez dessus.
+ </notification>
+ <notification name="FirstSandbox">
+ Cette région est un bac à sable et est utilisée par les résidents pour apprendre à construire.
+
+Les objets que vous construisez ici seront supprimés après votre départ. N&apos;oubliez donc pas de cliquer droit et de choisir Prendre pour sauvegarder votre création dans votre inventaire.
+ </notification>
+ <notification name="FirstFlexible">
+ Cet objet est flexible. Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent rester fantômes.
+ </notification>
+ <notification name="FirstDebugMenus">
+ Vous avez ouvert le menu Avancé.
+
+Pour activer/désactiver ce menu,
+ Windows : Ctrl-Alt-D
+ Mac : ⌘-Opt-D
+ </notification>
+ <notification name="FirstSculptedPrim">
+ Vous êtes en train d&apos;éditer un sculptie. Pour spécifier la forme d&apos;un sculptie, vous devez utiliser une texture spécifique.
+ </notification>
+ <notification name="MaxListSelectMessage">
+ Vous ne pouvez sélectionner que [MAX_SELECT] objets maximum dans cette liste.
+ </notification>
+ <notification name="VoiceInviteP2P">
+ [NAME] vous invite à un chat vocal.
+Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer.
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="AutoUnmuteByIM">
+ [FIRST] [LAST] a reçu un message instantané et n&apos;est donc plus ignoré.
+ </notification>
+ <notification name="AutoUnmuteByMoney">
+ [FIRST] [LAST] a reçu de l&apos;argent et n&apos;est donc plus ignoré.
+ </notification>
+ <notification name="AutoUnmuteByInventory">
+ [FIRST] [LAST] a reçu un inventaire et n&apos;est donc plus ignoré.
+ </notification>
+ <notification name="VoiceInviteGroup">
+ [NAME] a rejoint un chat vocal avec le groupe [GROUP].
+Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer.
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="VoiceInviteAdHoc">
+ [NAME] a rejoint un chat vocal avec conférence.
+Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer.
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="InviteAdHoc">
+ [NAME] vous invite à un chat conférence.
+Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer.
+ <form name="form">
+ <button name="Accept" text="Accepter"/>
+ <button name="Decline" text="Refuser"/>
+ <button name="Mute" text="Ignorer"/>
+ </form>
+ </notification>
+ <notification name="VoiceChannelFull">
+ L&apos;appel auquel vous essayez de participer, [VOICE_CHANNEL_NAME], a atteint le nombre maximum de participants. Veuillez réessayer ultérieurement.
+ </notification>
+ <notification name="ProximalVoiceChannelFull">
+ Nous sommes désolés. Le nombre maximum de conversations vocales a été atteint dans cette zone. Veuillez trouver un autre endroit pour discuter.
+ </notification>
+ <notification name="VoiceChannelDisconnected">
+ Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté au chat vocal spatial.
+ </notification>
+ <notification name="VoiceChannelDisconnectedP2P">
+ [VOICE_CHANNEL_NAME] a mis fin à l&apos;appel. Vous allez maintenant être reconnecté au chat vocal spatial.
+ </notification>
+ <notification name="P2PCallDeclined">
+ [VOICE_CHANNEL_NAME] a refusé votre appel. Vous allez maintenant être reconnecté au chat vocal spatial.
+ </notification>
+ <notification name="P2PCallNoAnswer">
+ [VOICE_CHANNEL_NAME] ne peut pas prendre votre appel. Vous allez maintenant être reconnecté au chat vocal spatial.
+ </notification>
+ <notification name="VoiceChannelJoinFailed">
+ Echec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté au chat vocal spatial.
+ </notification>
+ <notification name="VoiceLoginRetry">
+ Nous sommes en train de créer un canal vocal pour vous. Veuillez patienter quelques instants.
+ </notification>
+ <notification name="Cannot enter parcel: not a group member">
+ Seuls les membres d&apos;un certain groupe peuvent visiter cette zone.
+ </notification>
+ <notification name="Cannot enter parcel: banned">
+ Vous ne pouvez pas pénétrer sur ce terrain car l&apos;accès vous y est interdit.
+ </notification>
+ <notification name="Cannot enter parcel: not on access list">
+ Vous ne pouvez pas pénétrer sur ce terrain car vous n&apos;avez pas les droits d&apos;accès requis.
+ </notification>
+ <notification name="VoiceNotAllowed">
+ Vous n&apos;êtes pas autorisé à vous connecter au chat vocal pour [VOICE_CHANNEL_NAME].
+ </notification>
+ <notification name="VoiceCallGenericError">
+ Une erreur est survenue pendant la connexion au chat vocal pour [VOICE_CHANNEL_NAME]. Veuillez réessayer ultérieurement.
+ </notification>
+ <notification name="ServerVersionChanged">
+ La région dans laquelle vous avez pénétré utilise une version de serveur différente, ce qui peut avoir un impact sur votre performance. Cliquez pour voir les notes de version.
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ La SLurl que vous avez saisie n&apos;est pas prise en charge.
+ </notification>
+ <notification name="IMToast">
+ <form name="form">
+ <button name="respondbutton" text="Répondre"/>
+ </form>
+ </notification>
+ <notification name="AttachmentSaved">
+ L&apos;élément joint a été sauvegardé.
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ Impossible de trouver l&apos;aide.
+ </notification>
+ <global name="UnsupportedCPU">
+ - Votre processeur ne remplit pas les conditions minimum requises.
+ </global>
+ <global name="UnsupportedGLRequirements">
+ Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d&apos;exploitation.
+
+Si vous avez toujours des problèmes, veuillez consulter la page [SUPPORT_SITE].
+ </global>
+ <global name="UnsupportedCPUAmount">
+ 796
+ </global>
+ <global name="UnsupportedRAMAmount">
+ 510
+ </global>
+ <global name="UnsupportedGPU">
+ - Votre carte graphique ne remplit pas les conditions minimum requises.
+ </global>
+ <global name="UnsupportedRAM">
+ - Votre mémoire système ne remplit pas les conditions minimum requises.
+ </global>
+ <global name="PermYes">
+ Oui
+ </global>
+ <global name="PermNo">
+ Non
+ </global>
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ Si vous possédez un terrain, vous pouvez le définir comme domicile.
+Sinon, consultez la carte et trouvez les « infohubs ».
+ </global>
+</notifications>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
index afadd109b1..3a13748efa 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profile Edit" name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident" value="Résident"/>
- <string name="AcctTypeTrial" value="Essai"/>
- <string name="AcctTypeCharterMember" value="Membre originaire"/>
- <string name="AcctTypeEmployee" value="Employé(e) de Linden Lab"/>
- <string name="PaymentInfoUsed" value="Infos de paiement utilisées"/>
- <string name="PaymentInfoOnFile" value="Infos de paiement enregistrées"/>
- <string name="NoPaymentInfoOnFile" value="Aucune info de paiement"/>
- <string name="AgeVerified" value="Âge vérifié"/>
- <string name="NotAgeVerified" value="Âge non vérifié"/>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=fr
- </string>
- <string name="no_partner_text" value="Aucun"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="data_panel">
- <panel name="lifes_images_panel">
- <icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez pour sélectionner une image"/>
- </panel>
- <icon label="" name="real_world_edit_icon" tool_tip="Cliquez pour sélectionner une image"/>
- <text name="title_homepage_text">
- Page d&apos;accueil :
- </text>
- <check_box label="Afficher dans les résultats de recherche" name="show_in_search_checkbox"/>
- <text name="title_acc_status_text" value="Statut du compte :"/>
- </panel>
- </panel>
- </scroll_container>
- <panel name="profile_me_buttons_panel">
- <button label="Enregistrer les changements" name="save_btn"/>
- <button label="Annuler" name="cancel_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profile Edit" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident" value="Résident"/>
+ <string name="AcctTypeTrial" value="Essai"/>
+ <string name="AcctTypeCharterMember" value="Membre originaire"/>
+ <string name="AcctTypeEmployee" value="Employé(e) de Linden Lab"/>
+ <string name="PaymentInfoUsed" value="Infos de paiement utilisées"/>
+ <string name="PaymentInfoOnFile" value="Infos de paiement enregistrées"/>
+ <string name="NoPaymentInfoOnFile" value="Aucune info de paiement"/>
+ <string name="AgeVerified" value="Âge vérifié"/>
+ <string name="NotAgeVerified" value="Âge non vérifié"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=fr
+ </string>
+ <string name="no_partner_text" value="Aucun"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <panel name="lifes_images_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez pour sélectionner une image"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="Cliquez pour sélectionner une image"/>
+ <text name="title_homepage_text">
+ Page d&apos;accueil :
+ </text>
+ <check_box label="Afficher dans les résultats de recherche" name="show_in_search_checkbox"/>
+ <text name="title_acc_status_text" value="Statut du compte :"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <button label="Enregistrer les changements" name="save_btn"/>
+ <button label="Annuler" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_invite.xml b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
index ae01f05bfb..7055d9e3f2 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
@@ -1,29 +1,29 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Inviter un résident" name="invite_panel">
- <panel.string name="confirm_invite_owner_str">
- Etes-vous certain de vouloir inviter un/de nouveau(x) propriétaire(s) ? Ce choix est permanent !
- </panel.string>
- <panel.string name="loading">
- (en cours de chargement...)
- </panel.string>
- <panel.string name="already_in_group">
- Certains des avatars font déjà partie du groupe et n&apos;ont pas été invités.
- </panel.string>
- <text name="help_text">
- Vous pouvez inviter plusieurs résidents
-à la fois. Cliquez d&apos;abord sur
-Choisir un résident.
- </text>
- <button label="Choisir un résident" name="add_button" tool_tip=""/>
- <name_list name="invitee_list" tool_tip="Pour sélectionner plusieurs noms, maintenez la touche Ctrl enfoncée en cliquant sur le nom des résidents."/>
- <button label="Supprimer de la liste" name="remove_button" tool_tip="Supprime les résidents sélectionnés de la liste des invités."/>
- <text name="role_text">
- Assignez-leur un rôle :
- </text>
- <combo_box name="role_name" tool_tip="Choisissez des rôles à assigner aux membres dans la liste."/>
- <button label="Envoyer les invitations" name="ok_button"/>
- <button label="Annuler" name="cancel_button"/>
- <string name="GroupInvitation">
- Invitations au groupe
- </string>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Inviter un résident" name="invite_panel">
+ <panel.string name="confirm_invite_owner_str">
+ Etes-vous certain de vouloir inviter un/de nouveau(x) propriétaire(s) ? Ce choix est permanent !
+ </panel.string>
+ <panel.string name="loading">
+ (en cours de chargement...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ Certains des avatars font déjà partie du groupe et n&apos;ont pas été invités.
+ </panel.string>
+ <text name="help_text">
+ Vous pouvez inviter plusieurs résidents
+à la fois. Cliquez d&apos;abord sur
+Choisir un résident.
+ </text>
+ <button label="Choisir un résident" name="add_button" tool_tip=""/>
+ <name_list name="invitee_list" tool_tip="Pour sélectionner plusieurs noms, maintenez la touche Ctrl enfoncée en cliquant sur le nom des résidents."/>
+ <button label="Supprimer de la liste" name="remove_button" tool_tip="Supprime les résidents sélectionnés de la liste des invités."/>
+ <text name="role_text">
+ Assignez-leur un rôle :
+ </text>
+ <combo_box name="role_name" tool_tip="Choisissez des rôles à assigner aux membres dans la liste."/>
+ <button label="Envoyer les invitations" name="ok_button"/>
+ <button label="Annuler" name="cancel_button"/>
+ <string name="GroupInvitation">
+ Invitations au groupe
+ </string>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
index 9a24b7a687..3ffdf53e7c 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
@@ -1,86 +1,86 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Terrain et L$" name="land_money_tab">
- <string name="help_text">
- Les parcelles appartenant au groupe sont indiquées avec le détails des contributions. Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. Les onglets Planification, Détails et Ventes correspondent aux finances du groupe.
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
- Vous n&apos;avez pas la permission de voir quel terrain possède ce groupe.
- </string>
- <string name="cant_view_group_accounting_text">
- Vous n&apos;avez pas la permission d&apos;accéder aux informations
-financières de ce groupe.
- </string>
- <string name="loading_txt">
- Chargement...
- </string>
- <text name="group_land_heading">
- Terrain du groupe
- </text>
- <scroll_list name="group_parcel_list">
- <column label="Parcelle" name="name"/>
- <column label="Région" name="location"/>
- <column label="Type" name="type"/>
- <column label="Surface" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="Carte" label_selected="Carte" name="map_button"/>
- <text name="total_contributed_land_label">
- Total des contributions :
- </text>
- <text name="total_contributed_land_value">
- [AREA] m²
- </text>
- <text name="total_land_in_use_label">
- Superficie déjà utilisée :
- </text>
- <text name="total_land_in_use_value">
- [AREA] m²
- </text>
- <text name="land_available_label">
- Superficie disponible :
- </text>
- <text name="land_available_value">
- [AREA] m²
- </text>
- <text name="your_contribution_label">
- Votre contribution :
- </text>
- <string name="land_contrib_error">
- Impossible de définir votre don de terre.
- </string>
- <text name="your_contribution_units">
- ( m² )
- </text>
- <text name="your_contribution_max_value">
- ([AMOUNT] max.)
- </text>
- <text name="group_over_limit_text">
- Une contribution supplémentaire du groupe est requise pour prendre en
-charge le terrain utilisé.
- </text>
- <text name="group_money_heading">
- Finances
- </text>
- <tab_container name="group_money_tab_container">
- <panel label="Planification" name="group_money_planning_tab">
- <text_editor name="group_money_planning_text">
- Calcul en cours...
- </text_editor>
- </panel>
- <panel label="Détails" name="group_money_details_tab">
- <text_editor name="group_money_details_text">
- Calcul en cours...
- </text_editor>
- <button label="&lt; Plus tôt" label_selected="&lt; Plus tôt" name="earlier_details_button" tool_tip="Reculer dans le temps"/>
- <button label="Plus tard &gt;" label_selected="Plus tard &gt;" name="later_details_button" tool_tip="Avancer dans le temps"/>
- </panel>
- <panel label="Ventes" name="group_money_sales_tab">
- <text_editor name="group_money_sales_text">
- Calcul en cours...
- </text_editor>
- <button label="&lt; Plus tôt" label_selected="&lt; Plus tôt" name="earlier_sales_button" tool_tip="Reculer dans le temps"/>
- <button label="Plus tard &gt;" label_selected="Plus tard &gt;" name="later_sales_button" tool_tip="Avancer dans le temps"/>
- </panel>
- </tab_container>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Terrain et L$" name="land_money_tab">
+ <string name="help_text">
+ Les parcelles appartenant au groupe sont indiquées avec le détails des contributions. Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. Les onglets Planification, Détails et Ventes correspondent aux finances du groupe.
+ </string>
+ <button label="?" name="help_button"/>
+ <string name="cant_view_group_land_text">
+ Vous n&apos;avez pas la permission de voir quel terrain possède ce groupe.
+ </string>
+ <string name="cant_view_group_accounting_text">
+ Vous n&apos;avez pas la permission d&apos;accéder aux informations
+financières de ce groupe.
+ </string>
+ <string name="loading_txt">
+ Chargement...
+ </string>
+ <text name="group_land_heading">
+ Terrain du groupe
+ </text>
+ <scroll_list name="group_parcel_list">
+ <column label="Parcelle" name="name"/>
+ <column label="Région" name="location"/>
+ <column label="Type" name="type"/>
+ <column label="Surface" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="Carte" label_selected="Carte" name="map_button"/>
+ <text name="total_contributed_land_label">
+ Total des contributions :
+ </text>
+ <text name="total_contributed_land_value">
+ [AREA] m²
+ </text>
+ <text name="total_land_in_use_label">
+ Superficie déjà utilisée :
+ </text>
+ <text name="total_land_in_use_value">
+ [AREA] m²
+ </text>
+ <text name="land_available_label">
+ Superficie disponible :
+ </text>
+ <text name="land_available_value">
+ [AREA] m²
+ </text>
+ <text name="your_contribution_label">
+ Votre contribution :
+ </text>
+ <string name="land_contrib_error">
+ Impossible de définir votre don de terre.
+ </string>
+ <text name="your_contribution_units">
+ ( m² )
+ </text>
+ <text name="your_contribution_max_value">
+ ([AMOUNT] max.)
+ </text>
+ <text name="group_over_limit_text">
+ Une contribution supplémentaire du groupe est requise pour prendre en
+charge le terrain utilisé.
+ </text>
+ <text name="group_money_heading">
+ Finances
+ </text>
+ <tab_container name="group_money_tab_container">
+ <panel label="Planification" name="group_money_planning_tab">
+ <text_editor name="group_money_planning_text">
+ Calcul en cours...
+ </text_editor>
+ </panel>
+ <panel label="Détails" name="group_money_details_tab">
+ <text_editor name="group_money_details_text">
+ Calcul en cours...
+ </text_editor>
+ <button label="&lt; Plus tôt" label_selected="&lt; Plus tôt" name="earlier_details_button" tool_tip="Reculer dans le temps"/>
+ <button label="Plus tard &gt;" label_selected="Plus tard &gt;" name="later_details_button" tool_tip="Avancer dans le temps"/>
+ </panel>
+ <panel label="Ventes" name="group_money_sales_tab">
+ <text_editor name="group_money_sales_text">
+ Calcul en cours...
+ </text_editor>
+ <button label="&lt; Plus tôt" label_selected="&lt; Plus tôt" name="earlier_sales_button" tool_tip="Reculer dans le temps"/>
+ <button label="Plus tard &gt;" label_selected="Plus tard &gt;" name="later_sales_button" tool_tip="Avancer dans le temps"/>
+ </panel>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
index 15d48c4eb4..a61cb787a8 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="group_list_item">
- <text name="group_name" value="Inconnu"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+ <text name="group_name" value="Inconnu"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index b719f1f07f..432bb8b9c1 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notices" name="notices_tab">
- <text name="help_text">
- Les notices vous permettent d&apos;envoyer des messages et pièces-jointes aux membres du groupe autorisés à les recevoir. Vous pouvez désactiver la réception des notices à l&apos;onglet Général.
- </text>
- <text name="no_notices_text">
- Aucune notice
- </text>
- <button label="?" label_selected="?" name="help_button"/>
- <text name="lbl">
- Anciennes notices du groupe
- </text>
- <text name="lbl2">
- Les notes sont conservées pendant 14 jours. La limite est de 200 notes quotidiennes par groupe.
- </text>
- <scroll_list name="notice_list">
- <column label="" name="icon"/>
- <column label="Sujet" name="subject"/>
- <column label="De" name="from"/>
- <column label="Date" name="date"/>
- </scroll_list>
- <text name="notice_list_none_found">
- Aucun résultat.
- </text>
- <button label="Nouvelle note" label_selected="Créer une notice" name="create_new_notice"/>
- <button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices"/>
- <panel label="Créer une notice" name="panel_create_new_notice">
- <text name="lbl">
- Créer une notice
- </text>
- <text name="lbl2">
- Vous pouvez ajouter un objet simple à la note en le faisant glisser de votre inventaire vers cette section. Les objets joints doivent pouvoir être copiés et transférés. Vous ne pouvez pas envoyer de dossier.
- </text>
- <text bottom_delta="-79" left="20" name="lbl3">
- Sujet :
- </text>
- <line_editor left_delta="61" name="create_subject" width="331"/>
- <text left="20" name="lbl4">
- Message :
- </text>
- <text_editor bottom_delta="-90" height="104" left_delta="61" name="create_message" width="330"/>
- <text name="lbl5" width="68">
- Pièce-jointe :
- </text>
- <line_editor left_delta="74" name="create_inventory_name" width="190"/>
- <button label="Supprimer pièce-jointe" label_selected="Supprimer pièce-jointe" left="274" name="remove_attachment" width="140"/>
- <button label="Envoyer" label_selected="Envoyer" left="274" name="send_notice" width="140"/>
- <panel name="drop_target2" tool_tip="Pour joindre un objet de l&apos;inventaire à la notice, faites-le glisser dans la boîte de message. Pour envoyer l&apos;objet avec la notice, vous devez avoir la permission de le copier et de le transférer."/>
- <panel name="drop_target" tool_tip="Pour joindre un objet de l&apos;inventaire à la notice, faites-le glisser dans la boîte de message. Pour envoyer l&apos;objet avec la notice, vous devez avoir la permission de le copier et de le transférer."/>
- </panel>
- <panel label="Voir ancienne notice" name="panel_view_past_notice">
- <text name="lbl">
- Détails
- </text>
- <text name="lbl2">
- Pour envoyer une nouvelle notice, cliquez sur Créer une notice ci-dessus.
- </text>
- <text name="lbl3">
- Sujet :
- </text>
- <text name="lbl4">
- Message :
- </text>
- <button label="Ouvrir pièce-jointe" label_selected="Ouvrir pièce-jointe" name="open_attachment" width="118"/>
- <line_editor left="128" name="view_inventory_name" width="256"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Notices" name="notices_tab">
+ <text name="help_text">
+ Les notices vous permettent d&apos;envoyer des messages et pièces-jointes aux membres du groupe autorisés à les recevoir. Vous pouvez désactiver la réception des notices à l&apos;onglet Général.
+ </text>
+ <text name="no_notices_text">
+ Aucune notice
+ </text>
+ <button label="?" label_selected="?" name="help_button"/>
+ <text name="lbl">
+ Anciennes notices du groupe
+ </text>
+ <text name="lbl2">
+ Les notes sont conservées pendant 14 jours. La limite est de 200 notes quotidiennes par groupe.
+ </text>
+ <scroll_list name="notice_list">
+ <column label="" name="icon"/>
+ <column label="Sujet" name="subject"/>
+ <column label="De" name="from"/>
+ <column label="Date" name="date"/>
+ </scroll_list>
+ <text name="notice_list_none_found">
+ Aucun résultat.
+ </text>
+ <button label="Nouvelle note" label_selected="Créer une notice" name="create_new_notice"/>
+ <button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices"/>
+ <panel label="Créer une notice" name="panel_create_new_notice">
+ <text name="lbl">
+ Créer une notice
+ </text>
+ <text name="lbl2">
+ Vous pouvez ajouter un objet simple à la note en le faisant glisser de votre inventaire vers cette section. Les objets joints doivent pouvoir être copiés et transférés. Vous ne pouvez pas envoyer de dossier.
+ </text>
+ <text bottom_delta="-79" left="20" name="lbl3">
+ Sujet :
+ </text>
+ <line_editor left_delta="61" name="create_subject" width="331"/>
+ <text left="20" name="lbl4">
+ Message :
+ </text>
+ <text_editor bottom_delta="-90" height="104" left_delta="61" name="create_message" width="330"/>
+ <text name="lbl5" width="68">
+ Pièce-jointe :
+ </text>
+ <line_editor left_delta="74" name="create_inventory_name" width="190"/>
+ <button label="Supprimer pièce-jointe" label_selected="Supprimer pièce-jointe" left="274" name="remove_attachment" width="140"/>
+ <button label="Envoyer" label_selected="Envoyer" left="274" name="send_notice" width="140"/>
+ <panel name="drop_target2" tool_tip="Pour joindre un objet de l&apos;inventaire à la notice, faites-le glisser dans la boîte de message. Pour envoyer l&apos;objet avec la notice, vous devez avoir la permission de le copier et de le transférer."/>
+ <panel name="drop_target" tool_tip="Pour joindre un objet de l&apos;inventaire à la notice, faites-le glisser dans la boîte de message. Pour envoyer l&apos;objet avec la notice, vous devez avoir la permission de le copier et de le transférer."/>
+ </panel>
+ <panel label="Voir ancienne notice" name="panel_view_past_notice">
+ <text name="lbl">
+ Détails
+ </text>
+ <text name="lbl2">
+ Pour envoyer une nouvelle notice, cliquez sur Créer une notice ci-dessus.
+ </text>
+ <text name="lbl3">
+ Sujet :
+ </text>
+ <text name="lbl4">
+ Message :
+ </text>
+ <button label="Ouvrir pièce-jointe" label_selected="Ouvrir pièce-jointe" name="open_attachment" width="118"/>
+ <line_editor left="128" name="view_inventory_name" width="256"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
index 1b716babc6..65aaab40f1 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
@@ -1,113 +1,113 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Membres et rôles" name="roles_tab">
- <panel.string name="default_needs_apply_text">
- Certains changements n&apos;ont pas été appliqués sur ce sous-onglet.
- </panel.string>
- <panel.string name="want_apply_text">
- Voulez-vous enregistrer les modifications ?
- </panel.string>
- <tab_container height="164" name="roles_tab_container">
- <panel height="148" label="Membres" name="members_sub_tab" tool_tip="Membres">
- <panel.string name="help_text">
- Vous pouvez ajouter ou supprimer les rôles assignés aux membres.
-Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la touche Ctrl enfoncée.
- </panel.string>
- <filter_editor label="Filtrer les membres" name="filter_input"/>
- <name_list bottom_delta="-105" height="104" name="member_list">
- <name_list.columns label="Membre" name="name"/>
- <name_list.columns label="Donations" name="donated" width="116"/>
- <name_list.columns label="En ligne" name="online" width="136"/>
- </name_list>
- <button label="Inviter" name="member_invite" width="165"/>
- <button label="Expulser" name="member_eject"/>
- </panel>
- <panel height="148" label="Rôles" name="roles_sub_tab">
- <panel.string name="help_text">
- Chaque rôle possède un titre et des pouvoirs. Un membre peut avoir plusieurs rôles mais il ne peut y avoir que 10 rôles dans un groupe, Visiteur et Propriétaire inclus.
- </panel.string>
- <panel.string name="cant_delete_role">
- Les rôles Tous et Propriétaires sont spéciaux et ne peuvent pas être supprimés.
- </panel.string>
- <filter_editor label="Filtrer les rôles" name="filter_input"/>
- <scroll_list bottom_delta="-104" height="104" name="role_list">
- <scroll_list.columns label="Rôle" name="name"/>
- <scroll_list.columns label="Titre" name="title"/>
- <scroll_list.columns label="Membres" name="members"/>
- </scroll_list>
- <button label="Ajouter un rôle" name="role_create"/>
- <button label="Supprimer le rôle" name="role_delete"/>
- </panel>
- <panel height="148" label="Pouvoirs" name="actions_sub_tab" tool_tip="Vous pouvez afficher une description du pouvoir et voir quels membres et rôles peuvent s&apos;en servir.">
- <panel.string name="help_text">
- Les pouvoirs déterminent les facultés de chaque membre dans le groupe.
- </panel.string>
- <filter_editor label="Filtrer les pouvoirs" name="filter_input"/>
- <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Sélectionnez un pouvoir pour en afficher les détails.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- </tab_container>
- <panel name="members_footer">
- <text name="static">
- Rôles assignés
- </text>
- <scroll_list name="member_assigned_roles">
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="role"/>
- </scroll_list>
- <text name="static2">
- Pouvoirs attribués
- </text>
- <scroll_list name="member_allowed_actions" tool_tip="Pour avoir des détails sur chacun des pouvoirs attribués, allez à l&apos;onglet Pouvoirs.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="roles_footer">
- <text name="static">
- Nom
- </text>
- <line_editor name="role_name">
- Employés
- </line_editor>
- <text name="static3">
- Titre
- </text>
- <line_editor name="role_title">
- (en attente)
- </line_editor>
- <text name="static2">
- Description
- </text>
- <text_editor name="role_description">
- (en attente)
- </text_editor>
- <text name="static4">
- Membres assignés
- </text>
- <check_box label="Membres visibles" name="role_visible_in_list" tool_tip="Définit si les membres de ce rôle sont visibles à partir de l&apos;onglet Général aux personnes en dehors du groupe."/>
- <text name="static5" tool_tip="Une liste des pouvoirs auquel le rôle sélectionné a accès.">
- Pouvoirs attribués
- </text>
- <scroll_list name="role_allowed_actions" tool_tip="Pour avoir des détails sur chacun des pouvoirs attribués, allez à l&apos;onglet Pouvoirs.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="actions_footer">
- <text name="static">
- Description
- </text>
- <text_editor name="action_description">
- Ce pouvoir permet d&apos;expulser des membres du groupe. Seul un propriétaire peut expulser un autre propriétaire.
- </text_editor>
- <text name="static2">
- Rôles avec ce pouvoir
- </text>
- <text name="static3">
- Membres avec ce pouvoir
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Membres et rôles" name="roles_tab">
+ <panel.string name="default_needs_apply_text">
+ Certains changements n&apos;ont pas été appliqués sur ce sous-onglet.
+ </panel.string>
+ <panel.string name="want_apply_text">
+ Voulez-vous enregistrer les modifications ?
+ </panel.string>
+ <tab_container height="164" name="roles_tab_container">
+ <panel height="148" label="Membres" name="members_sub_tab" tool_tip="Membres">
+ <panel.string name="help_text">
+ Vous pouvez ajouter ou supprimer les rôles assignés aux membres.
+Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la touche Ctrl enfoncée.
+ </panel.string>
+ <filter_editor label="Filtrer les membres" name="filter_input"/>
+ <name_list bottom_delta="-105" height="104" name="member_list">
+ <name_list.columns label="Membre" name="name"/>
+ <name_list.columns label="Donations" name="donated" width="116"/>
+ <name_list.columns label="En ligne" name="online" width="136"/>
+ </name_list>
+ <button label="Inviter" name="member_invite" width="165"/>
+ <button label="Expulser" name="member_eject"/>
+ </panel>
+ <panel height="148" label="Rôles" name="roles_sub_tab">
+ <panel.string name="help_text">
+ Chaque rôle possède un titre et des pouvoirs. Un membre peut avoir plusieurs rôles mais il ne peut y avoir que 10 rôles dans un groupe, Visiteur et Propriétaire inclus.
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ Les rôles Tous et Propriétaires sont spéciaux et ne peuvent pas être supprimés.
+ </panel.string>
+ <filter_editor label="Filtrer les rôles" name="filter_input"/>
+ <scroll_list bottom_delta="-104" height="104" name="role_list">
+ <scroll_list.columns label="Rôle" name="name"/>
+ <scroll_list.columns label="Titre" name="title"/>
+ <scroll_list.columns label="Membres" name="members"/>
+ </scroll_list>
+ <button label="Ajouter un rôle" name="role_create"/>
+ <button label="Supprimer le rôle" name="role_delete"/>
+ </panel>
+ <panel height="148" label="Pouvoirs" name="actions_sub_tab" tool_tip="Vous pouvez afficher une description du pouvoir et voir quels membres et rôles peuvent s&apos;en servir.">
+ <panel.string name="help_text">
+ Les pouvoirs déterminent les facultés de chaque membre dans le groupe.
+ </panel.string>
+ <filter_editor label="Filtrer les pouvoirs" name="filter_input"/>
+ <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Sélectionnez un pouvoir pour en afficher les détails.">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ </tab_container>
+ <panel name="members_footer">
+ <text name="static">
+ Rôles assignés
+ </text>
+ <scroll_list name="member_assigned_roles">
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="role"/>
+ </scroll_list>
+ <text name="static2">
+ Pouvoirs attribués
+ </text>
+ <scroll_list name="member_allowed_actions" tool_tip="Pour avoir des détails sur chacun des pouvoirs attribués, allez à l&apos;onglet Pouvoirs.">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ <panel name="roles_footer">
+ <text name="static">
+ Nom
+ </text>
+ <line_editor name="role_name">
+ Employés
+ </line_editor>
+ <text name="static3">
+ Titre
+ </text>
+ <line_editor name="role_title">
+ (en attente)
+ </line_editor>
+ <text name="static2">
+ Description
+ </text>
+ <text_editor name="role_description">
+ (en attente)
+ </text_editor>
+ <text name="static4">
+ Membres assignés
+ </text>
+ <check_box label="Membres visibles" name="role_visible_in_list" tool_tip="Définit si les membres de ce rôle sont visibles à partir de l&apos;onglet Général aux personnes en dehors du groupe."/>
+ <text name="static5" tool_tip="Une liste des pouvoirs auquel le rôle sélectionné a accès.">
+ Pouvoirs attribués
+ </text>
+ <scroll_list name="role_allowed_actions" tool_tip="Pour avoir des détails sur chacun des pouvoirs attribués, allez à l&apos;onglet Pouvoirs.">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ <panel name="actions_footer">
+ <text name="static">
+ Description
+ </text>
+ <text_editor name="action_description">
+ Ce pouvoir permet d&apos;expulser des membres du groupe. Seul un propriétaire peut expulser un autre propriétaire.
+ </text_editor>
+ <text name="static2">
+ Rôles avec ce pouvoir
+ </text>
+ <text name="static3">
+ Membres avec ce pouvoir
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
index 7f8f03f9ab..340ca75d19 100644
--- a/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/fr/panel_im_control_panel.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <button label="Voir le profil" name="view_profile_btn"/>
- <button label="Devenir amis" name="add_friend_btn"/>
- <button label="Partager" name="share_btn"/>
- <panel name="panel_call_buttons">
- <button label="Appeler" name="call_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <button label="Voir le profil" name="view_profile_btn"/>
+ <button label="Devenir amis" name="add_friend_btn"/>
+ <button label="Partager" name="share_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="Appeler" name="call_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index 3c174aa45b..284590cd5d 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <panel name="login_widgets">
- <line_editor name="first_name_edit" tool_tip="Prénom sur [SECOND_LIFE]"/>
- <line_editor name="last_name_edit" tool_tip="Nom sur [SECOND_LIFE]"/>
- <text name="start_location_text">
- Lieu de départ :
- </text>
- <text name="create_new_account_text">
- Créer un compte
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <panel.string name="create_account_url">
+ http://secondlife.com/registration/
+ </panel.string>
+ <panel.string name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </panel.string>
+ <panel name="login_widgets">
+ <line_editor name="first_name_edit" tool_tip="Prénom sur [SECOND_LIFE]"/>
+ <line_editor name="last_name_edit" tool_tip="Nom sur [SECOND_LIFE]"/>
+ <text name="start_location_text">
+ Lieu de départ :
+ </text>
+ <text name="create_new_account_text">
+ Créer un compte
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
index 7aa8f24404..c236c59fbc 100644
--- a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
- <line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_picks.xml b/indra/newview/skins/default/xui/fr/panel_picks.xml
index 534af5ed3f..25aeac9e75 100644
--- a/indra/newview/skins/default/xui/fr/panel_picks.xml
+++ b/indra/newview/skins/default/xui/fr/panel_picks.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Favoris" name="panel_picks">
- <panel label="bottom_panel" name="edit_panel">
- <button name="new_btn" tool_tip="Ajouter cet endroit à mes Favoris"/>
- </panel>
- <panel name="buttons_cucks">
- <button label="Carte" name="show_on_map_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Favoris" name="panel_picks">
+ <panel label="bottom_panel" name="edit_panel">
+ <button name="new_btn" tool_tip="Ajouter cet endroit à mes Favoris"/>
+ </panel>
+ <panel name="buttons_cucks">
+ <button label="Carte" name="show_on_map_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index 1f7c9a57dc..e2d00a2421 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Chat écrit" name="chat">
- <radio_group name="chat_font_size">
- <radio_item label="Petite" name="radio"/>
- <radio_item label="Moyenne" name="radio2"/>
- <radio_item label="Grande" name="radio3"/>
- </radio_group>
- <color_swatch label="Vous" name="user"/>
- <text name="text_box1">
- Moi
- </text>
- <color_swatch label="Avatars" name="agent"/>
- <text name="text_box2">
- Avatars
- </text>
- <color_swatch label="IM" name="im"/>
- <text name="text_box3">
- IM
- </text>
- <color_swatch label="Système" name="system"/>
- <text name="text_box4">
- Système
- </text>
- <color_swatch label="Erreurs de script" name="script_error"/>
- <text name="text_box5">
- Erreurs de script
- </text>
- <color_swatch label="Objets" name="objects"/>
- <text name="text_box6">
- Objets
- </text>
- <color_swatch label="Propriétaire" name="owner"/>
- <text name="text_box7">
- Propriétaire
- </text>
- <color_swatch label="URL" name="links"/>
- <text name="text_box9">
- URL
- </text>
- <check_box initial_value="true" label="Jouer l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
- <check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Chat écrit" name="chat">
+ <radio_group name="chat_font_size">
+ <radio_item label="Petite" name="radio"/>
+ <radio_item label="Moyenne" name="radio2"/>
+ <radio_item label="Grande" name="radio3"/>
+ </radio_group>
+ <color_swatch label="Vous" name="user"/>
+ <text name="text_box1">
+ Moi
+ </text>
+ <color_swatch label="Avatars" name="agent"/>
+ <text name="text_box2">
+ Avatars
+ </text>
+ <color_swatch label="IM" name="im"/>
+ <text name="text_box3">
+ IM
+ </text>
+ <color_swatch label="Système" name="system"/>
+ <text name="text_box4">
+ Système
+ </text>
+ <color_swatch label="Erreurs de script" name="script_error"/>
+ <text name="text_box5">
+ Erreurs de script
+ </text>
+ <color_swatch label="Objets" name="objects"/>
+ <text name="text_box6">
+ Objets
+ </text>
+ <color_swatch label="Propriétaire" name="owner"/>
+ <text name="text_box7">
+ Propriétaire
+ </text>
+ <color_swatch label="URL" name="links"/>
+ <text name="text_box9">
+ URL
+ </text>
+ <check_box initial_value="true" label="Jouer l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
+ <check_box label="M&apos;envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 2afd7152cb..6a469c7322 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -1,116 +1,116 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Graphiques" name="Display panel">
- <text name="WindowSizeLabel">
- Taille de la fenêtre :
- </text>
- <check_box label="Utiliser le plein écran" name="windowed mode"/>
- <combo_box name="windowsize combo">
- <combo_box.item label="640 x 480" name="640x480"/>
- <combo_box.item label="800 x 600" name="800x600"/>
- <combo_box.item label="720 x 480 (NTSC)" name="720x480"/>
- <combo_box.item label="768 x 576 (PAL)" name="768x576"/>
- <combo_box.item label="1024 x 768" name="1024x768"/>
- </combo_box>
- <text name="UI Size:">
- Taille de l&apos;IU :
- </text>
- <text name="QualitySpeed">
- Qualité et vitesse :
- </text>
- <text left="105" name="FasterText">
- Plus rapide
- </text>
- <text name="BetterText">
- Mieux
- </text>
- <text name="ShadersPrefText">
- Faible
- </text>
- <text name="ShadersPrefText2">
- Moyen
- </text>
- <text name="ShadersPrefText3">
- Élevé
- </text>
- <text name="ShadersPrefText4">
- Ultra
- </text>
- <panel label="CustomGraphics" name="CustomGraphics Panel">
- <text name="ShadersText">
- Effets :
- </text>
- <check_box initial_value="true" label="Placage de relief et brillance" name="BumpShiny"/>
- <check_box initial_value="true" label="Effets de base" name="BasicShaders" tool_tip="Désactiver cette option peut empêcher certains drivers de cartes graphiques de planter."/>
- <check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="Reflets de l&apos;eau" name="Reflections"/>
- <text name="ReflectionDetailText">
- Objets reflétés :
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item label="Terrain et Arbres" name="0"/>
- <radio_item label="Objets statiques" name="1"/>
- <radio_item label="Objets et avatars" name="2"/>
- <radio_item label="Tout" name="3"/>
- </radio_group>
- <text name="AvatarRenderingText">
- Rendu de l&apos;avatar :
- </text>
- <check_box initial_value="true" label="Avatars éloignés en 2D" name="AvatarImpostors"/>
- <check_box initial_value="true" label="Accélération du rendu" name="AvatarVertexProgram"/>
- <check_box initial_value="true" label="Mouvement des habits" name="AvatarCloth"/>
- <slider label="Limite d&apos;affichage :" name="DrawDistance"/>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="Nombre de particules max. :" label_width="143" name="MaxParticleCount"/>
- <slider label="Qualité post-traitement :" name="RenderPostProcess"/>
- <text name="MeshDetailText">
- Détails des rendus :
- </text>
- <slider label=" Objets :" name="ObjectMeshDetail"/>
- <slider label=" Flexiprims :" name="FlexibleMeshDetail"/>
- <slider label=" Arbres :" name="TreeMeshDetail"/>
- <slider label=" Avatars :" name="AvatarMeshDetail"/>
- <slider label=" Relief :" name="TerrainMeshDetail"/>
- <slider label=" Ciel :" name="SkyMeshDetail"/>
- <text name="PostProcessText">
- Faible
- </text>
- <text name="ObjectMeshDetailText">
- Faible
- </text>
- <text name="FlexibleMeshDetailText">
- Faible
- </text>
- <text name="TreeMeshDetailText">
- Faible
- </text>
- <text name="AvatarMeshDetailText">
- Faible
- </text>
- <text name="TerrainMeshDetailText">
- Faible
- </text>
- <text name="SkyMeshDetailText">
- Faible
- </text>
- <text name="LightingDetailText">
- Sources lumineuses :
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item label="Soleil et lune uniquement" name="SunMoon"/>
- <radio_item label="Lumières à proximité" name="LocalLights"/>
- </radio_group>
- <text left="380" name="TerrainDetailText">
- Rendu du terrain :
- </text>
- <radio_group name="TerrainDetailRadio">
- <radio_item label="Faible" name="0"/>
- <radio_item label="Élevé" name="2"/>
- </radio_group>
- </panel>
- <button label="Appliquer" label_selected="Appliquer" name="Apply"/>
- <button label="Réinitialiser" name="Defaults"/>
- <button label="Avancé" name="Advanced"/>
- <button label="Matériel" label_selected="Matériel" name="GraphicsHardwareButton"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Graphiques" name="Display panel">
+ <text name="WindowSizeLabel">
+ Taille de la fenêtre :
+ </text>
+ <check_box label="Utiliser le plein écran" name="windowed mode"/>
+ <combo_box name="windowsize combo">
+ <combo_box.item label="640 x 480" name="640x480"/>
+ <combo_box.item label="800 x 600" name="800x600"/>
+ <combo_box.item label="720 x 480 (NTSC)" name="720x480"/>
+ <combo_box.item label="768 x 576 (PAL)" name="768x576"/>
+ <combo_box.item label="1024 x 768" name="1024x768"/>
+ </combo_box>
+ <text name="UI Size:">
+ Taille de l&apos;IU :
+ </text>
+ <text name="QualitySpeed">
+ Qualité et vitesse :
+ </text>
+ <text left="105" name="FasterText">
+ Plus rapide
+ </text>
+ <text name="BetterText">
+ Mieux
+ </text>
+ <text name="ShadersPrefText">
+ Faible
+ </text>
+ <text name="ShadersPrefText2">
+ Moyen
+ </text>
+ <text name="ShadersPrefText3">
+ Élevé
+ </text>
+ <text name="ShadersPrefText4">
+ Ultra
+ </text>
+ <panel label="CustomGraphics" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ Effets :
+ </text>
+ <check_box initial_value="true" label="Placage de relief et brillance" name="BumpShiny"/>
+ <check_box initial_value="true" label="Effets de base" name="BasicShaders" tool_tip="Désactiver cette option peut empêcher certains drivers de cartes graphiques de planter."/>
+ <check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="Reflets de l&apos;eau" name="Reflections"/>
+ <text name="ReflectionDetailText">
+ Objets reflétés :
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item label="Terrain et Arbres" name="0"/>
+ <radio_item label="Objets statiques" name="1"/>
+ <radio_item label="Objets et avatars" name="2"/>
+ <radio_item label="Tout" name="3"/>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ Rendu de l&apos;avatar :
+ </text>
+ <check_box initial_value="true" label="Avatars éloignés en 2D" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="Accélération du rendu" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="Mouvement des habits" name="AvatarCloth"/>
+ <slider label="Limite d&apos;affichage :" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Nombre de particules max. :" label_width="143" name="MaxParticleCount"/>
+ <slider label="Qualité post-traitement :" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ Détails des rendus :
+ </text>
+ <slider label=" Objets :" name="ObjectMeshDetail"/>
+ <slider label=" Flexiprims :" name="FlexibleMeshDetail"/>
+ <slider label=" Arbres :" name="TreeMeshDetail"/>
+ <slider label=" Avatars :" name="AvatarMeshDetail"/>
+ <slider label=" Relief :" name="TerrainMeshDetail"/>
+ <slider label=" Ciel :" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ Faible
+ </text>
+ <text name="ObjectMeshDetailText">
+ Faible
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Faible
+ </text>
+ <text name="TreeMeshDetailText">
+ Faible
+ </text>
+ <text name="AvatarMeshDetailText">
+ Faible
+ </text>
+ <text name="TerrainMeshDetailText">
+ Faible
+ </text>
+ <text name="SkyMeshDetailText">
+ Faible
+ </text>
+ <text name="LightingDetailText">
+ Sources lumineuses :
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item label="Soleil et lune uniquement" name="SunMoon"/>
+ <radio_item label="Lumières à proximité" name="LocalLights"/>
+ </radio_group>
+ <text left="380" name="TerrainDetailText">
+ Rendu du terrain :
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item label="Faible" name="0"/>
+ <radio_item label="Élevé" name="2"/>
+ </radio_group>
+ </panel>
+ <button label="Appliquer" label_selected="Appliquer" name="Apply"/>
+ <button label="Réinitialiser" name="Defaults"/>
+ <button label="Avancé" name="Advanced"/>
+ <button label="Matériel" label_selected="Matériel" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
index c1a6d45089..3beaaf5c79 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Communication" name="im">
- <panel.string name="log_in_to_change">
- se connecter pour changer
- </panel.string>
- <button label="Vider le cache" name="clear_cache"/>
- <text name="cache_size_label_l">
- (Endroits, images, web, historique des recherches)
- </text>
- <check_box label="Seuls mes amis et groupes voient quand je suis en ligne" name="online_visibility"/>
- <check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
- <check_box label="Fermer le micro à la fin d&apos;un appel" name="auto_disengage_mic_check"/>
- <check_box label="Accepter les cookies" name="cookies_enabled"/>
- <check_box label="Sauvegarder les journaux sur mon ordinateur" name="log_instant_messages"/>
- <radio_group name="ChatIMLogs">
- <radio_item label="Chat" name="radio1"/>
- <radio_item label="IM" name="radio2"/>
- </radio_group>
- <line_editor left="308" name="log_path_string" right="-20"/>
- <button label="Parcourir" label_selected="Parcourir" name="log_path_button" width="150"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Communication" name="im">
+ <panel.string name="log_in_to_change">
+ se connecter pour changer
+ </panel.string>
+ <button label="Vider le cache" name="clear_cache"/>
+ <text name="cache_size_label_l">
+ (Endroits, images, web, historique des recherches)
+ </text>
+ <check_box label="Seuls mes amis et groupes voient quand je suis en ligne" name="online_visibility"/>
+ <check_box label="Seuls mes amis et groupes peuvent m&apos;appeler ou m&apos;envoyer un IM" name="voice_call_friends_only_check"/>
+ <check_box label="Fermer le micro à la fin d&apos;un appel" name="auto_disengage_mic_check"/>
+ <check_box label="Accepter les cookies" name="cookies_enabled"/>
+ <check_box label="Sauvegarder les journaux sur mon ordinateur" name="log_instant_messages"/>
+ <radio_group name="ChatIMLogs">
+ <radio_item label="Chat" name="radio1"/>
+ <radio_item label="IM" name="radio2"/>
+ </radio_group>
+ <line_editor left="308" name="log_path_string" right="-20"/>
+ <button label="Parcourir" label_selected="Parcourir" name="log_path_button" width="150"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
index 7f6c7c57bd..2e8f5e9a8b 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
@@ -1,46 +1,46 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Contrôle et caméra" name="Input panel">
- <button label="Autres accessoires" name="joystick_setup_button" width="175"/>
- <text name="Mouselook:">
- Vue subjective :
- </text>
- <text name=" Mouse Sensitivity">
- Sensibilité de la souris
- </text>
- <check_box label="Inverser" name="invert_mouse"/>
- <text name="Network:">
- Réseau :
- </text>
- <text name="Maximum bandwidth">
- Bande passante maximale
- </text>
- <text name="text_box2">
- kbps
- </text>
- <check_box label="Port de connexion personnalisé" name="connection_port_enabled"/>
- <spinner label="Numéro de port :" name="web_proxy_port"/>
- <text name="cache_size_label_l">
- Taille de la mémoire
- </text>
- <text name="text_box5">
- Mo
- </text>
- <button label="Parcourir" label_selected="Parcourir" name="set_cache"/>
- <button label="Réinitialiser" label_selected="Choisir" name="reset_cache"/>
- <text name="Cache location">
- Emplacement du cache
- </text>
- <text name="Web:">
- Web :
- </text>
- <radio_group name="use_external_browser">
- <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l&apos;aide, ouvrir des liens etc. Ce navigateur s&apos;ouvre dans [APP_NAME]."/>
- <radio_item label="Utiliser mon navigateur (IE, Firefox etc.)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l&apos;aide, les liens etc. Non recommandé en mode plein écran."/>
- </radio_group>
- <check_box initial_value="false" label="Proxy web" name="web_proxy_enabled"/>
- <line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/>
- <button label="Parcourir" label_selected="Parcourir" name="set_proxy"/>
- <text name="Proxy location">
- Emplacement du proxy
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Contrôle et caméra" name="Input panel">
+ <button label="Autres accessoires" name="joystick_setup_button" width="175"/>
+ <text name="Mouselook:">
+ Vue subjective :
+ </text>
+ <text name=" Mouse Sensitivity">
+ Sensibilité de la souris
+ </text>
+ <check_box label="Inverser" name="invert_mouse"/>
+ <text name="Network:">
+ Réseau :
+ </text>
+ <text name="Maximum bandwidth">
+ Bande passante maximale
+ </text>
+ <text name="text_box2">
+ kbps
+ </text>
+ <check_box label="Port de connexion personnalisé" name="connection_port_enabled"/>
+ <spinner label="Numéro de port :" name="web_proxy_port"/>
+ <text name="cache_size_label_l">
+ Taille de la mémoire
+ </text>
+ <text name="text_box5">
+ Mo
+ </text>
+ <button label="Parcourir" label_selected="Parcourir" name="set_cache"/>
+ <button label="Réinitialiser" label_selected="Choisir" name="reset_cache"/>
+ <text name="Cache location">
+ Emplacement du cache
+ </text>
+ <text name="Web:">
+ Web :
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l&apos;aide, ouvrir des liens etc. Ce navigateur s&apos;ouvre dans [APP_NAME]."/>
+ <radio_item label="Utiliser mon navigateur (IE, Firefox etc.)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l&apos;aide, les liens etc. Non recommandé en mode plein écran."/>
+ </radio_group>
+ <check_box initial_value="false" label="Proxy web" name="web_proxy_enabled"/>
+ <line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/>
+ <button label="Parcourir" label_selected="Parcourir" name="set_proxy"/>
+ <text name="Proxy location">
+ Emplacement du proxy
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
index c002c55c23..3c38da3eb9 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Audio et vidéo" name="Preference Media panel">
- <slider label="Volume principal" name="System Volume"/>
- <slider label="Son ambiant" name="Wind Volume"/>
- <slider label="Sons" name="SFX Volume"/>
- <slider label="Média" name="Media Volume"/>
- <slider label="Interface" name="UI Volume"/>
- <slider label="Musique" name="Music Volume"/>
- <slider label="Voix" name="Voice Volume"/>
- <text_editor name="voice_unavailable">
- Le chat vocal n&apos;est pas disponible
- </text_editor>
- <check_box label="Chat vocal" name="enable_voice_check"/>
- <radio_group name="ear_location">
- <radio_item label="Écouter depuis la position de la caméra" name="0"/>
- <radio_item label="Écouter depuis la position de l&apos;avatar" name="1"/>
- </radio_group>
- <button label="Paramètres du matériel" name="device_settings_btn"/>
- <text name="muting_text">
- Volume :
- </text>
- <panel name="Volume Panel" width="249"/>
- <check_box label="Couper le son" name="disable audio"/>
- <text bottom="-195" name="streaming_prefs_text" width="145">
- Média :
- </text>
- <text name="audio_prefs_text">
- Audio :
- </text>
- <panel label="Volume" name="Volume Panel"/>
- <check_box label="Couper le son quand minimisé" name="mute_when_minimized"/>
- <check_box label="Jouer la musique disponible" name="streaming_music"/>
- <check_box label="Jouer le média disponible" name="streaming_video"/>
- <check_box label="Lire automatiquement le média" name="auto_streaming_video"/>
- <slider label="Effet Doppler" label_width="115" name="Doppler Effect"/>
- <slider label="Facteur d&apos;éloignement" label_width="115" name="Distance Factor"/>
- <slider label="Facteur d&apos;atténuation" label_width="115" name="Rolloff Factor"/>
- <spinner label="Alerte L$" name="L$ Change Threshold"/>
- <spinner label="Alerte santé" name="Health Change Threshold"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Audio et vidéo" name="Preference Media panel">
+ <slider label="Volume principal" name="System Volume"/>
+ <slider label="Son ambiant" name="Wind Volume"/>
+ <slider label="Sons" name="SFX Volume"/>
+ <slider label="Média" name="Media Volume"/>
+ <slider label="Interface" name="UI Volume"/>
+ <slider label="Musique" name="Music Volume"/>
+ <slider label="Voix" name="Voice Volume"/>
+ <text_editor name="voice_unavailable">
+ Le chat vocal n&apos;est pas disponible
+ </text_editor>
+ <check_box label="Chat vocal" name="enable_voice_check"/>
+ <radio_group name="ear_location">
+ <radio_item label="Écouter depuis la position de la caméra" name="0"/>
+ <radio_item label="Écouter depuis la position de l&apos;avatar" name="1"/>
+ </radio_group>
+ <button label="Paramètres du matériel" name="device_settings_btn"/>
+ <text name="muting_text">
+ Volume :
+ </text>
+ <panel name="Volume Panel" width="249"/>
+ <check_box label="Couper le son" name="disable audio"/>
+ <text bottom="-195" name="streaming_prefs_text" width="145">
+ Média :
+ </text>
+ <text name="audio_prefs_text">
+ Audio :
+ </text>
+ <panel label="Volume" name="Volume Panel"/>
+ <check_box label="Couper le son quand minimisé" name="mute_when_minimized"/>
+ <check_box label="Jouer la musique disponible" name="streaming_music"/>
+ <check_box label="Jouer le média disponible" name="streaming_video"/>
+ <check_box label="Lire automatiquement le média" name="auto_streaming_video"/>
+ <slider label="Effet Doppler" label_width="115" name="Doppler Effect"/>
+ <slider label="Facteur d&apos;éloignement" label_width="115" name="Distance Factor"/>
+ <slider label="Facteur d&apos;atténuation" label_width="115" name="Rolloff Factor"/>
+ <spinner label="Alerte L$" name="L$ Change Threshold"/>
+ <spinner label="Alerte santé" name="Health Change Threshold"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
index bd67605d9f..e13de7a5d1 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile.xml
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=en
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/account"/>
- <string name="no_partner_text" value="Aucun"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="title_sl_descr_text" value="[SECOND_LIFE] :"/>
- </panel>
- <panel name="first_life_image_panel">
- <text name="title_rw_descr_text" value="Monde physique :"/>
- </panel>
- <text name="me_homepage_text">
- Page d&apos;accueil :
- </text>
- <text name="title_member_text" value="Membre depuis :"/>
- <text name="title_acc_status_text" value="Statut du compte :"/>
- <text name="title_partner_text" value="Partenaire :"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="title_groups_text" value="Groupes :"/>
- </panel>
- </scroll_container>
- <panel name="profile_buttons_panel">
- <button label="Devenir amis" name="add_friend"/>
- <button label="IM" name="im"/>
- <button label="Appeler" name="call"/>
- <button label="Téléporter" name="teleport"/>
- </panel>
- <panel name="profile_me_buttons_panel">
- <button label="Modifier le profil" name="edit_profile_btn"/>
- <button label="Changer d&apos;apparence" name="edit_appearance_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil" name="panel_profile">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="payment_update_link_url">
+ http://www.secondlife.com/account/billing.php?lang=en
+ </string>
+ <string name="my_account_link_url" value="http://secondlife.com/account"/>
+ <string name="no_partner_text" value="Aucun"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <text name="title_sl_descr_text" value="[SECOND_LIFE] :"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="title_rw_descr_text" value="Monde physique :"/>
+ </panel>
+ <text name="me_homepage_text">
+ Page d&apos;accueil :
+ </text>
+ <text name="title_member_text" value="Membre depuis :"/>
+ <text name="title_acc_status_text" value="Statut du compte :"/>
+ <text name="title_partner_text" value="Partenaire :"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="title_groups_text" value="Groupes :"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="Devenir amis" name="add_friend"/>
+ <button label="IM" name="im"/>
+ <button label="Appeler" name="call"/>
+ <button label="Téléporter" name="teleport"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="Modifier le profil" name="edit_profile_btn"/>
+ <button label="Changer d&apos;apparence" name="edit_appearance_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile_view.xml b/indra/newview/skins/default/xui/fr/panel_profile_view.xml
index 44539ddba4..928df67e4c 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile_view.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- En ligne
- </string>
- <string name="status_offline">
- Hors ligne
- </string>
- <text name="user_name" value="(en cours de chargement...)"/>
- <text name="status" value="En ligne"/>
- <tab_container name="tabs">
- <panel label="Profil" name="panel_profile"/>
- <panel label="Favoris" name="panel_picks"/>
- </tab_container>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+ <string name="status_online">
+ En ligne
+ </string>
+ <string name="status_offline">
+ Hors ligne
+ </string>
+ <text name="user_name" value="(en cours de chargement...)"/>
+ <text name="status" value="En ligne"/>
+ <tab_container name="tabs">
+ <panel label="Profil" name="panel_profile"/>
+ <panel label="Favoris" name="panel_picks"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
index 5790efe2f8..7256fe4109 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="script panel">
- <panel.string name="loading">
- Chargement…
- </panel.string>
- <panel.string name="can_not_view">
- Ce scipt ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l&apos;intérieur d&apos;un objet, vous devez avoir les permissions requises.
- </panel.string>
- <panel.string name="public_objects_can_not_run">
- Les objets publics ne peuvent pas exécuter de scripts
- </panel.string>
- <panel.string name="script_running">
- Exécution en cours
- </panel.string>
- <panel.string name="Title">
- Script : [NAME]
- </panel.string>
- <text_editor name="Script Editor">
- Chargement…
- </text_editor>
- <button label="Enregistrer" label_selected="Enregistrer" name="Save_btn"/>
- <combo_box label="Insérer..." name="Insert..."/>
- <menu_bar name="script_menu">
- <menu label="Fichier" name="File">
- <menu_item_call label="Enregistrer" name="Save"/>
- <menu_item_call label="Annuler tous les changements" name="Revert All Changes"/>
- </menu>
- <menu label="Éditer" name="Edit">
- <menu_item_call label="Annuler" name="Undo"/>
- <menu_item_call label="Refaire" name="Redo"/>
- <menu_item_call label="Couper" name="Cut"/>
- <menu_item_call label="Copier" name="Copy"/>
- <menu_item_call label="Coller" name="Paste"/>
- <menu_item_call label="Tout sélectionner" name="Select All"/>
- <menu_item_call label="Désélectionner" name="Deselect"/>
- <menu_item_call label="Rechercher / Remplacer..." name="Search / Replace..."/>
- </menu>
- <menu label="Aide" name="Help">
- <menu_item_call label="Aide..." name="Help..."/>
- <menu_item_call label="Aide par mots-clés..." name="Keyword Help..."/>
- </menu>
- </menu_bar>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ Chargement…
+ </panel.string>
+ <panel.string name="can_not_view">
+ Ce scipt ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l&apos;intérieur d&apos;un objet, vous devez avoir les permissions requises.
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ Les objets publics ne peuvent pas exécuter de scripts
+ </panel.string>
+ <panel.string name="script_running">
+ Exécution en cours
+ </panel.string>
+ <panel.string name="Title">
+ Script : [NAME]
+ </panel.string>
+ <text_editor name="Script Editor">
+ Chargement…
+ </text_editor>
+ <button label="Enregistrer" label_selected="Enregistrer" name="Save_btn"/>
+ <combo_box label="Insérer..." name="Insert..."/>
+ <menu_bar name="script_menu">
+ <menu label="Fichier" name="File">
+ <menu_item_call label="Enregistrer" name="Save"/>
+ <menu_item_call label="Annuler tous les changements" name="Revert All Changes"/>
+ </menu>
+ <menu label="Éditer" name="Edit">
+ <menu_item_call label="Annuler" name="Undo"/>
+ <menu_item_call label="Refaire" name="Redo"/>
+ <menu_item_call label="Couper" name="Cut"/>
+ <menu_item_call label="Copier" name="Copy"/>
+ <menu_item_call label="Coller" name="Paste"/>
+ <menu_item_call label="Tout sélectionner" name="Select All"/>
+ <menu_item_call label="Désélectionner" name="Deselect"/>
+ <menu_item_call label="Rechercher / Remplacer..." name="Search / Replace..."/>
+ </menu>
+ <menu label="Aide" name="Help">
+ <menu_item_call label="Aide..." name="Help..."/>
+ <menu_item_call label="Aide par mots-clés..." name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml
index 9a2567c831..ee4e8a6be6 100644
--- a/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/fr/panel_stand_stop_flying.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
-<panel name="panel_stand_stop_flying">
- <button label="Me lever" name="stand_btn" tool_tip="Cliquez ici pour vous lever."/>
- <button label="Atterrir" name="stop_fly_btn" tool_tip="Atterrir"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+ <button label="Me lever" name="stand_btn" tool_tip="Cliquez ici pour vous lever."/>
+ <button label="Atterrir" name="stop_fly_btn" tool_tip="Atterrir"/>
+</panel>
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 c963b4d8cb..6a481a155c 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- January:February:March:April:May:June:July:August:September:October:November:December
- </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="buycurrencylabel">
- [AMT] L$
- </panel.string>
- <button label="" label_selected="" name="buycurrency" tool_tip="Mon solde : Cliquez ici pour acheter plus de L$"/>
- <text name="TimeText" tool_tip="Heure actuelle (Californie)">
- midi
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+ <panel.string name="StatBarDaysOfWeek">
+ Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday
+ </panel.string>
+ <panel.string name="StatBarMonthsOfYear">
+ January:February:March:April:May:June:July:August:September:October:November:December
+ </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="buycurrencylabel">
+ [AMT] L$
+ </panel.string>
+ <button label="" label_selected="" name="buycurrency" tool_tip="Mon solde : Cliquez ici pour acheter plus de L$"/>
+ <text name="TimeText" tool_tip="Heure actuelle (Californie)">
+ midi
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_world_map.xml b/indra/newview/skins/default/xui/fr/panel_world_map.xml
index 2fb7baaf7c..a35d0eaea9 100644
--- a/indra/newview/skins/default/xui/fr/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/panel_world_map.xml
@@ -1,57 +1,57 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="world_map">
- <panel.string name="Loading">
- Chargement…
- </panel.string>
- <panel.string name="InvalidLocation">
- Lieu invalide...
- </panel.string>
- <panel.string name="world_map_north">
- N
- </panel.string>
- <panel.string name="world_map_east">
- E
- </panel.string>
- <panel.string name="world_map_west">
- O
- </panel.string>
- <panel.string name="world_map_south">
- S
- </panel.string>
- <panel.string name="world_map_southeast">
- SE
- </panel.string>
- <panel.string name="world_map_northeast">
- NE
- </panel.string>
- <panel.string name="world_map_southwest">
- SO
- </panel.string>
- <panel.string name="world_map_northwest">
- NO
- </panel.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="E" name="floater_map_east" text="E">
- E
- </text>
- <text label="O" name="floater_map_west" text="O">
- O
- </text>
- <text label="S" name="floater_map_south" text="S">
- S
- </text>
- <text label="SE" name="floater_map_southeast" text="SE">
- SE
- </text>
- <text label="NE" name="floater_map_northeast" text="NE">
- NE
- </text>
- <text label="SO" name="floater_map_southwest" text="SO">
- SO
- </text>
- <text label="NO" name="floater_map_northwest" text="NO">
- NO
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+ <panel.string name="Loading">
+ Chargement…
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ Lieu invalide...
+ </panel.string>
+ <panel.string name="world_map_north">
+ N
+ </panel.string>
+ <panel.string name="world_map_east">
+ E
+ </panel.string>
+ <panel.string name="world_map_west">
+ O
+ </panel.string>
+ <panel.string name="world_map_south">
+ S
+ </panel.string>
+ <panel.string name="world_map_southeast">
+ SE
+ </panel.string>
+ <panel.string name="world_map_northeast">
+ NE
+ </panel.string>
+ <panel.string name="world_map_southwest">
+ SO
+ </panel.string>
+ <panel.string name="world_map_northwest">
+ NO
+ </panel.string>
+ <text label="N" name="floater_map_north" text="N">
+ N
+ </text>
+ <text label="E" name="floater_map_east" text="E">
+ E
+ </text>
+ <text label="O" name="floater_map_west" text="O">
+ O
+ </text>
+ <text label="S" name="floater_map_south" text="S">
+ S
+ </text>
+ <text label="SE" name="floater_map_southeast" text="SE">
+ SE
+ </text>
+ <text label="NE" name="floater_map_northeast" text="NE">
+ NE
+ </text>
+ <text label="SO" name="floater_map_southwest" text="SO">
+ SO
+ </text>
+ <text label="NO" name="floater_map_northwest" text="NO">
+ NO
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 06cc7d4a79..2d0df66f18 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1,3149 +1,3149 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
-<strings>
- <string name="SECOND_LIFE">
- Second Life
- </string>
- <string name="APP_NAME">
- Second Life
- </string>
- <string name="SECOND_LIFE_GRID">
- Grille de Second Life
- </string>
- <string name="SUPPORT_SITE">
- Portail Assistance Second Life
- </string>
- <string name="StartupDetectingHardware">
- Détection du matériel...
- </string>
- <string name="StartupLoading">
- Chargement
- </string>
- <string name="Fullbright">
- Fullbright (Legacy)
- </string>
- <string name="LoginInProgress">
- La connexion à [APP_NAME] apparaît peut-être comme étant gelée. Veuillez patienter.
- </string>
- <string name="LoginInProgressNoFrozen">
- Connexion...
- </string>
- <string name="LoginAuthenticating">
- Authentification en cours
- </string>
- <string name="LoginMaintenance">
- Maintenance du compte en cours…
- </string>
- <string name="LoginAttempt">
- La tentative de connexion précédente a échoué. Connexion, esssai [NUMBER]
- </string>
- <string name="LoginPrecaching">
- Monde en cours de chargement…
- </string>
- <string name="LoginInitializingBrowser">
- Navigateur Web incorporé en cours d&apos;initialisation…
- </string>
- <string name="LoginInitializingMultimedia">
- Multimédia en cours d&apos;initialisation…
- </string>
- <string name="LoginVerifyingCache">
- Fichiers du cache en cours de vérification (peut prendre 60-90 s)...
- </string>
- <string name="LoginProcessingResponse">
- Réponse en cours de traitement…
- </string>
- <string name="LoginInitializingWorld">
- Monde en cours d&apos;initialisation…
- </string>
- <string name="LoginDecodingImages">
- Décodage des images en cours...
- </string>
- <string name="LoginInitializingQuicktime">
- Quicktime en cours d&apos;initialisation
- </string>
- <string name="LoginQuicktimeNotFound">
- Quicktime introuvable, impossible de procéder à l&apos;initialisation.
- </string>
- <string name="LoginQuicktimeOK">
- Initialisation de Quicktime réussie.
- </string>
- <string name="LoginWaitingForRegionHandshake">
- Liaison avec la région en cours de création...
- </string>
- <string name="LoginConnectingToRegion">
- Connexion avec la région en cours...
- </string>
- <string name="LoginDownloadingClothing">
- Habits en cours de téléchargement...
- </string>
- <string name="AgentLostConnection">
- Il y a peut-être des problèmes techniques dans cette region. Veuillez vérifier votre connexion Internet.
- </string>
- <string name="TooltipPerson">
- Personne
- </string>
- <string name="TooltipNoName">
- (pas de nom)
- </string>
- <string name="TooltipOwner">
- Propriétaire :
- </string>
- <string name="TooltipPublic">
- Public
- </string>
- <string name="TooltipIsGroup">
- (Groupe)
- </string>
- <string name="TooltipForSaleL$">
- À vendre : [AMOUNT] L$
- </string>
- <string name="TooltipFlagGroupBuild">
- Contruction de groupe
- </string>
- <string name="TooltipFlagNoBuild">
- Pas de construction
- </string>
- <string name="TooltipFlagNoEdit">
- Contruction de groupe
- </string>
- <string name="TooltipFlagNotSafe">
- Non sécurisé
- </string>
- <string name="TooltipFlagNoFly">
- Interdiction de voler
- </string>
- <string name="TooltipFlagGroupScripts">
- Scripts de groupe
- </string>
- <string name="TooltipFlagNoScripts">
- Pas de scripts
- </string>
- <string name="TooltipLand">
- Terrain :
- </string>
- <string name="TooltipMustSingleDrop">
- Impossible de faire glisser plus d&apos;un objet ici
- </string>
- <string name="TooltipHttpUrl">
- Cliquez pour afficher cette page web
- </string>
- <string name="TooltipSLURL">
- Cliquez pour en savoir plus sur cet endroit
- </string>
- <string name="TooltipAgentUrl">
- Cliquez pour afficher le profil de ce résident
- </string>
- <string name="TooltipGroupUrl">
- Cliquez pour afficher la description de ce groupe
- </string>
- <string name="TooltipEventUrl">
- Cliquez pour afficher la description de cet événement
- </string>
- <string name="TooltipClassifiedUrl">
- Cliquez pour afficher cette petite annonce
- </string>
- <string name="TooltipParcelUrl">
- Cliquez pour afficher la description de cette parcelle
- </string>
- <string name="TooltipTeleportUrl">
- Cliquez pour vous téléporter à cet endroit
- </string>
- <string name="TooltipObjectIMUrl">
- Cliquez pour afficher la description de cet objet
- </string>
- <string name="TooltipSLAPP">
- Cliquez pour exécuter la commande secondlife:// command
- </string>
- <string name="BUTTON_CLOSE_DARWIN">
- Fermer (⌘-W)
- </string>
- <string name="BUTTON_CLOSE_WIN">
- Fermer (Ctrl+W)
- </string>
- <string name="BUTTON_RESTORE">
- Restaurer
- </string>
- <string name="BUTTON_MINIMIZE">
- Minimiser
- </string>
- <string name="BUTTON_TEAR_OFF">
- Réduire
- </string>
- <string name="BUTTON_DOCK">
- Attacher
- </string>
- <string name="BUTTON_UNDOCK">
- Détacher
- </string>
- <string name="BUTTON_HELP">
- Afficher l&apos;aide
- </string>
- <string name="RetrievingData">
- En cours d&apos;extraction...
- </string>
- <string name="ReleaseNotes">
- Notes de version
- </string>
- <string name="LoadingData">
- Chargement..
- </string>
- <string name="AvatarNameNobody">
- (personne)
- </string>
- <string name="AvatarNameWaiting">
- (en attente)
- </string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
- <string name="GroupNameNone">
- (aucun)
- </string>
- <string name="AssetErrorNone">
- Aucune erreur
- </string>
- <string name="AssetErrorRequestFailed">
- Requête de l&apos;actif : échec
- </string>
- <string name="AssetErrorNonexistentFile">
- Requête de l&apos;actif : fichier inexistant
- </string>
- <string name="AssetErrorNotInDatabase">
- Requête de l&apos;actif : actif introuvable dans la base de données
- </string>
- <string name="AssetErrorEOF">
- Fin du ficher
- </string>
- <string name="AssetErrorCannotOpenFile">
- Impossible d&apos;ouvrir le fichier
- </string>
- <string name="AssetErrorFileNotFound">
- Fichier introuvable
- </string>
- <string name="AssetErrorTCPTimeout">
- Délai d&apos;attente du transfert du fichier dépassé
- </string>
- <string name="AssetErrorCircuitGone">
- Disparition du circuit
- </string>
- <string name="AssetErrorPriceMismatch">
- Il y a une différence de prix entre le client et le serveur
- </string>
- <string name="AssetErrorUnknownStatus">
- Statut inconnu
- </string>
- <string name="texture">
- texture
- </string>
- <string name="sound">
- son
- </string>
- <string name="calling card">
- carte de visite
- </string>
- <string name="landmark">
- repère
- </string>
- <string name="legacy script">
- script (ancienne version)
- </string>
- <string name="clothing">
- habits
- </string>
- <string name="object">
- objet
- </string>
- <string name="note card">
- note
- </string>
- <string name="folder">
- dossier
- </string>
- <string name="root">
- racine
- </string>
- <string name="lsl2 script">
- script lsl2
- </string>
- <string name="lsl bytecode">
- bytecode lsl
- </string>
- <string name="tga texture">
- texture tga
- </string>
- <string name="body part">
- partie du corps
- </string>
- <string name="snapshot">
- photo
- </string>
- <string name="lost and found">
- objets trouvés
- </string>
- <string name="targa image">
- image targa
- </string>
- <string name="trash">
- poubelle
- </string>
- <string name="jpeg image">
- image jpeg
- </string>
- <string name="animation">
- animation
- </string>
- <string name="gesture">
- geste
- </string>
- <string name="simstate">
- simstate
- </string>
- <string name="favorite">
- favori
- </string>
- <string name="symbolic link">
- lien
- </string>
- <string name="AvatarAway">
- Absent
- </string>
- <string name="AvatarBusy">
- Occupé
- </string>
- <string name="AvatarMuted">
- Ignoré
- </string>
- <string name="anim_express_afraid">
- Effrayé
- </string>
- <string name="anim_express_anger">
- En colère
- </string>
- <string name="anim_away">
- Absent
- </string>
- <string name="anim_backflip">
- Salto arrière
- </string>
- <string name="anim_express_laugh">
- Rire en se tenant le ventre
- </string>
- <string name="anim_express_toothsmile">
- Grand sourire
- </string>
- <string name="anim_blowkiss">
- Envoyer un baiser
- </string>
- <string name="anim_express_bored">
- Bailler d&apos;ennui
- </string>
- <string name="anim_bow">
- S&apos;incliner
- </string>
- <string name="anim_clap">
- Applaudir
- </string>
- <string name="anim_courtbow">
- Révérence de cour
- </string>
- <string name="anim_express_cry">
- Pleurer
- </string>
- <string name="anim_dance1">
- Danse 1
- </string>
- <string name="anim_dance2">
- Danse 2
- </string>
- <string name="anim_dance3">
- Danse 3
- </string>
- <string name="anim_dance4">
- Danse 4
- </string>
- <string name="anim_dance5">
- Danse 5
- </string>
- <string name="anim_dance6">
- Danse 6
- </string>
- <string name="anim_dance7">
- Danse 7
- </string>
- <string name="anim_dance8">
- Danse 8
- </string>
- <string name="anim_express_disdain">
- Mépris
- </string>
- <string name="anim_drink">
- Boire
- </string>
- <string name="anim_express_embarrased">
- Gêne
- </string>
- <string name="anim_angry_fingerwag">
- Désapprobation
- </string>
- <string name="anim_fist_pump">
- Victoire
- </string>
- <string name="anim_yoga_float">
- Yoga
- </string>
- <string name="anim_express_frown">
- Froncer les sourcils
- </string>
- <string name="anim_impatient">
- Impatient
- </string>
- <string name="anim_jumpforjoy">
- Sauter de joie
- </string>
- <string name="anim_kissmybutt">
- Va te faire voir !
- </string>
- <string name="anim_express_kiss">
- Baiser
- </string>
- <string name="anim_laugh_short">
- Rire
- </string>
- <string name="anim_musclebeach">
- Montrer ses muscles
- </string>
- <string name="anim_no_unhappy">
- Non (mécontent)
- </string>
- <string name="anim_no_head">
- Non
- </string>
- <string name="anim_nyanya">
- Na na na na nère
- </string>
- <string name="anim_punch_onetwo">
- Gauche-droite
- </string>
- <string name="anim_express_open_mouth">
- Bouche ouverte
- </string>
- <string name="anim_peace">
- Paix
- </string>
- <string name="anim_point_you">
- Montrer quelqu&apos;un du doigt
- </string>
- <string name="anim_point_me">
- Se montrer du doigt
- </string>
- <string name="anim_punch_l">
- Gauche
- </string>
- <string name="anim_punch_r">
- Droite
- </string>
- <string name="anim_rps_countdown">
- Compter (pierre-papier-ciseaux)
- </string>
- <string name="anim_rps_paper">
- Papier (pierre-papier-ciseaux)
- </string>
- <string name="anim_rps_rock">
- Pierre (pierre-papier-ciseaux)
- </string>
- <string name="anim_rps_scissors">
- Ciseaux (pierre-papier-ciseaux)
- </string>
- <string name="anim_express_repulsed">
- Dégoût
- </string>
- <string name="anim_kick_roundhouse_r">
- Coup de pied circulaire
- </string>
- <string name="anim_express_sad">
- Triste
- </string>
- <string name="anim_salute">
- Salut
- </string>
- <string name="anim_shout">
- Crier
- </string>
- <string name="anim_express_shrug">
- Hausser les épaules
- </string>
- <string name="anim_express_smile">
- Sourire
- </string>
- <string name="anim_smoke_idle">
- Fumer, immobile
- </string>
- <string name="anim_smoke_inhale">
- Fumer, prendre une bouffée
- </string>
- <string name="anim_smoke_throw_down">
- Fumer, jeter son mégot
- </string>
- <string name="anim_express_surprise">
- Surprise
- </string>
- <string name="anim_sword_strike_r">
- Coup d&apos;épée
- </string>
- <string name="anim_angry_tantrum">
- Caprice
- </string>
- <string name="anim_express_tongue_out">
- Tirer la langue
- </string>
- <string name="anim_hello">
- Faire signe
- </string>
- <string name="anim_whisper">
- Chuchoter
- </string>
- <string name="anim_whistle">
- Siffler
- </string>
- <string name="anim_express_wink">
- Clin d&apos;œil
- </string>
- <string name="anim_wink_hollywood">
- Clin d&apos;œil (Hollywood)
- </string>
- <string name="anim_express_worry">
- Soucis
- </string>
- <string name="anim_yes_happy">
- Oui (Joie)
- </string>
- <string name="anim_yes_head">
- Oui
- </string>
- <string name="texture_loading">
- Chargement...
- </string>
- <string name="worldmap_offline">
- Hors ligne
- </string>
- <string name="Ok">
- OK
- </string>
- <string name="Premature end of file">
- Fichier incomplet
- </string>
- <string name="ST_NO_JOINT">
- Impossible de trouver ROOT ou JOINT.
- </string>
- <string name="whisper">
- chuchote :
- </string>
- <string name="shout">
- crie :
- </string>
- <string name="ringing">
- Connexion au chat vocal du Monde en cours…
- </string>
- <string name="connected">
- Connecté(e)
- </string>
- <string name="unavailable">
- Voix non disponible à l&apos;endroit où vous êtes
- </string>
- <string name="hang_up">
- Déconnecté du chat vocal
- </string>
- <string name="ScriptQuestionCautionChatGranted">
- &apos;[OBJECTNAME]&apos;, un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], a reçu le droit de : [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- &apos;[OBJECTNAME]&apos;, un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], n&apos;a pas reçu le droit de : [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Débiter vos Linden dollars (L$)
- </string>
- <string name="ActOnControlInputs">
- Utiliser vos touches de commandes
- </string>
- <string name="RemapControlInputs">
- Reconfigurer vos touches de commandes
- </string>
- <string name="AnimateYourAvatar">
- Animer votre avatar
- </string>
- <string name="AttachToYourAvatar">
- Attacher à votre avatar
- </string>
- <string name="ReleaseOwnership">
- Passer l&apos;objet dans le domaine public (sans propriétaire)
- </string>
- <string name="LinkAndDelink">
- Lier et délier d&apos;autres objets
- </string>
- <string name="AddAndRemoveJoints">
- Créer et supprimer des liens avec d&apos;autres objets
- </string>
- <string name="ChangePermissions">
- Modifier ses droits
- </string>
- <string name="TrackYourCamera">
- Suivre votre caméra
- </string>
- <string name="ControlYourCamera">
- Contrôler votre caméra
- </string>
- <string name="SIM_ACCESS_PG">
- PG
- </string>
- <string name="SIM_ACCESS_MATURE">
- Mature
- </string>
- <string name="SIM_ACCESS_ADULT">
- Adult
- </string>
- <string name="SIM_ACCESS_DOWN">
- Hors ligne
- </string>
- <string name="SIM_ACCESS_MIN">
- Inconnu
- </string>
- <string name="land_type_unknown">
- (inconnu)
- </string>
- <string name="all_files">
- Tous fichiers
- </string>
- <string name="sound_files">
- Sons
- </string>
- <string name="animation_files">
- Animations
- </string>
- <string name="image_files">
- Images
- </string>
- <string name="save_file_verb">
- Enregistrer
- </string>
- <string name="load_file_verb">
- Charger
- </string>
- <string name="targa_image_files">
- Images Targa
- </string>
- <string name="bitmap_image_files">
- Images Bitmap
- </string>
- <string name="avi_movie_file">
- Fichier de film AVI
- </string>
- <string name="xaf_animation_file">
- Fichier d&apos;animation XAF
- </string>
- <string name="xml_file">
- Fichier XML
- </string>
- <string name="dot_raw_file">
- Fichier RAW
- </string>
- <string name="compressed_image_files">
- Images compressées
- </string>
- <string name="load_files">
- Charger des fichiers
- </string>
- <string name="choose_the_directory">
- Choisir le répertoire
- </string>
- <string name="AvatarSetNotAway">
- Ne plus me mettre en mode absent
- </string>
- <string name="AvatarSetAway">
- Me mettre en mode absent
- </string>
- <string name="AvatarSetNotBusy">
- Ne plus me mettre en mode occupé
- </string>
- <string name="AvatarSetBusy">
- Me mettre en mode occupé
- </string>
- <string name="shape">
- Silhouette
- </string>
- <string name="skin">
- Peau
- </string>
- <string name="hair">
- Cheveux
- </string>
- <string name="eyes">
- Yeux
- </string>
- <string name="shirt">
- Chemise
- </string>
- <string name="pants">
- Pantalon
- </string>
- <string name="shoes">
- Chaussures
- </string>
- <string name="socks">
- Chaussettes
- </string>
- <string name="jacket">
- Veste
- </string>
- <string name="gloves">
- Gants
- </string>
- <string name="undershirt">
- Sous-vêtements (homme)
- </string>
- <string name="underpants">
- Sous-vêtements (femme)
- </string>
- <string name="skirt">
- Jupe
- </string>
- <string name="invalid">
- non valide
- </string>
- <string name="BodyPartsRightArm">
- Bras droit
- </string>
- <string name="BodyPartsHead">
- Tête
- </string>
- <string name="BodyPartsLeftArm">
- Bras gauche
- </string>
- <string name="BodyPartsLeftLeg">
- Jambe gauche
- </string>
- <string name="BodyPartsTorso">
- Torse
- </string>
- <string name="BodyPartsRightLeg">
- Jambe droite
- </string>
- <string name="GraphicsQualityLow">
- Faible
- </string>
- <string name="GraphicsQualityMid">
- Moyen
- </string>
- <string name="GraphicsQualityHigh">
- Élevé
- </string>
- <string name="LeaveMouselook">
- Appuyez sur ESC pour quitter la vue subjective
- </string>
- <string name="InventoryNoMatchingItems">
- Aucun objet correspondant ne se trouve dans l&apos;inventaire.
- </string>
- <string name="InventoryNoTexture">
- Vous n&apos;avez pas de copie de cette texture dans votre inventaire
- </string>
- <string name="LoadingContents">
- chargement des contenus en cours...
- </string>
- <string name="NoContents">
- Aucun contenu
- </string>
- <string name="InvFolder My Inventory">
- Mon inventaire
- </string>
- <string name="InvFolder My Favorites">
- Mes favoris
- </string>
- <string name="InvFolder Library">
- Bibliothèque
- </string>
- <string name="InvFolder Textures">
- Textures
- </string>
- <string name="InvFolder Sounds">
- Sons
- </string>
- <string name="InvFolder Calling Cards">
- Cartes de visite
- </string>
- <string name="InvFolder Landmarks">
- Repères
- </string>
- <string name="InvFolder Scripts">
- Scripts
- </string>
- <string name="InvFolder Clothing">
- Habits
- </string>
- <string name="InvFolder Objects">
- Objets
- </string>
- <string name="InvFolder Notecards">
- Notes
- </string>
- <string name="InvFolder New Folder">
- Nouveau dossier
- </string>
- <string name="InvFolder Inventory">
- Inventaire
- </string>
- <string name="InvFolder Uncompressed Images">
- Images non compressées
- </string>
- <string name="InvFolder Body Parts">
- Parties du corps
- </string>
- <string name="InvFolder Trash">
- Poubelle
- </string>
- <string name="InvFolder Photo Album">
- Albums photo
- </string>
- <string name="InvFolder Lost And Found">
- Objets trouvés
- </string>
- <string name="InvFolder Uncompressed Sounds">
- Sons non compressés
- </string>
- <string name="InvFolder Animations">
- Animations
- </string>
- <string name="InvFolder Gestures">
- Gestes
- </string>
- <string name="InvFolder favorite">
- Favoris
- </string>
- <string name="InvFolder Current Outfit">
- Tenue actuelle
- </string>
- <string name="InvFolder My Outfits">
- Mes tenues
- </string>
- <string name="InvFolder Friends">
- Amis
- </string>
- <string name="InvFolder All">
- Tout
- </string>
- <string name="Buy">
- Acheter
- </string>
- <string name="BuyforL$">
- Acheter des L$
- </string>
- <string name="Stone">
- Pierre
- </string>
- <string name="Metal">
- Métal
- </string>
- <string name="Glass">
- Verre
- </string>
- <string name="Wood">
- Bois
- </string>
- <string name="Flesh">
- Chair
- </string>
- <string name="Plastic">
- Plastique
- </string>
- <string name="Rubber">
- Caoutchouc
- </string>
- <string name="Light">
- Léger
- </string>
- <string name="KBShift">
- Maj-
- </string>
- <string name="KBCtrl">
- Ctrl
- </string>
- <string name="Chest">
- Poitrine
- </string>
- <string name="Skull">
- Crâne
- </string>
- <string name="Left Shoulder">
- Épaule gauche
- </string>
- <string name="Right Shoulder">
- Épaule droite
- </string>
- <string name="Left Hand">
- Main gauche
- </string>
- <string name="Right Hand">
- Main droite
- </string>
- <string name="Left Foot">
- Pied gauche
- </string>
- <string name="Right Foot">
- Pied droit
- </string>
- <string name="Spine">
- Colonne
- </string>
- <string name="Pelvis">
- Bassin
- </string>
- <string name="Mouth">
- Bouche
- </string>
- <string name="Chin">
- Menton
- </string>
- <string name="Left Ear">
- Oreille gauche
- </string>
- <string name="Right Ear">
- Oreille droite
- </string>
- <string name="Left Eyeball">
- Globe oculaire gauche
- </string>
- <string name="Right Eyeball">
- Globe oculaire droit
- </string>
- <string name="Nose">
- Nez
- </string>
- <string name="R Upper Arm">
- Bras D
- </string>
- <string name="R Forearm">
- Avant-bras D
- </string>
- <string name="L Upper Arm">
- Bras G
- </string>
- <string name="L Forearm">
- Avant-bras G
- </string>
- <string name="Right Hip">
- Hanche droite
- </string>
- <string name="R Upper Leg">
- Cuisse D
- </string>
- <string name="R Lower Leg">
- Jambe D
- </string>
- <string name="Left Hip">
- Hanche gauche
- </string>
- <string name="L Upper Leg">
- Cuisse G
- </string>
- <string name="L Lower Leg">
- Jambe G
- </string>
- <string name="Stomach">
- Estomac
- </string>
- <string name="Left Pec">
- Pectoral gauche
- </string>
- <string name="Right Pec">
- Pectoral droit
- </string>
- <string name="YearsMonthsOld">
- [AGEYEARS] [AGEMONTHS]
- </string>
- <string name="YearsOld">
- [AGEYEARS]
- </string>
- <string name="MonthsOld">
- [AGEMONTHS]
- </string>
- <string name="WeeksOld">
- [AGEWEEKS]
- </string>
- <string name="DaysOld">
- [AGEDAYS]
- </string>
- <string name="TodayOld">
- Inscrit aujourd&apos;hui
- </string>
- <string name="AgeYearsA">
- [COUNT] an
- </string>
- <string name="AgeYearsB">
- [COUNT] ans
- </string>
- <string name="AgeYearsC">
- [COUNT] ans
- </string>
- <string name="AgeMonthsA">
- [COUNT] mois
- </string>
- <string name="AgeMonthsB">
- [COUNT] mois
- </string>
- <string name="AgeMonthsC">
- [COUNT] mois
- </string>
- <string name="AgeWeeksA">
- [COUNT] semaine
- </string>
- <string name="AgeWeeksB">
- [COUNT] semaines
- </string>
- <string name="AgeWeeksC">
- [COUNT] semaines
- </string>
- <string name="AgeDaysA">
- [COUNT] jour
- </string>
- <string name="AgeDaysB">
- [COUNT] jours
- </string>
- <string name="AgeDaysC">
- [COUNT] jours
- </string>
- <string name="AcctTypeResident">
- Résident
- </string>
- <string name="AcctTypeTrial">
- Essai
- </string>
- <string name="AcctTypeCharterMember">
- Membre originaire
- </string>
- <string name="AcctTypeEmployee">
- Employé(e) de Linden Lab
- </string>
- <string name="PaymentInfoUsed">
- Infos de paiement utilisées
- </string>
- <string name="PaymentInfoOnFile">
- Infos de paiement enregistrées
- </string>
- <string name="NoPaymentInfoOnFile">
- Aucune info de paiement
- </string>
- <string name="AgeVerified">
- Âge vérifié
- </string>
- <string name="NotAgeVerified">
- Âge non vérifié
- </string>
- <string name="Center 2">
- Centrer 2
- </string>
- <string name="Top Right">
- En haut à droite
- </string>
- <string name="Top">
- En haut
- </string>
- <string name="Top Left">
- En haut à gauche
- </string>
- <string name="Center">
- Centrer
- </string>
- <string name="Bottom Left">
- En bas à gauche
- </string>
- <string name="Bottom">
- Bas
- </string>
- <string name="Bottom Right">
- En bas à droite
- </string>
- <string name="CompileQueueDownloadedCompiling">
- Téléchargé, compilation en cours
- </string>
- <string name="CompileQueueScriptNotFound">
- Script introuvable sur le serveur.
- </string>
- <string name="CompileQueueProblemDownloading">
- Problème lors du téléchargement
- </string>
- <string name="CompileQueueInsufficientPermDownload">
- Permissions insuffisantes pour télécharger un script.
- </string>
- <string name="CompileQueueInsufficientPermFor">
- Permissions insuffisantes pour
- </string>
- <string name="CompileQueueUnknownFailure">
- Échec du téléchargement, erreur inconnue
- </string>
- <string name="CompileQueueTitle">
- Recompilation - progrès
- </string>
- <string name="CompileQueueStart">
- recompiler
- </string>
- <string name="ResetQueueTitle">
- Réinitialiser les progrès
- </string>
- <string name="ResetQueueStart">
- réinitialiser
- </string>
- <string name="RunQueueTitle">
- Lancer
- </string>
- <string name="RunQueueStart">
- lancer
- </string>
- <string name="NotRunQueueTitle">
- Arrêter
- </string>
- <string name="NotRunQueueStart">
- arrêter
- </string>
- <string name="CompileSuccessful">
- Compilation réussie !
- </string>
- <string name="CompileSuccessfulSaving">
- Compilation réussie, enregistrement en cours...
- </string>
- <string name="SaveComplete">
- Enregistrement terminé.
- </string>
- <string name="ObjectOutOfRange">
- Script (objet hors de portée)
- </string>
- <string name="GodToolsObjectOwnedBy">
- Objet [OBJECT] possédé par [OWNER]
- </string>
- <string name="GroupsNone">
- aucun
- </string>
- <string name="Unknown">
- (Inconnu)
- </string>
- <string name="Balance">
- Solde
- </string>
- <string name="Credits">
- Remerciements
- </string>
- <string name="Debits">
- Débits
- </string>
- <string name="Total">
- Total
- </string>
- <string name="NoGroupDataFound">
- Aucune donnée trouvée pour le groupe
- </string>
- <string name="IMParentEstate">
- domaine parent
- </string>
- <string name="IMMainland">
- continent
- </string>
- <string name="IMTeen">
- teen
- </string>
- <string name="RegionInfoError">
- erreur
- </string>
- <string name="RegionInfoAllEstatesOwnedBy">
- tous les domaines possédés par [OWNER]
- </string>
- <string name="RegionInfoAllEstatesYouOwn">
- tous les domaines que vous possédez
- </string>
- <string name="RegionInfoAllEstatesYouManage">
- tous les domaines que vous gérez pour [owner]
- </string>
- <string name="RegionInfoAllowedResidents">
- Résidents autorisés : ([ALLOWEDAGENTS], max [MAXACCESS])
- </string>
- <string name="RegionInfoAllowedGroups">
- Groupes autorisés : ([ALLOWEDGROUPS], max [MAXACCESS])
- </string>
- <string name="CursorPos">
- Ligne [LINE], Colonne [COLUMN]
- </string>
- <string name="PanelDirCountFound">
- [COUNT] trouvé(s)
- </string>
- <string name="PanelContentsNewScript">
- Nouveau script
- </string>
- <string name="MuteByName">
- (par nom)
- </string>
- <string name="MuteAgent">
- (résident)
- </string>
- <string name="MuteObject">
- (objet)
- </string>
- <string name="MuteGroup">
- (groupe)
- </string>
- <string name="RegionNoCovenant">
- Il n&apos;y a aucun règlement pour ce domaine.
- </string>
- <string name="RegionNoCovenantOtherOwner">
- Il n&apos;y a aucun règlement pour ce domaine. Le terrain sur ce domaine est vendu par le propriétaire, non par Linden Lab. Pour en savoir plus, veuillez contacter le propriétaire.
- </string>
- <string name="covenant_last_modified">
- Dernière modification :
- </string>
- <string name="GroupOwned">
- Propriété du groupe
- </string>
- <string name="Public">
- Public
- </string>
- <string name="ClassifiedClicksTxt">
- Clics : [TELEPORT] téléporter, [MAP] carte, [PROFILE] profile
- </string>
- <string name="ClassifiedUpdateAfterPublish">
- (mise à jour après la publication)
- </string>
- <string name="GroupVoteYes">
- Oui
- </string>
- <string name="GroupVoteNo">
- Non
- </string>
- <string name="GroupVoteNoActiveProposals">
- Il n&apos;y a aucune proposition active actuellement
- </string>
- <string name="GroupVoteNoArchivedProposals">
- Il n&apos;y a aucune proposition archivée actuellement
- </string>
- <string name="GroupVoteRetrievingArchivedProposals">
- Extraction des propositions archivées
- </string>
- <string name="GroupVoteRetrievingActiveProposals">
- Extraction des propositions actives
- </string>
- <string name="MultiPreviewTitle">
- Prévisualiser
- </string>
- <string name="MultiPropertiesTitle">
- Propriétés
- </string>
- <string name="InvOfferAnObjectNamed">
- Un objet appelé
- </string>
- <string name="InvOfferOwnedByGroup">
- possédé par le groupe
- </string>
- <string name="InvOfferOwnedByUnknownGroup">
- possédé par un groupe inconnu
- </string>
- <string name="InvOfferOwnedBy">
- possédé par
- </string>
- <string name="InvOfferOwnedByUnknownUser">
- possédé par un résident inconnu
- </string>
- <string name="InvOfferGaveYou">
- vous a donné
- </string>
- <string name="InvOfferYouDecline">
- Vous avez refusé
- </string>
- <string name="InvOfferFrom">
- de la part de
- </string>
- <string name="GroupMoneyTotal">
- Total
- </string>
- <string name="GroupMoneyBought">
- acheté
- </string>
- <string name="GroupMoneyPaidYou">
- vous a payé
- </string>
- <string name="GroupMoneyPaidInto">
- payé
- </string>
- <string name="GroupMoneyBoughtPassTo">
- a acheté un pass à
- </string>
- <string name="GroupMoneyPaidFeeForEvent">
- a payé des frais pour un événement
- </string>
- <string name="GroupMoneyPaidPrizeForEvent">
- a payé un prix pour un événement
- </string>
- <string name="GroupMoneyBalance">
- Solde
- </string>
- <string name="GroupMoneyCredits">
- Remerciements
- </string>
- <string name="GroupMoneyDebits">
- Débits
- </string>
- <string name="ViewerObjectContents">
- Contenus
- </string>
- <string name="AcquiredItems">
- Objets acquis
- </string>
- <string name="Cancel">
- Annuler
- </string>
- <string name="UploadingCosts">
- Chargement de %s coûts
- </string>
- <string name="UnknownFileExtension">
- Extension de fichier inconnue. %s
-.wav, .tga, .bmp, .jpg, .jpeg, ou .bvh acceptés
- </string>
- <string name="AddLandmarkNavBarMenu">
- Ajouter un repère...
- </string>
- <string name="EditLandmarkNavBarMenu">
- Modifier le repère...
- </string>
- <string name="accel-mac-control">
- ⌃
- </string>
- <string name="accel-mac-command">
- ⌘
- </string>
- <string name="accel-mac-option">
- ⌥
- </string>
- <string name="accel-mac-shift">
- ⇧
- </string>
- <string name="accel-win-control">
- Ctrl+
- </string>
- <string name="accel-win-alt">
- Alt+
- </string>
- <string name="accel-win-shift">
- Maj+
- </string>
- <string name="FileSaved">
- Fichier enregistré
- </string>
- <string name="Receiving">
- Réception
- </string>
- <string name="AM">
- AM
- </string>
- <string name="PM">
- PM
- </string>
- <string name="PST">
- PST
- </string>
- <string name="PDT">
- PDT
- </string>
- <string name="Forward">
- Vers l&apos;avant
- </string>
- <string name="Left">
- Gauche
- </string>
- <string name="Right">
- Droite
- </string>
- <string name="Back">
- Précédente
- </string>
- <string name="North">
- Nord
- </string>
- <string name="South">
- Sud
- </string>
- <string name="West">
- Ouest
- </string>
- <string name="East">
- Est
- </string>
- <string name="Up">
- Vers le haut
- </string>
- <string name="Down">
- Vers le bas
- </string>
- <string name="Any Category">
- Toutes catégories
- </string>
- <string name="Shopping">
- Shopping
- </string>
- <string name="Land Rental">
- Terrains à louer
- </string>
- <string name="Property Rental">
- Propriétés à louer
- </string>
- <string name="Special Attraction">
- Divertissements
- </string>
- <string name="New Products">
- Nouveaux produits
- </string>
- <string name="Employment">
- Emplois
- </string>
- <string name="Wanted">
- Offres
- </string>
- <string name="Service">
- Services
- </string>
- <string name="Personal">
- Divers
- </string>
- <string name="None">
- Aucun
- </string>
- <string name="Linden Location">
- Appartenant aux Lindens
- </string>
- <string name="Adult">
- Adult
- </string>
- <string name="Arts&amp;Culture">
- Art et Culture
- </string>
- <string name="Business">
- Affaires
- </string>
- <string name="Educational">
- Éducation
- </string>
- <string name="Gaming">
- Jeux
- </string>
- <string name="Hangout">
- Favoris
- </string>
- <string name="Newcomer Friendly">
- Accueil pour les nouveaux
- </string>
- <string name="Parks&amp;Nature">
- Parcs et Nature
- </string>
- <string name="Residential">
- Résidentiel
- </string>
- <string name="Stage">
- Phase
- </string>
- <string name="Other">
- Autre
- </string>
- <string name="Any">
- Aucun
- </string>
- <string name="You">
- Vous
- </string>
- <string name=":">
- :
- </string>
- <string name=",">
- ,
- </string>
- <string name="...">
- ...
- </string>
- <string name="***">
- ***
- </string>
- <string name="(">
- (
- </string>
- <string name=")">
- )
- </string>
- <string name=".">
- .
- </string>
- <string name="&apos;">
- &apos;
- </string>
- <string name="---">
- ---
- </string>
- <string name="MBCmdLineError">
- Une erreur est survenue lors de la lecture de la ligne de commande.
-Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters
-Erreur :
- </string>
- <string name="MBCmdLineUsg">
- [APP_NAME] Utilisation de la ligne de commande :
- </string>
- <string name="MBUnableToAccessFile">
- [APP_NAME] ne peut accéder à un fichier requis.
-
-Cela vient du fait que quelqu&apos;un a ouvert plusieurs copies ou que votre système pense qu&apos;un fichier est ouvert.
-Si ce message persiste, veuillez redémarrer votre ordinateur.
-Si le problème persiste, vous devrez peut-être complètement désinstaller puis réinstaller [APP_NAME].
- </string>
- <string name="MBFatalError">
- Erreur fatale
- </string>
- <string name="MBRequiresAltiVec">
- [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).
- </string>
- <string name="MBAlreadyRunning">
- [APP_NAME] est déjà lancé.
-Vérifiez si une version minimisée du programme apparaît dans votre barre de tâches.
-Si ce message persiste, redémarrez votre ordinateur.
- </string>
- <string name="MBFrozenCrashed">
- [APP_NAME] semble avoir crashé lors de l&apos;utilisation précédente.
-Voulez-vous envoyer un rapport de crash ?
- </string>
- <string name="MBAlert">
- Alerte
- </string>
- <string name="MBNoDirectX">
- [APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure.
-[APP_NAME] utilise DirectX pour détecter les matériels et/ou les pilotes qui ne sont pas à jour et peuvent causer des problèmes de stabilité, de performance, ou des plantages. Bien que vous puissiez utiliser [APP_NAME] sans DirectX, nous vous recommandons de l&apos;utiliser avec DirectX 9.0b.
-
-Voulez-vous continuer ?
- </string>
- <string name="MBWarning">
- Avertissement
- </string>
- <string name="MBNoAutoUpdate">
- Les mises à jour automatiques n&apos;existent pas encore pour Linux.
-Veuillez télécharger la dernière version sur www.secondlife.com.
- </string>
- <string name="MBRegClassFailed">
- RegisterClass a échoué
- </string>
- <string name="MBError">
- Erreur
- </string>
- <string name="MBFullScreenErr">
- Impossible d&apos;ouvrir le mode plein écran de [WIDTH] x [HEIGHT]
-Utilisation du mode fenêtré.
- </string>
- <string name="MBDestroyWinFailed">
- Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() failed))
- </string>
- <string name="MBShutdownErr">
- Erreur de fermeture
- </string>
- <string name="MBDevContextErr">
- Impossible de créer le contexte GL
- </string>
- <string name="MBPixelFmtErr">
- Impossible de trouver le format pixel approprié
- </string>
- <string name="MBPixelFmtDescErr">
- Impossible de trouver la description du format pixel
- </string>
- <string name="MBTrueColorWindow">
- [APP_NAME] nécessite que True Color (32-bit) soit exécuté dans une fenêtre.
-Veuillez allez sous Panneau de configuration &gt; Affichage &gt; Paramètres et régler la couleur de l&apos;écran sur 32-bit.
-Sinon, lorsque vous choisissez le mode plein écran, [APP_NAME] ajustera automatiquement l&apos;écran à chaque utilisation.
- </string>
- <string name="MBAlpha">
- [APP_NAME] ne peut pas être lancé car il n&apos;y pas de channel 8 bit accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo.
-Assurez-vous d&apos;avoir installé le pilote de carte vidéo le plus récent possible.
- Assurez-vous aussi que votre écran est réglé sur True Clor (22-bit) sous Panneau de configuration &gt; Affichage &gt; Paramètres.
-Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
- </string>
- <string name="MBPixelFmtSetErr">
- Impossible de trouver le format pixel approprié
- </string>
- <string name="MBGLContextErr">
- Impossible de créer le contexte de rendu GL
- </string>
- <string name="MBGLContextActErr">
- Impossible d&apos;activer le contexte de rendu GL
- </string>
- <string name="MBVideoDrvErr">
- [APP_NAME] ne peut pas être exécuté car les pilotes de votre carte vidéo n&apos;ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d&apos;avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les.
-
-Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
- </string>
- <string name="5 O&apos;Clock Shadow">
- Barbe naissante
- </string>
- <string name="All White">
- Tout blancs
- </string>
- <string name="Anime Eyes">
- Grand yeux
- </string>
- <string name="Arced">
- Arquées
- </string>
- <string name="Arm Length">
- Longueur des bras
- </string>
- <string name="Attached">
- Minces
- </string>
- <string name="Attached Earlobes">
- Largeur des lobes
- </string>
- <string name="Back Bangs">
- Mèches de derrière
- </string>
- <string name="Back Bangs Down">
- Mèches de derrière Bas
- </string>
- <string name="Back Bangs Up">
- Mèches de derrière haut
- </string>
- <string name="Back Fringe">
- Mèches de derrière
- </string>
- <string name="Back Hair">
- Cheveux de derrière
- </string>
- <string name="Back Hair Down">
- Cheveux de derrière Bas
- </string>
- <string name="Back Hair Up">
- Cheveux de derrière haut
- </string>
- <string name="Baggy">
- Cernés
- </string>
- <string name="Bangs">
- Frange
- </string>
- <string name="Bangs Down">
- Frange Bas
- </string>
- <string name="Bangs Up">
- Frange Haut
- </string>
- <string name="Beady Eyes">
- Yeux perçants
- </string>
- <string name="Belly Size">
- Taille du ventre
- </string>
- <string name="Big">
- Gros
- </string>
- <string name="Big Butt">
- Grosses fesses
- </string>
- <string name="Big Eyeball">
- Gros globe oculaire
- </string>
- <string name="Big Hair Back">
- Cheveux volumineux : Derrière
- </string>
- <string name="Big Hair Front">
- Cheveux volumineux : Devant
- </string>
- <string name="Big Hair Top">
- Cheveux volumineux : En haut
- </string>
- <string name="Big Head">
- Grosse tête
- </string>
- <string name="Big Pectorals">
- Gros pectoraux
- </string>
- <string name="Big Spikes">
- Spikes
- </string>
- <string name="Black">
- Noir
- </string>
- <string name="Blonde">
- Blond
- </string>
- <string name="Blonde Hair">
- Cheveux blonds
- </string>
- <string name="Blush">
- Blush
- </string>
- <string name="Blush Color">
- Couleur du blush
- </string>
- <string name="Blush Opacity">
- Opacité du blush
- </string>
- <string name="Body Definition">
- Contour du corps
- </string>
- <string name="Body Fat">
- Graisse
- </string>
- <string name="Body Freckles">
- Grains de beauté
- </string>
- <string name="Body Thick">
- Corps épais
- </string>
- <string name="Body Thickness">
- Épaisseur du corps
- </string>
- <string name="Body Thin">
- Corps mince
- </string>
- <string name="Bow Legged">
- Jambes arquées
- </string>
- <string name="Breast Buoyancy">
- Hauteur des seins
- </string>
- <string name="Breast Cleavage">
- Clivage
- </string>
- <string name="Breast Size">
- Taille des seins
- </string>
- <string name="Bridge Width">
- Arête du nez
- </string>
- <string name="Broad">
- Large
- </string>
- <string name="Brow Size">
- Taille des sourcils
- </string>
- <string name="Bug Eyes">
- Yeux globuleux
- </string>
- <string name="Bugged Eyes">
- Yeux globuleux
- </string>
- <string name="Bulbous">
- En bulbe
- </string>
- <string name="Bulbous Nose">
- Nez en bulbe
- </string>
- <string name="Bushy Eyebrows">
- Sourcils touffus
- </string>
- <string name="Bushy Hair">
- Cheveux touffus
- </string>
- <string name="Butt Size">
- Taille des fesses
- </string>
- <string name="bustle skirt">
- Jupe gonflante
- </string>
- <string name="no bustle">
- Pas gonflante
- </string>
- <string name="more bustle">
- Plus gonflante
- </string>
- <string name="Chaplin">
- Chaplin
- </string>
- <string name="Cheek Bones">
- Pommettes
- </string>
- <string name="Chest Size">
- Taille de la poitrine
- </string>
- <string name="Chin Angle">
- Angle du menton
- </string>
- <string name="Chin Cleft">
- Fente labiale
- </string>
- <string name="Chin Curtains">
- Favoris
- </string>
- <string name="Chin Depth">
- Profondeur du menton
- </string>
- <string name="Chin Heavy">
- Menton lourd
- </string>
- <string name="Chin In">
- Menton rentré
- </string>
- <string name="Chin Out">
- Menton sorti
- </string>
- <string name="Chin-Neck">
- Menton-cou
- </string>
- <string name="Clear">
- Effacer
- </string>
- <string name="Cleft">
- Fente
- </string>
- <string name="Close Set Eyes">
- Yeux rapprochés
- </string>
- <string name="Closed">
- Fermé(s)
- </string>
- <string name="Closed Back">
- Fermé à l&apos;arrière
- </string>
- <string name="Closed Front">
- Fermé devant
- </string>
- <string name="Closed Left">
- Fermé à gauche
- </string>
- <string name="Closed Right">
- Fermé à droite
- </string>
- <string name="Coin Purse">
- Bijoux de famille
- </string>
- <string name="Collar Back">
- Col arrière
- </string>
- <string name="Collar Front">
- Col devant
- </string>
- <string name="Corner Down">
- Coin vers le bas
- </string>
- <string name="Corner Normal">
- Coin normal
- </string>
- <string name="Corner Up">
- Coin vers le haut
- </string>
- <string name="Creased">
- Frippée
- </string>
- <string name="Crooked Nose">
- Nez en bec d&apos;aigle
- </string>
- <string name="Cropped Hair">
- Garçonne
- </string>
- <string name="Cuff Flare">
- Jambe
- </string>
- <string name="Dark">
- Sombre
- </string>
- <string name="Dark Green">
- Vert foncé
- </string>
- <string name="Darker">
- Plus foncé
- </string>
- <string name="Deep">
- Profonde
- </string>
- <string name="Default Heels">
- Talons par défaut
- </string>
- <string name="Default Toe">
- Orteil par défaut
- </string>
- <string name="Dense">
- Dense
- </string>
- <string name="Dense hair">
- Cheveux denses
- </string>
- <string name="Double Chin">
- Double menton
- </string>
- <string name="Downturned">
- Pointant vers le bas
- </string>
- <string name="Duffle Bag">
- Membre viril
- </string>
- <string name="Ear Angle">
- Angle de l&apos;oreille
- </string>
- <string name="Ear Size">
- Taille de l&apos;oreille
- </string>
- <string name="Ear Tips">
- Pointes de l&apos;oreille
- </string>
- <string name="Egg Head">
- Forme de la tête
- </string>
- <string name="Eye Bags">
- Cernes
- </string>
- <string name="Eye Color">
- Couleur des yeux
- </string>
- <string name="Eye Depth">
- Profondeur des yeux
- </string>
- <string name="Eye Lightness">
- Clarté des yeux
- </string>
- <string name="Eye Opening">
- Ouverture des yeux
- </string>
- <string name="Eye Pop">
- Œil proéminent
- </string>
- <string name="Eye Size">
- Taille de l&apos;œil
- </string>
- <string name="Eye Spacing">
- Espacement des yeux
- </string>
- <string name="Eyeball Size">
- Taille du globe oculaire
- </string>
- <string name="Eyebrow Arc">
- Arc des sourcils
- </string>
- <string name="Eyebrow Density">
- Épaisseur des sourcils
- </string>
- <string name="Eyebrow Height">
- Hauteur des sourcils
- </string>
- <string name="Eyebrow Points">
- Direction des sourcils
- </string>
- <string name="Eyebrow Size">
- Taille des sourcils
- </string>
- <string name="Eyelash Length">
- Longueur des cils
- </string>
- <string name="Eyeliner">
- Eyeliner
- </string>
- <string name="Eyeliner Color">
- Couleur de l&apos;eyeliner
- </string>
- <string name="Eyes Back">
- Yeux noirs
- </string>
- <string name="Eyes Bugged">
- Yeux globuleux
- </string>
- <string name="Eyes Forward">
- Yeux vers l&apos;avant
- </string>
- <string name="Eyes Long Head">
- Yeux longue tête
- </string>
- <string name="Eyes Shear Left Up">
- Œil gauche vers le haut
- </string>
- <string name="Eyes Shear Right Up">
- Œil droit vers le haut
- </string>
- <string name="Eyes Short Head">
- Yeux petite tête
- </string>
- <string name="Eyes Spread">
- Espacement des yeux
- </string>
- <string name="Eyes Sunken">
- Yeux enfoncés
- </string>
- <string name="Eyes Together">
- Yeux rapprochés
- </string>
- <string name="Face Shear">
- Visage
- </string>
- <string name="Facial Definition">
- Définition du visage
- </string>
- <string name="Far Set Eyes">
- Yeux écartés
- </string>
- <string name="Fat">
- Grosse
- </string>
- <string name="Fat Head">
- Grosse tête
- </string>
- <string name="Fat Lips">
- Lèvres épaisses
- </string>
- <string name="Fat Lower">
- Inférieure plus épaisse
- </string>
- <string name="Fat Lower Lip">
- Lèvre inférieure épaisse
- </string>
- <string name="Fat Torso">
- Torse épais
- </string>
- <string name="Fat Upper">
- Supérieure plus épaisse
- </string>
- <string name="Fat Upper Lip">
- Lèvre supérieure épaisse
- </string>
- <string name="Female">
- Femme
- </string>
- <string name="Fingerless">
- Sans doigts
- </string>
- <string name="Fingers">
- Doigts
- </string>
- <string name="Flared Cuffs">
- Jambes larges
- </string>
- <string name="Flat">
- Plat
- </string>
- <string name="Flat Butt">
- Fesses plates
- </string>
- <string name="Flat Head">
- Tête plate
- </string>
- <string name="Flat Toe">
- Orteil plat
- </string>
- <string name="Foot Size">
- Pointure
- </string>
- <string name="Forehead Angle">
- Angle du front
- </string>
- <string name="Forehead Heavy">
- Front lourd
- </string>
- <string name="Freckles">
- Tâches de rousseur
- </string>
- <string name="Front Bangs Down">
- Mèches de devant longues
- </string>
- <string name="Front Bangs Up">
- Mèches de devant courtes
- </string>
- <string name="Front Fringe">
- Mèches de devant
- </string>
- <string name="Front Hair">
- Cheveux devant
- </string>
- <string name="Front Hair Down">
- Cheveux de devant longs
- </string>
- <string name="Front Hair Up">
- Cheveux de devant courts
- </string>
- <string name="Full Back">
- Arrière touffu
- </string>
- <string name="Full Eyeliner">
- Eyeliner marqué
- </string>
- <string name="Full Front">
- Devant touffu
- </string>
- <string name="Full Hair Sides">
- Côtés touffus
- </string>
- <string name="Full Sides">
- Côtés touffus
- </string>
- <string name="Glossy">
- Brillant
- </string>
- <string name="Glove Fingers">
- Doigts avec gants
- </string>
- <string name="Glove Length">
- Longueur des gants
- </string>
- <string name="Hair">
- Cheveux
- </string>
- <string name="Hair Back">
- Cheveux : Derrière
- </string>
- <string name="Hair Front">
- Cheveux : Devant
- </string>
- <string name="Hair Sides">
- Cheveux : Côtés
- </string>
- <string name="Hair Sweep">
- Sens de la coiffure
- </string>
- <string name="Hair Thickess">
- Épaisseur des cheveux
- </string>
- <string name="Hair Thickness">
- Épaisseur des cheveux
- </string>
- <string name="Hair Tilt">
- Inclinaison des cheveux
- </string>
- <string name="Hair Tilted Left">
- Vers la gauche
- </string>
- <string name="Hair Tilted Right">
- Vers la droite
- </string>
- <string name="Hair Volume">
- Cheveux : Volume
- </string>
- <string name="Hand Size">
- Taille de la main
- </string>
- <string name="Handlebars">
- Guidons
- </string>
- <string name="Head Length">
- Longueur de la tête
- </string>
- <string name="Head Shape">
- Forme de la tête
- </string>
- <string name="Head Size">
- Taille de la tête
- </string>
- <string name="Head Stretch">
- Allongement de la tête
- </string>
- <string name="Heel Height">
- Hauteur des talons
- </string>
- <string name="Heel Shape">
- Forme des talons
- </string>
- <string name="Height">
- Taille
- </string>
- <string name="High">
- Haut
- </string>
- <string name="High Heels">
- Talons hauts
- </string>
- <string name="High Jaw">
- Mâchoire haute
- </string>
- <string name="High Platforms">
- Plateformes hautes
- </string>
- <string name="High and Tight">
- Haut et serré
- </string>
- <string name="Higher">
- Plus élevé
- </string>
- <string name="Hip Length">
- Longueur hanche
- </string>
- <string name="Hip Width">
- Largeur hanche
- </string>
- <string name="In">
- In
- </string>
- <string name="In Shdw Color">
- Couleur ombre interne
- </string>
- <string name="In Shdw Opacity">
- Opacité ombre interne
- </string>
- <string name="Inner Eye Corner">
- Coin de l&apos;œil interne
- </string>
- <string name="Inner Eye Shadow">
- Ombre de l&apos;œil interne
- </string>
- <string name="Inner Shadow">
- Ombre interne
- </string>
- <string name="Jacket Length">
- Longueur de la veste
- </string>
- <string name="Jacket Wrinkles">
- Plis de la veste
- </string>
- <string name="Jaw Angle">
- Angle de la mâchoire
- </string>
- <string name="Jaw Jut">
- saillie de la mâchoire
- </string>
- <string name="Jaw Shape">
- Forme de la mâchoire
- </string>
- <string name="Join">
- Rapprochés
- </string>
- <string name="Jowls">
- Bajoues
- </string>
- <string name="Knee Angle">
- Angle du genou
- </string>
- <string name="Knock Kneed">
- Genoux rapprochés
- </string>
- <string name="Large">
- Grande
- </string>
- <string name="Large Hands">
- Grandes mains
- </string>
- <string name="Left Part">
- Raie à gauche
- </string>
- <string name="Leg Length">
- Longueur de la jambe
- </string>
- <string name="Leg Muscles">
- Muscles de la jambe
- </string>
- <string name="Less">
- Moins
- </string>
- <string name="Less Body Fat">
- Moins de graisse
- </string>
- <string name="Less Curtains">
- Moins
- </string>
- <string name="Less Freckles">
- Moins
- </string>
- <string name="Less Full">
- Moins
- </string>
- <string name="Less Gravity">
- Moins
- </string>
- <string name="Less Love">
- Moins
- </string>
- <string name="Less Muscles">
- Moins
- </string>
- <string name="Less Muscular">
- Moins
- </string>
- <string name="Less Rosy">
- Moins
- </string>
- <string name="Less Round">
- Moins
- </string>
- <string name="Less Saddle">
- Moins
- </string>
- <string name="Less Square">
- Moins
- </string>
- <string name="Less Volume">
- Moins
- </string>
- <string name="Less soul">
- Moins
- </string>
- <string name="Lighter">
- Plus léger
- </string>
- <string name="Lip Cleft">
- Fente labiale
- </string>
- <string name="Lip Cleft Depth">
- Profondeur de la fente labiale
- </string>
- <string name="Lip Fullness">
- Volume des lèvres
- </string>
- <string name="Lip Pinkness">
- Rougeur des lèvres
- </string>
- <string name="Lip Ratio">
- Proportion des lèvres
- </string>
- <string name="Lip Thickness">
- Épaisseur des lèvres
- </string>
- <string name="Lip Width">
- Largeur des lèvres
- </string>
- <string name="Lipgloss">
- Brillant à lèvres
- </string>
- <string name="Lipstick">
- Rouge à lèvres
- </string>
- <string name="Lipstick Color">
- Couleur du rouge à lèvres
- </string>
- <string name="Long">
- Long
- </string>
- <string name="Long Head">
- Tête longue
- </string>
- <string name="Long Hips">
- Hanches longues
- </string>
- <string name="Long Legs">
- Jambes longues
- </string>
- <string name="Long Neck">
- Long cou
- </string>
- <string name="Long Pigtails">
- Longues couettes
- </string>
- <string name="Long Ponytail">
- Longue queue de cheval
- </string>
- <string name="Long Torso">
- Torse long
- </string>
- <string name="Long arms">
- Longs bras
- </string>
- <string name="Longcuffs">
- Manches longues
- </string>
- <string name="Loose Pants">
- Pantalons amples
- </string>
- <string name="Loose Shirt">
- Chemise ample
- </string>
- <string name="Loose Sleeves">
- Manches amples
- </string>
- <string name="Love Handles">
- Poignées d&apos;amour
- </string>
- <string name="Low">
- Bas
- </string>
- <string name="Low Heels">
- Talons bas
- </string>
- <string name="Low Jaw">
- Mâchoire basse
- </string>
- <string name="Low Platforms">
- Plateformes basses
- </string>
- <string name="Low and Loose">
- Bas et ample
- </string>
- <string name="Lower">
- Abaisser
- </string>
- <string name="Lower Bridge">
- Arête plus basse
- </string>
- <string name="Lower Cheeks">
- Joues plus basses
- </string>
- <string name="Male">
- Homme
- </string>
- <string name="Middle Part">
- Raie au milieu
- </string>
- <string name="More">
- Plus
- </string>
- <string name="More Blush">
- Plus
- </string>
- <string name="More Body Fat">
- Plus
- </string>
- <string name="More Curtains">
- Plus
- </string>
- <string name="More Eyeshadow">
- Plus
- </string>
- <string name="More Freckles">
- Plus
- </string>
- <string name="More Full">
- Plus
- </string>
- <string name="More Gravity">
- Plus
- </string>
- <string name="More Lipstick">
- Plus
- </string>
- <string name="More Love">
- Plus
- </string>
- <string name="More Lower Lip">
- Plus
- </string>
- <string name="More Muscles">
- Plus
- </string>
- <string name="More Muscular">
- Plus
- </string>
- <string name="More Rosy">
- Plus
- </string>
- <string name="More Round">
- Plus
- </string>
- <string name="More Saddle">
- Plus
- </string>
- <string name="More Sloped">
- Plus
- </string>
- <string name="More Square">
- Plus
- </string>
- <string name="More Upper Lip">
- Plus
- </string>
- <string name="More Vertical">
- Plus
- </string>
- <string name="More Volume">
- Plus
- </string>
- <string name="More soul">
- Plus
- </string>
- <string name="Moustache">
- Moustache
- </string>
- <string name="Mouth Corner">
- Coin de la bouche
- </string>
- <string name="Mouth Position">
- Position de la bouche
- </string>
- <string name="Mowhawk">
- Mowhawk
- </string>
- <string name="Muscular">
- Musclé
- </string>
- <string name="Mutton Chops">
- Rouflaquettes
- </string>
- <string name="Nail Polish">
- Vernis à ongles
- </string>
- <string name="Nail Polish Color">
- Couleur du vernis
- </string>
- <string name="Narrow">
- Étroit
- </string>
- <string name="Narrow Back">
- Arrière étroit
- </string>
- <string name="Narrow Front">
- Devant étroit
- </string>
- <string name="Narrow Lips">
- Lèvres étroites
- </string>
- <string name="Natural">
- Naturel
- </string>
- <string name="Neck Length">
- Longueur du cou
- </string>
- <string name="Neck Thickness">
- Épaisseur du cou
- </string>
- <string name="No Blush">
- Pas de blush
- </string>
- <string name="No Eyeliner">
- Pas de eyeliner
- </string>
- <string name="No Eyeshadow">
- Pas d&apos;ombre à paupières
- </string>
- <string name="No Heels">
- Pas de talons
- </string>
- <string name="No Lipgloss">
- Pas de brillant à lèvres
- </string>
- <string name="No Lipstick">
- Pas de rouge à lèvres
- </string>
- <string name="No Part">
- Pas de raie
- </string>
- <string name="No Polish">
- Pas de vernis
- </string>
- <string name="No Red">
- Pas de rouge
- </string>
- <string name="No Spikes">
- Pas de spikes
- </string>
- <string name="No White">
- Pas de blanc
- </string>
- <string name="No Wrinkles">
- Pas de rides
- </string>
- <string name="Normal Lower">
- Normal plus bas
- </string>
- <string name="Normal Upper">
- Normal plus haut
- </string>
- <string name="Nose Left">
- Nez à gauche
- </string>
- <string name="Nose Right">
- Nez à droite
- </string>
- <string name="Nose Size">
- Taille du nez
- </string>
- <string name="Nose Thickness">
- Épaisseur du nez
- </string>
- <string name="Nose Tip Angle">
- Angle du bout du nez
- </string>
- <string name="Nose Tip Shape">
- Forme du bout du nez
- </string>
- <string name="Nose Width">
- Largeur du nez
- </string>
- <string name="Nostril Division">
- Division des narines
- </string>
- <string name="Nostril Width">
- Largeur des narines
- </string>
- <string name="Old">
- Vieux
- </string>
- <string name="Opaque">
- Opaque
- </string>
- <string name="Open">
- Ouvert
- </string>
- <string name="Open Back">
- Derrière ouvert
- </string>
- <string name="Open Front">
- Devant ouvert
- </string>
- <string name="Open Left">
- Ouvert à gauche
- </string>
- <string name="Open Right">
- Ouvert à droite
- </string>
- <string name="Orange">
- Orange
- </string>
- <string name="Out">
- Dehors
- </string>
- <string name="Out Shdw Color">
- Couleur de l&apos;ombre externe
- </string>
- <string name="Out Shdw Opacity">
- Opacité de l&apos;ombre externe
- </string>
- <string name="Outer Eye Corner">
- Coin de l&apos;œil externe
- </string>
- <string name="Outer Eye Shadow">
- Ombre de l&apos;œil externe
- </string>
- <string name="Outer Shadow">
- Ombre externe
- </string>
- <string name="Overbite">
- Chevauchement
- </string>
- <string name="Package">
- Parties
- </string>
- <string name="Painted Nails">
- Ongles vernis
- </string>
- <string name="Pale">
- Pâle
- </string>
- <string name="Pants Crotch">
- Entrejambe
- </string>
- <string name="Pants Fit">
- Taille
- </string>
- <string name="Pants Length">
- Longueur
- </string>
- <string name="Pants Waist">
- Taille
- </string>
- <string name="Pants Wrinkles">
- Plis
- </string>
- <string name="Part">
- Raie
- </string>
- <string name="Part Bangs">
- Séparation de la frange
- </string>
- <string name="Pectorals">
- Pectoraux
- </string>
- <string name="Pigment">
- Pigmentation
- </string>
- <string name="Pigtails">
- Couettes
- </string>
- <string name="Pink">
- Rose
- </string>
- <string name="Pinker">
- Plus rose
- </string>
- <string name="Platform Height">
- Hauteur de la plateforme
- </string>
- <string name="Platform Width">
- Largeur de la plateforme
- </string>
- <string name="Pointy">
- Pointu
- </string>
- <string name="Pointy Heels">
- Talons pointus
- </string>
- <string name="Pointy Toe">
- Orteil pointu
- </string>
- <string name="Ponytail">
- Queue de cheval
- </string>
- <string name="Poofy Skirt">
- Jupe bouffante
- </string>
- <string name="Pop Left Eye">
- Œil gauche saillant
- </string>
- <string name="Pop Right Eye">
- Œil droit saillant
- </string>
- <string name="Puffy">
- Gonflé
- </string>
- <string name="Puffy Eyelids">
- Paupières gonflées
- </string>
- <string name="Rainbow Color">
- Couleur de l&apos;arc en ciel
- </string>
- <string name="Red Hair">
- Cheveux roux
- </string>
- <string name="Red Skin">
- Peau rouge
- </string>
- <string name="Regular">
- Standard
- </string>
- <string name="Regular Muscles">
- Muscles normaux
- </string>
- <string name="Right Part">
- Raie à droite
- </string>
- <string name="Rosy Complexion">
- Teint rosé
- </string>
- <string name="Round">
- Rond
- </string>
- <string name="Round Forehead">
- Front rond
- </string>
- <string name="Ruddiness">
- Rougeur
- </string>
- <string name="Ruddy">
- Rouge
- </string>
- <string name="Rumpled Hair">
- Texture
- </string>
- <string name="Saddle Bags">
- Culotte de cheval
- </string>
- <string name="Saddlebags">
- Culotte de cheval
- </string>
- <string name="Scrawny">
- Maigre
- </string>
- <string name="Scrawny Leg">
- Jambes maigres
- </string>
- <string name="Separate">
- Séparés
- </string>
- <string name="Shading">
- Dégradé
- </string>
- <string name="Shadow hair">
- Cheveux
- </string>
- <string name="Shallow">
- Creux
- </string>
- <string name="Shear Back">
- Coupe derrière
- </string>
- <string name="Shear Face">
- Visage
- </string>
- <string name="Shear Front">
- Devant dégagé
- </string>
- <string name="Shear Left">
- Gauche dégagée
- </string>
- <string name="Shear Left Up">
- Haut gauche dégagé
- </string>
- <string name="Shear Right">
- Droite dégagée
- </string>
- <string name="Shear Right Up">
- Haut droit dégagé
- </string>
- <string name="Sheared Back">
- Dégagé derrière
- </string>
- <string name="Sheared Front">
- Dégagé devant
- </string>
- <string name="Shift Left">
- Déplacer vers la gauche
- </string>
- <string name="Shift Mouth">
- Déplacer la bouche
- </string>
- <string name="Shift Right">
- Déplacer vers la droite
- </string>
- <string name="Shirt Bottom">
- Chemise
- </string>
- <string name="Shirt Fit">
- Taille
- </string>
- <string name="Shirt Wrinkles">
- Plis
- </string>
- <string name="Shoe Height">
- Hauteur de la chaussure
- </string>
- <string name="Short">
- Court
- </string>
- <string name="Short Arms">
- Bras courts
- </string>
- <string name="Short Legs">
- Jambes courtes
- </string>
- <string name="Short Neck">
- Petit cou
- </string>
- <string name="Short Pigtails">
- Couettes courtes
- </string>
- <string name="Short Ponytail">
- Queue de cheval courte
- </string>
- <string name="Short Sideburns">
- Favoris courts
- </string>
- <string name="Short Torso">
- Torse court
- </string>
- <string name="Short hips">
- Hanches courtes
- </string>
- <string name="Shoulders">
- Épaules
- </string>
- <string name="Side Bangs">
- Mèches sur le côté
- </string>
- <string name="Side Bangs Down">
- Mèches sur le côté en bas
- </string>
- <string name="Side Bangs Up">
- Mèches sur le côté en haut
- </string>
- <string name="Side Fringe">
- Frange sur le côté
- </string>
- <string name="Sideburns">
- Favoris
- </string>
- <string name="Sides Hair">
- Cheveux sur le côté
- </string>
- <string name="Sides Hair Down">
- Cheveux sur le côté en bas
- </string>
- <string name="Sides Hair Up">
- Cheveux sur le côté en haut
- </string>
- <string name="Skinny">
- Maigre
- </string>
- <string name="Skinny Neck">
- Cou maigre
- </string>
- <string name="Skirt Fit">
- Taille de la jupe
- </string>
- <string name="Skirt Length">
- Longueur de la jupe
- </string>
- <string name="Slanted Forehead">
- Front incliné
- </string>
- <string name="Sleeve Length">
- Longueur de la manche
- </string>
- <string name="Sleeve Looseness">
- Ampleur de la manche
- </string>
- <string name="Slit Back">
- Fente : Derrière
- </string>
- <string name="Slit Front">
- Fente : Devant
- </string>
- <string name="Slit Left">
- Fente : Gauche
- </string>
- <string name="Slit Right">
- Fente : Droite
- </string>
- <string name="Small">
- Petite
- </string>
- <string name="Small Hands">
- Petites mains
- </string>
- <string name="Small Head">
- Petite tête
- </string>
- <string name="Smooth">
- Lisse
- </string>
- <string name="Smooth Hair">
- Cheveux lisses
- </string>
- <string name="Socks Length">
- Longueur des chaussettes
- </string>
- <string name="Some">
- Quelques un(e)s
- </string>
- <string name="Soulpatch">
- Soulpatch
- </string>
- <string name="Sparse">
- Rares
- </string>
- <string name="Spiked Hair">
- Mèches en pointe
- </string>
- <string name="Square">
- Carré
- </string>
- <string name="Square Toe">
- Orteil carré
- </string>
- <string name="Squash Head">
- Écraser la tête
- </string>
- <string name="Squash/Stretch Head">
- Allonger/écraser la tête
- </string>
- <string name="Stretch Head">
- Allonger la tête
- </string>
- <string name="Sunken">
- Enfoncées
- </string>
- <string name="Sunken Chest">
- Poitrine enfoncée
- </string>
- <string name="Sunken Eyes">
- Yeux enfoncés
- </string>
- <string name="Sweep Back">
- En arrière
- </string>
- <string name="Sweep Forward">
- Vers l&apos;avant
- </string>
- <string name="Swept Back">
- En arrière
- </string>
- <string name="Swept Back Hair">
- Cheveux en arrière
- </string>
- <string name="Swept Forward">
- Vers l&apos;avant
- </string>
- <string name="Swept Forward Hair">
- Cheveux vers l&apos;&apos;avant
- </string>
- <string name="Tall">
- Grand
- </string>
- <string name="Taper Back">
- Biseauter à l&apos;arrière
- </string>
- <string name="Taper Front">
- Biseauter à l&apos;avant
- </string>
- <string name="Thick Heels">
- Talons épais
- </string>
- <string name="Thick Neck">
- Cou épais
- </string>
- <string name="Thick Toe">
- Orteil épais
- </string>
- <string name="Thickness">
- Épaisseur
- </string>
- <string name="Thin">
- Fins
- </string>
- <string name="Thin Eyebrows">
- Sourcils fins
- </string>
- <string name="Thin Lips">
- Lèvres fines
- </string>
- <string name="Thin Nose">
- Nez fin
- </string>
- <string name="Tight Chin">
- Menton fin
- </string>
- <string name="Tight Cuffs">
- Jambes serrées
- </string>
- <string name="Tight Pants">
- Pantalons serrés
- </string>
- <string name="Tight Shirt">
- Chemise serrée
- </string>
- <string name="Tight Skirt">
- Jupe serrée
- </string>
- <string name="Tight Sleeves">
- Manches serrées
- </string>
- <string name="Tilt Left">
- Pencher sur la gauche
- </string>
- <string name="Tilt Right">
- Pencher sur la droite
- </string>
- <string name="Toe Shape">
- Forme de l&apos;orteil
- </string>
- <string name="Toe Thickness">
- Épaisseur de l&apos;orteil
- </string>
- <string name="Torso Length">
- Longueur du torse
- </string>
- <string name="Torso Muscles">
- Muscles du torse
- </string>
- <string name="Torso Scrawny">
- Torse maigre
- </string>
- <string name="Unattached">
- Séparés
- </string>
- <string name="Uncreased">
- Lisse
- </string>
- <string name="Underbite">
- Rentré
- </string>
- <string name="Unnatural">
- Artificiel
- </string>
- <string name="Upper Bridge">
- Arête supérieure
- </string>
- <string name="Upper Cheeks">
- Pommettes
- </string>
- <string name="Upper Chin Cleft">
- Fente du menton supérieure
- </string>
- <string name="Upper Eyelid Fold">
- Paupière supérieure
- </string>
- <string name="Upturned">
- En trompette
- </string>
- <string name="Very Red">
- Très rouge
- </string>
- <string name="Waist Height">
- Hauteur de la taille
- </string>
- <string name="Well-Fed">
- Bien nourri
- </string>
- <string name="White Hair">
- Cheveux blancs
- </string>
- <string name="Wide">
- Large
- </string>
- <string name="Wide Back">
- Dos large
- </string>
- <string name="Wide Front">
- Devant large
- </string>
- <string name="Wide Lips">
- Lèvres larges
- </string>
- <string name="Wild">
- Revêche
- </string>
- <string name="Wrinkles">
- Rides
- </string>
- <string name="LocationCtrlAddLandmarkTooltip">
- Ajouter à mes repères
- </string>
- <string name="LocationCtrlEditLandmarkTooltip">
- Modifier mes repères
- </string>
- <string name="UpdaterWindowTitle">
- [APP_NAME] Mettre à jour
- </string>
- <string name="UpdaterNowUpdating">
- En train de charger [APP_NAME]...
- </string>
- <string name="UpdaterNowInstalling">
- En train d&apos;installer [APP_NAME]...
- </string>
- <string name="UpdaterUpdatingDescriptive">
- Le client [APP_NAME] est en train d&apos;être mis à jour. Cela peut prendre un certain temps, merci de votre patience.
- </string>
- <string name="UpdaterProgressBarTextWithEllipses">
- Mise à jour en cours...
- </string>
- <string name="UpdaterProgressBarText">
- Mise à jour en cours
- </string>
- <string name="UpdaterFailDownloadTitle">
- Le téléchargement de la mise à jour a échoué
- </string>
- <string name="UpdaterFailUpdateDescriptive">
- Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version sur www.secondlife.com.
- </string>
- <string name="UpdaterFailInstallTitle">
- L&apos;installation de la mise à jour a échoué
- </string>
- <string name="UpdaterFailStartTitle">
- Impossible de lancer le client
- </string>
- <string name="only_user_message">
- Vous êtes le seul participant à cette session.
- </string>
- <string name="offline_message">
- [FIRST] [LAST] est déconnecté(e).
- </string>
- <string name="invite_message">
- Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME].
- </string>
- <string name="generic_request_error">
- Erreur lors de la requête, veuillez réessayer ultérieurement.
- </string>
- <string name="insufficient_perms_error">
- Vous n&apos;avez pas les droits requis.
- </string>
- <string name="session_does_not_exist_error">
- La session a expiré
- </string>
- <string name="no_ability_error">
- Vous n&apos;avez pas ce pouvoir.
- </string>
- <string name="no_ability">
- Vous n&apos;avez pas ce pouvoir.
- </string>
- <string name="not_a_mod_error">
- Vous n&apos;êtes pas modérateur de session.
- </string>
- <string name="muted_error">
- Un modérateur de groupe a désactivé votre chat écrit.
- </string>
- <string name="add_session_event">
- Impossible d&apos;ajouter des participants à la session de chat avec [RECIPIENT].
- </string>
- <string name="message_session_event">
- Impossible d&apos;envoyer votre message à la session de chat avec [RECIPIENT].
- </string>
- <string name="removed_from_group">
- Vous avez été supprimé du groupe.
- </string>
- <string name="close_on_no_ability">
- Vous ne pouvez plus participer à la session de chat.
- </string>
-</strings>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+ It is only for those strings which do not belong in a floater.
+ For example, the strings used in avatar chat bubbles, and strings
+ that are returned from one component and may appear in many places-->
+<strings>
+ <string name="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Second Life
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Grille de Second Life
+ </string>
+ <string name="SUPPORT_SITE">
+ Portail Assistance Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Détection du matériel...
+ </string>
+ <string name="StartupLoading">
+ Chargement
+ </string>
+ <string name="Fullbright">
+ Fullbright (Legacy)
+ </string>
+ <string name="LoginInProgress">
+ La connexion à [APP_NAME] apparaît peut-être comme étant gelée. Veuillez patienter.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Connexion...
+ </string>
+ <string name="LoginAuthenticating">
+ Authentification en cours
+ </string>
+ <string name="LoginMaintenance">
+ Maintenance du compte en cours…
+ </string>
+ <string name="LoginAttempt">
+ La tentative de connexion précédente a échoué. Connexion, esssai [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Monde en cours de chargement…
+ </string>
+ <string name="LoginInitializingBrowser">
+ Navigateur Web incorporé en cours d&apos;initialisation…
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Multimédia en cours d&apos;initialisation…
+ </string>
+ <string name="LoginVerifyingCache">
+ Fichiers du cache en cours de vérification (peut prendre 60-90 s)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Réponse en cours de traitement…
+ </string>
+ <string name="LoginInitializingWorld">
+ Monde en cours d&apos;initialisation…
+ </string>
+ <string name="LoginDecodingImages">
+ Décodage des images en cours...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Quicktime en cours d&apos;initialisation
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ Quicktime introuvable, impossible de procéder à l&apos;initialisation.
+ </string>
+ <string name="LoginQuicktimeOK">
+ Initialisation de Quicktime réussie.
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Liaison avec la région en cours de création...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Connexion avec la région en cours...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Habits en cours de téléchargement...
+ </string>
+ <string name="AgentLostConnection">
+ Il y a peut-être des problèmes techniques dans cette region. Veuillez vérifier votre connexion Internet.
+ </string>
+ <string name="TooltipPerson">
+ Personne
+ </string>
+ <string name="TooltipNoName">
+ (pas de nom)
+ </string>
+ <string name="TooltipOwner">
+ Propriétaire :
+ </string>
+ <string name="TooltipPublic">
+ Public
+ </string>
+ <string name="TooltipIsGroup">
+ (Groupe)
+ </string>
+ <string name="TooltipForSaleL$">
+ À vendre : [AMOUNT] L$
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Contruction de groupe
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Pas de construction
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Contruction de groupe
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Non sécurisé
+ </string>
+ <string name="TooltipFlagNoFly">
+ Interdiction de voler
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Scripts de groupe
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Pas de scripts
+ </string>
+ <string name="TooltipLand">
+ Terrain :
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Impossible de faire glisser plus d&apos;un objet ici
+ </string>
+ <string name="TooltipHttpUrl">
+ Cliquez pour afficher cette page web
+ </string>
+ <string name="TooltipSLURL">
+ Cliquez pour en savoir plus sur cet endroit
+ </string>
+ <string name="TooltipAgentUrl">
+ Cliquez pour afficher le profil de ce résident
+ </string>
+ <string name="TooltipGroupUrl">
+ Cliquez pour afficher la description de ce groupe
+ </string>
+ <string name="TooltipEventUrl">
+ Cliquez pour afficher la description de cet événement
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Cliquez pour afficher cette petite annonce
+ </string>
+ <string name="TooltipParcelUrl">
+ Cliquez pour afficher la description de cette parcelle
+ </string>
+ <string name="TooltipTeleportUrl">
+ Cliquez pour vous téléporter à cet endroit
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Cliquez pour afficher la description de cet objet
+ </string>
+ <string name="TooltipSLAPP">
+ Cliquez pour exécuter la commande secondlife:// command
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Fermer (⌘-W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Fermer (Ctrl+W)
+ </string>
+ <string name="BUTTON_RESTORE">
+ Restaurer
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimiser
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Réduire
+ </string>
+ <string name="BUTTON_DOCK">
+ Attacher
+ </string>
+ <string name="BUTTON_UNDOCK">
+ Détacher
+ </string>
+ <string name="BUTTON_HELP">
+ Afficher l&apos;aide
+ </string>
+ <string name="RetrievingData">
+ En cours d&apos;extraction...
+ </string>
+ <string name="ReleaseNotes">
+ Notes de version
+ </string>
+ <string name="LoadingData">
+ Chargement..
+ </string>
+ <string name="AvatarNameNobody">
+ (personne)
+ </string>
+ <string name="AvatarNameWaiting">
+ (en attente)
+ </string>
+ <string name="AvatarNameHippos">
+ (hippos)
+ </string>
+ <string name="GroupNameNone">
+ (aucun)
+ </string>
+ <string name="AssetErrorNone">
+ Aucune erreur
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Requête de l&apos;actif : échec
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Requête de l&apos;actif : fichier inexistant
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Requête de l&apos;actif : actif introuvable dans la base de données
+ </string>
+ <string name="AssetErrorEOF">
+ Fin du ficher
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Impossible d&apos;ouvrir le fichier
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Fichier introuvable
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Délai d&apos;attente du transfert du fichier dépassé
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Disparition du circuit
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Il y a une différence de prix entre le client et le serveur
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Statut inconnu
+ </string>
+ <string name="texture">
+ texture
+ </string>
+ <string name="sound">
+ son
+ </string>
+ <string name="calling card">
+ carte de visite
+ </string>
+ <string name="landmark">
+ repère
+ </string>
+ <string name="legacy script">
+ script (ancienne version)
+ </string>
+ <string name="clothing">
+ habits
+ </string>
+ <string name="object">
+ objet
+ </string>
+ <string name="note card">
+ note
+ </string>
+ <string name="folder">
+ dossier
+ </string>
+ <string name="root">
+ racine
+ </string>
+ <string name="lsl2 script">
+ script lsl2
+ </string>
+ <string name="lsl bytecode">
+ bytecode lsl
+ </string>
+ <string name="tga texture">
+ texture tga
+ </string>
+ <string name="body part">
+ partie du corps
+ </string>
+ <string name="snapshot">
+ photo
+ </string>
+ <string name="lost and found">
+ objets trouvés
+ </string>
+ <string name="targa image">
+ image targa
+ </string>
+ <string name="trash">
+ poubelle
+ </string>
+ <string name="jpeg image">
+ image jpeg
+ </string>
+ <string name="animation">
+ animation
+ </string>
+ <string name="gesture">
+ geste
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ favori
+ </string>
+ <string name="symbolic link">
+ lien
+ </string>
+ <string name="AvatarAway">
+ Absent
+ </string>
+ <string name="AvatarBusy">
+ Occupé
+ </string>
+ <string name="AvatarMuted">
+ Ignoré
+ </string>
+ <string name="anim_express_afraid">
+ Effrayé
+ </string>
+ <string name="anim_express_anger">
+ En colère
+ </string>
+ <string name="anim_away">
+ Absent
+ </string>
+ <string name="anim_backflip">
+ Salto arrière
+ </string>
+ <string name="anim_express_laugh">
+ Rire en se tenant le ventre
+ </string>
+ <string name="anim_express_toothsmile">
+ Grand sourire
+ </string>
+ <string name="anim_blowkiss">
+ Envoyer un baiser
+ </string>
+ <string name="anim_express_bored">
+ Bailler d&apos;ennui
+ </string>
+ <string name="anim_bow">
+ S&apos;incliner
+ </string>
+ <string name="anim_clap">
+ Applaudir
+ </string>
+ <string name="anim_courtbow">
+ Révérence de cour
+ </string>
+ <string name="anim_express_cry">
+ Pleurer
+ </string>
+ <string name="anim_dance1">
+ Danse 1
+ </string>
+ <string name="anim_dance2">
+ Danse 2
+ </string>
+ <string name="anim_dance3">
+ Danse 3
+ </string>
+ <string name="anim_dance4">
+ Danse 4
+ </string>
+ <string name="anim_dance5">
+ Danse 5
+ </string>
+ <string name="anim_dance6">
+ Danse 6
+ </string>
+ <string name="anim_dance7">
+ Danse 7
+ </string>
+ <string name="anim_dance8">
+ Danse 8
+ </string>
+ <string name="anim_express_disdain">
+ Mépris
+ </string>
+ <string name="anim_drink">
+ Boire
+ </string>
+ <string name="anim_express_embarrased">
+ Gêne
+ </string>
+ <string name="anim_angry_fingerwag">
+ Désapprobation
+ </string>
+ <string name="anim_fist_pump">
+ Victoire
+ </string>
+ <string name="anim_yoga_float">
+ Yoga
+ </string>
+ <string name="anim_express_frown">
+ Froncer les sourcils
+ </string>
+ <string name="anim_impatient">
+ Impatient
+ </string>
+ <string name="anim_jumpforjoy">
+ Sauter de joie
+ </string>
+ <string name="anim_kissmybutt">
+ Va te faire voir !
+ </string>
+ <string name="anim_express_kiss">
+ Baiser
+ </string>
+ <string name="anim_laugh_short">
+ Rire
+ </string>
+ <string name="anim_musclebeach">
+ Montrer ses muscles
+ </string>
+ <string name="anim_no_unhappy">
+ Non (mécontent)
+ </string>
+ <string name="anim_no_head">
+ Non
+ </string>
+ <string name="anim_nyanya">
+ Na na na na nère
+ </string>
+ <string name="anim_punch_onetwo">
+ Gauche-droite
+ </string>
+ <string name="anim_express_open_mouth">
+ Bouche ouverte
+ </string>
+ <string name="anim_peace">
+ Paix
+ </string>
+ <string name="anim_point_you">
+ Montrer quelqu&apos;un du doigt
+ </string>
+ <string name="anim_point_me">
+ Se montrer du doigt
+ </string>
+ <string name="anim_punch_l">
+ Gauche
+ </string>
+ <string name="anim_punch_r">
+ Droite
+ </string>
+ <string name="anim_rps_countdown">
+ Compter (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_paper">
+ Papier (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_rock">
+ Pierre (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_scissors">
+ Ciseaux (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_express_repulsed">
+ Dégoût
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Coup de pied circulaire
+ </string>
+ <string name="anim_express_sad">
+ Triste
+ </string>
+ <string name="anim_salute">
+ Salut
+ </string>
+ <string name="anim_shout">
+ Crier
+ </string>
+ <string name="anim_express_shrug">
+ Hausser les épaules
+ </string>
+ <string name="anim_express_smile">
+ Sourire
+ </string>
+ <string name="anim_smoke_idle">
+ Fumer, immobile
+ </string>
+ <string name="anim_smoke_inhale">
+ Fumer, prendre une bouffée
+ </string>
+ <string name="anim_smoke_throw_down">
+ Fumer, jeter son mégot
+ </string>
+ <string name="anim_express_surprise">
+ Surprise
+ </string>
+ <string name="anim_sword_strike_r">
+ Coup d&apos;épée
+ </string>
+ <string name="anim_angry_tantrum">
+ Caprice
+ </string>
+ <string name="anim_express_tongue_out">
+ Tirer la langue
+ </string>
+ <string name="anim_hello">
+ Faire signe
+ </string>
+ <string name="anim_whisper">
+ Chuchoter
+ </string>
+ <string name="anim_whistle">
+ Siffler
+ </string>
+ <string name="anim_express_wink">
+ Clin d&apos;œil
+ </string>
+ <string name="anim_wink_hollywood">
+ Clin d&apos;œil (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Soucis
+ </string>
+ <string name="anim_yes_happy">
+ Oui (Joie)
+ </string>
+ <string name="anim_yes_head">
+ Oui
+ </string>
+ <string name="texture_loading">
+ Chargement...
+ </string>
+ <string name="worldmap_offline">
+ Hors ligne
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Fichier incomplet
+ </string>
+ <string name="ST_NO_JOINT">
+ Impossible de trouver ROOT ou JOINT.
+ </string>
+ <string name="whisper">
+ chuchote :
+ </string>
+ <string name="shout">
+ crie :
+ </string>
+ <string name="ringing">
+ Connexion au chat vocal du Monde en cours…
+ </string>
+ <string name="connected">
+ Connecté(e)
+ </string>
+ <string name="unavailable">
+ Voix non disponible à l&apos;endroit où vous êtes
+ </string>
+ <string name="hang_up">
+ Déconnecté du chat vocal
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ &apos;[OBJECTNAME]&apos;, un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], a reçu le droit de : [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ &apos;[OBJECTNAME]&apos;, un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], n&apos;a pas reçu le droit de : [PERMISSIONS].
+ </string>
+ <string name="ScriptTakeMoney">
+ Débiter vos Linden dollars (L$)
+ </string>
+ <string name="ActOnControlInputs">
+ Utiliser vos touches de commandes
+ </string>
+ <string name="RemapControlInputs">
+ Reconfigurer vos touches de commandes
+ </string>
+ <string name="AnimateYourAvatar">
+ Animer votre avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Attacher à votre avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Passer l&apos;objet dans le domaine public (sans propriétaire)
+ </string>
+ <string name="LinkAndDelink">
+ Lier et délier d&apos;autres objets
+ </string>
+ <string name="AddAndRemoveJoints">
+ Créer et supprimer des liens avec d&apos;autres objets
+ </string>
+ <string name="ChangePermissions">
+ Modifier ses droits
+ </string>
+ <string name="TrackYourCamera">
+ Suivre votre caméra
+ </string>
+ <string name="ControlYourCamera">
+ Contrôler votre caméra
+ </string>
+ <string name="SIM_ACCESS_PG">
+ PG
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Mature
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adult
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Hors ligne
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Inconnu
+ </string>
+ <string name="land_type_unknown">
+ (inconnu)
+ </string>
+ <string name="all_files">
+ Tous fichiers
+ </string>
+ <string name="sound_files">
+ Sons
+ </string>
+ <string name="animation_files">
+ Animations
+ </string>
+ <string name="image_files">
+ Images
+ </string>
+ <string name="save_file_verb">
+ Enregistrer
+ </string>
+ <string name="load_file_verb">
+ Charger
+ </string>
+ <string name="targa_image_files">
+ Images Targa
+ </string>
+ <string name="bitmap_image_files">
+ Images Bitmap
+ </string>
+ <string name="avi_movie_file">
+ Fichier de film AVI
+ </string>
+ <string name="xaf_animation_file">
+ Fichier d&apos;animation XAF
+ </string>
+ <string name="xml_file">
+ Fichier XML
+ </string>
+ <string name="dot_raw_file">
+ Fichier RAW
+ </string>
+ <string name="compressed_image_files">
+ Images compressées
+ </string>
+ <string name="load_files">
+ Charger des fichiers
+ </string>
+ <string name="choose_the_directory">
+ Choisir le répertoire
+ </string>
+ <string name="AvatarSetNotAway">
+ Ne plus me mettre en mode absent
+ </string>
+ <string name="AvatarSetAway">
+ Me mettre en mode absent
+ </string>
+ <string name="AvatarSetNotBusy">
+ Ne plus me mettre en mode occupé
+ </string>
+ <string name="AvatarSetBusy">
+ Me mettre en mode occupé
+ </string>
+ <string name="shape">
+ Silhouette
+ </string>
+ <string name="skin">
+ Peau
+ </string>
+ <string name="hair">
+ Cheveux
+ </string>
+ <string name="eyes">
+ Yeux
+ </string>
+ <string name="shirt">
+ Chemise
+ </string>
+ <string name="pants">
+ Pantalon
+ </string>
+ <string name="shoes">
+ Chaussures
+ </string>
+ <string name="socks">
+ Chaussettes
+ </string>
+ <string name="jacket">
+ Veste
+ </string>
+ <string name="gloves">
+ Gants
+ </string>
+ <string name="undershirt">
+ Sous-vêtements (homme)
+ </string>
+ <string name="underpants">
+ Sous-vêtements (femme)
+ </string>
+ <string name="skirt">
+ Jupe
+ </string>
+ <string name="invalid">
+ non valide
+ </string>
+ <string name="BodyPartsRightArm">
+ Bras droit
+ </string>
+ <string name="BodyPartsHead">
+ Tête
+ </string>
+ <string name="BodyPartsLeftArm">
+ Bras gauche
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Jambe gauche
+ </string>
+ <string name="BodyPartsTorso">
+ Torse
+ </string>
+ <string name="BodyPartsRightLeg">
+ Jambe droite
+ </string>
+ <string name="GraphicsQualityLow">
+ Faible
+ </string>
+ <string name="GraphicsQualityMid">
+ Moyen
+ </string>
+ <string name="GraphicsQualityHigh">
+ Élevé
+ </string>
+ <string name="LeaveMouselook">
+ Appuyez sur ESC pour quitter la vue subjective
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Aucun objet correspondant ne se trouve dans l&apos;inventaire.
+ </string>
+ <string name="InventoryNoTexture">
+ Vous n&apos;avez pas de copie de cette texture dans votre inventaire
+ </string>
+ <string name="LoadingContents">
+ chargement des contenus en cours...
+ </string>
+ <string name="NoContents">
+ Aucun contenu
+ </string>
+ <string name="InvFolder My Inventory">
+ Mon inventaire
+ </string>
+ <string name="InvFolder My Favorites">
+ Mes favoris
+ </string>
+ <string name="InvFolder Library">
+ Bibliothèque
+ </string>
+ <string name="InvFolder Textures">
+ Textures
+ </string>
+ <string name="InvFolder Sounds">
+ Sons
+ </string>
+ <string name="InvFolder Calling Cards">
+ Cartes de visite
+ </string>
+ <string name="InvFolder Landmarks">
+ Repères
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Habits
+ </string>
+ <string name="InvFolder Objects">
+ Objets
+ </string>
+ <string name="InvFolder Notecards">
+ Notes
+ </string>
+ <string name="InvFolder New Folder">
+ Nouveau dossier
+ </string>
+ <string name="InvFolder Inventory">
+ Inventaire
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Images non compressées
+ </string>
+ <string name="InvFolder Body Parts">
+ Parties du corps
+ </string>
+ <string name="InvFolder Trash">
+ Poubelle
+ </string>
+ <string name="InvFolder Photo Album">
+ Albums photo
+ </string>
+ <string name="InvFolder Lost And Found">
+ Objets trouvés
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sons non compressés
+ </string>
+ <string name="InvFolder Animations">
+ Animations
+ </string>
+ <string name="InvFolder Gestures">
+ Gestes
+ </string>
+ <string name="InvFolder favorite">
+ Favoris
+ </string>
+ <string name="InvFolder Current Outfit">
+ Tenue actuelle
+ </string>
+ <string name="InvFolder My Outfits">
+ Mes tenues
+ </string>
+ <string name="InvFolder Friends">
+ Amis
+ </string>
+ <string name="InvFolder All">
+ Tout
+ </string>
+ <string name="Buy">
+ Acheter
+ </string>
+ <string name="BuyforL$">
+ Acheter des L$
+ </string>
+ <string name="Stone">
+ Pierre
+ </string>
+ <string name="Metal">
+ Métal
+ </string>
+ <string name="Glass">
+ Verre
+ </string>
+ <string name="Wood">
+ Bois
+ </string>
+ <string name="Flesh">
+ Chair
+ </string>
+ <string name="Plastic">
+ Plastique
+ </string>
+ <string name="Rubber">
+ Caoutchouc
+ </string>
+ <string name="Light">
+ Léger
+ </string>
+ <string name="KBShift">
+ Maj-
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Poitrine
+ </string>
+ <string name="Skull">
+ Crâne
+ </string>
+ <string name="Left Shoulder">
+ Épaule gauche
+ </string>
+ <string name="Right Shoulder">
+ Épaule droite
+ </string>
+ <string name="Left Hand">
+ Main gauche
+ </string>
+ <string name="Right Hand">
+ Main droite
+ </string>
+ <string name="Left Foot">
+ Pied gauche
+ </string>
+ <string name="Right Foot">
+ Pied droit
+ </string>
+ <string name="Spine">
+ Colonne
+ </string>
+ <string name="Pelvis">
+ Bassin
+ </string>
+ <string name="Mouth">
+ Bouche
+ </string>
+ <string name="Chin">
+ Menton
+ </string>
+ <string name="Left Ear">
+ Oreille gauche
+ </string>
+ <string name="Right Ear">
+ Oreille droite
+ </string>
+ <string name="Left Eyeball">
+ Globe oculaire gauche
+ </string>
+ <string name="Right Eyeball">
+ Globe oculaire droit
+ </string>
+ <string name="Nose">
+ Nez
+ </string>
+ <string name="R Upper Arm">
+ Bras D
+ </string>
+ <string name="R Forearm">
+ Avant-bras D
+ </string>
+ <string name="L Upper Arm">
+ Bras G
+ </string>
+ <string name="L Forearm">
+ Avant-bras G
+ </string>
+ <string name="Right Hip">
+ Hanche droite
+ </string>
+ <string name="R Upper Leg">
+ Cuisse D
+ </string>
+ <string name="R Lower Leg">
+ Jambe D
+ </string>
+ <string name="Left Hip">
+ Hanche gauche
+ </string>
+ <string name="L Upper Leg">
+ Cuisse G
+ </string>
+ <string name="L Lower Leg">
+ Jambe G
+ </string>
+ <string name="Stomach">
+ Estomac
+ </string>
+ <string name="Left Pec">
+ Pectoral gauche
+ </string>
+ <string name="Right Pec">
+ Pectoral droit
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS]
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS]
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS]
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS]
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS]
+ </string>
+ <string name="TodayOld">
+ Inscrit aujourd&apos;hui
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] an
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] ans
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] ans
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mois
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] mois
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] mois
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] semaine
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] semaines
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] semaines
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] jour
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] jours
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] jours
+ </string>
+ <string name="AcctTypeResident">
+ Résident
+ </string>
+ <string name="AcctTypeTrial">
+ Essai
+ </string>
+ <string name="AcctTypeCharterMember">
+ Membre originaire
+ </string>
+ <string name="AcctTypeEmployee">
+ Employé(e) de Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Infos de paiement utilisées
+ </string>
+ <string name="PaymentInfoOnFile">
+ Infos de paiement enregistrées
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Aucune info de paiement
+ </string>
+ <string name="AgeVerified">
+ Âge vérifié
+ </string>
+ <string name="NotAgeVerified">
+ Âge non vérifié
+ </string>
+ <string name="Center 2">
+ Centrer 2
+ </string>
+ <string name="Top Right">
+ En haut à droite
+ </string>
+ <string name="Top">
+ En haut
+ </string>
+ <string name="Top Left">
+ En haut à gauche
+ </string>
+ <string name="Center">
+ Centrer
+ </string>
+ <string name="Bottom Left">
+ En bas à gauche
+ </string>
+ <string name="Bottom">
+ Bas
+ </string>
+ <string name="Bottom Right">
+ En bas à droite
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Téléchargé, compilation en cours
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Script introuvable sur le serveur.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problème lors du téléchargement
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Permissions insuffisantes pour télécharger un script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Permissions insuffisantes pour
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Échec du téléchargement, erreur inconnue
+ </string>
+ <string name="CompileQueueTitle">
+ Recompilation - progrès
+ </string>
+ <string name="CompileQueueStart">
+ recompiler
+ </string>
+ <string name="ResetQueueTitle">
+ Réinitialiser les progrès
+ </string>
+ <string name="ResetQueueStart">
+ réinitialiser
+ </string>
+ <string name="RunQueueTitle">
+ Lancer
+ </string>
+ <string name="RunQueueStart">
+ lancer
+ </string>
+ <string name="NotRunQueueTitle">
+ Arrêter
+ </string>
+ <string name="NotRunQueueStart">
+ arrêter
+ </string>
+ <string name="CompileSuccessful">
+ Compilation réussie !
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilation réussie, enregistrement en cours...
+ </string>
+ <string name="SaveComplete">
+ Enregistrement terminé.
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (objet hors de portée)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Objet [OBJECT] possédé par [OWNER]
+ </string>
+ <string name="GroupsNone">
+ aucun
+ </string>
+ <string name="Unknown">
+ (Inconnu)
+ </string>
+ <string name="Balance">
+ Solde
+ </string>
+ <string name="Credits">
+ Remerciements
+ </string>
+ <string name="Debits">
+ Débits
+ </string>
+ <string name="Total">
+ Total
+ </string>
+ <string name="NoGroupDataFound">
+ Aucune donnée trouvée pour le groupe
+ </string>
+ <string name="IMParentEstate">
+ domaine parent
+ </string>
+ <string name="IMMainland">
+ continent
+ </string>
+ <string name="IMTeen">
+ teen
+ </string>
+ <string name="RegionInfoError">
+ erreur
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ tous les domaines possédés par [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ tous les domaines que vous possédez
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ tous les domaines que vous gérez pour [owner]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Résidents autorisés : ([ALLOWEDAGENTS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Groupes autorisés : ([ALLOWEDGROUPS], max [MAXACCESS])
+ </string>
+ <string name="CursorPos">
+ Ligne [LINE], Colonne [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] trouvé(s)
+ </string>
+ <string name="PanelContentsNewScript">
+ Nouveau script
+ </string>
+ <string name="MuteByName">
+ (par nom)
+ </string>
+ <string name="MuteAgent">
+ (résident)
+ </string>
+ <string name="MuteObject">
+ (objet)
+ </string>
+ <string name="MuteGroup">
+ (groupe)
+ </string>
+ <string name="RegionNoCovenant">
+ Il n&apos;y a aucun règlement pour ce domaine.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Il n&apos;y a aucun règlement pour ce domaine. Le terrain sur ce domaine est vendu par le propriétaire, non par Linden Lab. Pour en savoir plus, veuillez contacter le propriétaire.
+ </string>
+ <string name="covenant_last_modified">
+ Dernière modification :
+ </string>
+ <string name="GroupOwned">
+ Propriété du groupe
+ </string>
+ <string name="Public">
+ Public
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Clics : [TELEPORT] téléporter, [MAP] carte, [PROFILE] profile
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (mise à jour après la publication)
+ </string>
+ <string name="GroupVoteYes">
+ Oui
+ </string>
+ <string name="GroupVoteNo">
+ Non
+ </string>
+ <string name="GroupVoteNoActiveProposals">
+ Il n&apos;y a aucune proposition active actuellement
+ </string>
+ <string name="GroupVoteNoArchivedProposals">
+ Il n&apos;y a aucune proposition archivée actuellement
+ </string>
+ <string name="GroupVoteRetrievingArchivedProposals">
+ Extraction des propositions archivées
+ </string>
+ <string name="GroupVoteRetrievingActiveProposals">
+ Extraction des propositions actives
+ </string>
+ <string name="MultiPreviewTitle">
+ Prévisualiser
+ </string>
+ <string name="MultiPropertiesTitle">
+ Propriétés
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Un objet appelé
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ possédé par le groupe
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ possédé par un groupe inconnu
+ </string>
+ <string name="InvOfferOwnedBy">
+ possédé par
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ possédé par un résident inconnu
+ </string>
+ <string name="InvOfferGaveYou">
+ vous a donné
+ </string>
+ <string name="InvOfferYouDecline">
+ Vous avez refusé
+ </string>
+ <string name="InvOfferFrom">
+ de la part de
+ </string>
+ <string name="GroupMoneyTotal">
+ Total
+ </string>
+ <string name="GroupMoneyBought">
+ acheté
+ </string>
+ <string name="GroupMoneyPaidYou">
+ vous a payé
+ </string>
+ <string name="GroupMoneyPaidInto">
+ payé
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ a acheté un pass à
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ a payé des frais pour un événement
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ a payé un prix pour un événement
+ </string>
+ <string name="GroupMoneyBalance">
+ Solde
+ </string>
+ <string name="GroupMoneyCredits">
+ Remerciements
+ </string>
+ <string name="GroupMoneyDebits">
+ Débits
+ </string>
+ <string name="ViewerObjectContents">
+ Contenus
+ </string>
+ <string name="AcquiredItems">
+ Objets acquis
+ </string>
+ <string name="Cancel">
+ Annuler
+ </string>
+ <string name="UploadingCosts">
+ Chargement de %s coûts
+ </string>
+ <string name="UnknownFileExtension">
+ Extension de fichier inconnue. %s
+.wav, .tga, .bmp, .jpg, .jpeg, ou .bvh acceptés
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Ajouter un repère...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Modifier le repère...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Maj+
+ </string>
+ <string name="FileSaved">
+ Fichier enregistré
+ </string>
+ <string name="Receiving">
+ Réception
+ </string>
+ <string name="AM">
+ AM
+ </string>
+ <string name="PM">
+ PM
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Forward">
+ Vers l&apos;avant
+ </string>
+ <string name="Left">
+ Gauche
+ </string>
+ <string name="Right">
+ Droite
+ </string>
+ <string name="Back">
+ Précédente
+ </string>
+ <string name="North">
+ Nord
+ </string>
+ <string name="South">
+ Sud
+ </string>
+ <string name="West">
+ Ouest
+ </string>
+ <string name="East">
+ Est
+ </string>
+ <string name="Up">
+ Vers le haut
+ </string>
+ <string name="Down">
+ Vers le bas
+ </string>
+ <string name="Any Category">
+ Toutes catégories
+ </string>
+ <string name="Shopping">
+ Shopping
+ </string>
+ <string name="Land Rental">
+ Terrains à louer
+ </string>
+ <string name="Property Rental">
+ Propriétés à louer
+ </string>
+ <string name="Special Attraction">
+ Divertissements
+ </string>
+ <string name="New Products">
+ Nouveaux produits
+ </string>
+ <string name="Employment">
+ Emplois
+ </string>
+ <string name="Wanted">
+ Offres
+ </string>
+ <string name="Service">
+ Services
+ </string>
+ <string name="Personal">
+ Divers
+ </string>
+ <string name="None">
+ Aucun
+ </string>
+ <string name="Linden Location">
+ Appartenant aux Lindens
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ Art et Culture
+ </string>
+ <string name="Business">
+ Affaires
+ </string>
+ <string name="Educational">
+ Éducation
+ </string>
+ <string name="Gaming">
+ Jeux
+ </string>
+ <string name="Hangout">
+ Favoris
+ </string>
+ <string name="Newcomer Friendly">
+ Accueil pour les nouveaux
+ </string>
+ <string name="Parks&amp;Nature">
+ Parcs et Nature
+ </string>
+ <string name="Residential">
+ Résidentiel
+ </string>
+ <string name="Stage">
+ Phase
+ </string>
+ <string name="Other">
+ Autre
+ </string>
+ <string name="Any">
+ Aucun
+ </string>
+ <string name="You">
+ Vous
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="&apos;">
+ &apos;
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="MBCmdLineError">
+ Une erreur est survenue lors de la lecture de la ligne de commande.
+Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters
+Erreur :
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Utilisation de la ligne de commande :
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] ne peut accéder à un fichier requis.
+
+Cela vient du fait que quelqu&apos;un a ouvert plusieurs copies ou que votre système pense qu&apos;un fichier est ouvert.
+Si ce message persiste, veuillez redémarrer votre ordinateur.
+Si le problème persiste, vous devrez peut-être complètement désinstaller puis réinstaller [APP_NAME].
+ </string>
+ <string name="MBFatalError">
+ Erreur fatale
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] est déjà lancé.
+Vérifiez si une version minimisée du programme apparaît dans votre barre de tâches.
+Si ce message persiste, redémarrez votre ordinateur.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] semble avoir crashé lors de l&apos;utilisation précédente.
+Voulez-vous envoyer un rapport de crash ?
+ </string>
+ <string name="MBAlert">
+ Alerte
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure.
+[APP_NAME] utilise DirectX pour détecter les matériels et/ou les pilotes qui ne sont pas à jour et peuvent causer des problèmes de stabilité, de performance, ou des plantages. Bien que vous puissiez utiliser [APP_NAME] sans DirectX, nous vous recommandons de l&apos;utiliser avec DirectX 9.0b.
+
+Voulez-vous continuer ?
+ </string>
+ <string name="MBWarning">
+ Avertissement
+ </string>
+ <string name="MBNoAutoUpdate">
+ Les mises à jour automatiques n&apos;existent pas encore pour Linux.
+Veuillez télécharger la dernière version sur www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass a échoué
+ </string>
+ <string name="MBError">
+ Erreur
+ </string>
+ <string name="MBFullScreenErr">
+ Impossible d&apos;ouvrir le mode plein écran de [WIDTH] x [HEIGHT]
+Utilisation du mode fenêtré.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() failed))
+ </string>
+ <string name="MBShutdownErr">
+ Erreur de fermeture
+ </string>
+ <string name="MBDevContextErr">
+ Impossible de créer le contexte GL
+ </string>
+ <string name="MBPixelFmtErr">
+ Impossible de trouver le format pixel approprié
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Impossible de trouver la description du format pixel
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] nécessite que True Color (32-bit) soit exécuté dans une fenêtre.
+Veuillez allez sous Panneau de configuration &gt; Affichage &gt; Paramètres et régler la couleur de l&apos;écran sur 32-bit.
+Sinon, lorsque vous choisissez le mode plein écran, [APP_NAME] ajustera automatiquement l&apos;écran à chaque utilisation.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] ne peut pas être lancé car il n&apos;y pas de channel 8 bit accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo.
+Assurez-vous d&apos;avoir installé le pilote de carte vidéo le plus récent possible.
+ Assurez-vous aussi que votre écran est réglé sur True Clor (22-bit) sous Panneau de configuration &gt; Affichage &gt; Paramètres.
+Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Impossible de trouver le format pixel approprié
+ </string>
+ <string name="MBGLContextErr">
+ Impossible de créer le contexte de rendu GL
+ </string>
+ <string name="MBGLContextActErr">
+ Impossible d&apos;activer le contexte de rendu GL
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] ne peut pas être exécuté car les pilotes de votre carte vidéo n&apos;ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d&apos;avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les.
+
+Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ Barbe naissante
+ </string>
+ <string name="All White">
+ Tout blancs
+ </string>
+ <string name="Anime Eyes">
+ Grand yeux
+ </string>
+ <string name="Arced">
+ Arquées
+ </string>
+ <string name="Arm Length">
+ Longueur des bras
+ </string>
+ <string name="Attached">
+ Minces
+ </string>
+ <string name="Attached Earlobes">
+ Largeur des lobes
+ </string>
+ <string name="Back Bangs">
+ Mèches de derrière
+ </string>
+ <string name="Back Bangs Down">
+ Mèches de derrière Bas
+ </string>
+ <string name="Back Bangs Up">
+ Mèches de derrière haut
+ </string>
+ <string name="Back Fringe">
+ Mèches de derrière
+ </string>
+ <string name="Back Hair">
+ Cheveux de derrière
+ </string>
+ <string name="Back Hair Down">
+ Cheveux de derrière Bas
+ </string>
+ <string name="Back Hair Up">
+ Cheveux de derrière haut
+ </string>
+ <string name="Baggy">
+ Cernés
+ </string>
+ <string name="Bangs">
+ Frange
+ </string>
+ <string name="Bangs Down">
+ Frange Bas
+ </string>
+ <string name="Bangs Up">
+ Frange Haut
+ </string>
+ <string name="Beady Eyes">
+ Yeux perçants
+ </string>
+ <string name="Belly Size">
+ Taille du ventre
+ </string>
+ <string name="Big">
+ Gros
+ </string>
+ <string name="Big Butt">
+ Grosses fesses
+ </string>
+ <string name="Big Eyeball">
+ Gros globe oculaire
+ </string>
+ <string name="Big Hair Back">
+ Cheveux volumineux : Derrière
+ </string>
+ <string name="Big Hair Front">
+ Cheveux volumineux : Devant
+ </string>
+ <string name="Big Hair Top">
+ Cheveux volumineux : En haut
+ </string>
+ <string name="Big Head">
+ Grosse tête
+ </string>
+ <string name="Big Pectorals">
+ Gros pectoraux
+ </string>
+ <string name="Big Spikes">
+ Spikes
+ </string>
+ <string name="Black">
+ Noir
+ </string>
+ <string name="Blonde">
+ Blond
+ </string>
+ <string name="Blonde Hair">
+ Cheveux blonds
+ </string>
+ <string name="Blush">
+ Blush
+ </string>
+ <string name="Blush Color">
+ Couleur du blush
+ </string>
+ <string name="Blush Opacity">
+ Opacité du blush
+ </string>
+ <string name="Body Definition">
+ Contour du corps
+ </string>
+ <string name="Body Fat">
+ Graisse
+ </string>
+ <string name="Body Freckles">
+ Grains de beauté
+ </string>
+ <string name="Body Thick">
+ Corps épais
+ </string>
+ <string name="Body Thickness">
+ Épaisseur du corps
+ </string>
+ <string name="Body Thin">
+ Corps mince
+ </string>
+ <string name="Bow Legged">
+ Jambes arquées
+ </string>
+ <string name="Breast Buoyancy">
+ Hauteur des seins
+ </string>
+ <string name="Breast Cleavage">
+ Clivage
+ </string>
+ <string name="Breast Size">
+ Taille des seins
+ </string>
+ <string name="Bridge Width">
+ Arête du nez
+ </string>
+ <string name="Broad">
+ Large
+ </string>
+ <string name="Brow Size">
+ Taille des sourcils
+ </string>
+ <string name="Bug Eyes">
+ Yeux globuleux
+ </string>
+ <string name="Bugged Eyes">
+ Yeux globuleux
+ </string>
+ <string name="Bulbous">
+ En bulbe
+ </string>
+ <string name="Bulbous Nose">
+ Nez en bulbe
+ </string>
+ <string name="Bushy Eyebrows">
+ Sourcils touffus
+ </string>
+ <string name="Bushy Hair">
+ Cheveux touffus
+ </string>
+ <string name="Butt Size">
+ Taille des fesses
+ </string>
+ <string name="bustle skirt">
+ Jupe gonflante
+ </string>
+ <string name="no bustle">
+ Pas gonflante
+ </string>
+ <string name="more bustle">
+ Plus gonflante
+ </string>
+ <string name="Chaplin">
+ Chaplin
+ </string>
+ <string name="Cheek Bones">
+ Pommettes
+ </string>
+ <string name="Chest Size">
+ Taille de la poitrine
+ </string>
+ <string name="Chin Angle">
+ Angle du menton
+ </string>
+ <string name="Chin Cleft">
+ Fente labiale
+ </string>
+ <string name="Chin Curtains">
+ Favoris
+ </string>
+ <string name="Chin Depth">
+ Profondeur du menton
+ </string>
+ <string name="Chin Heavy">
+ Menton lourd
+ </string>
+ <string name="Chin In">
+ Menton rentré
+ </string>
+ <string name="Chin Out">
+ Menton sorti
+ </string>
+ <string name="Chin-Neck">
+ Menton-cou
+ </string>
+ <string name="Clear">
+ Effacer
+ </string>
+ <string name="Cleft">
+ Fente
+ </string>
+ <string name="Close Set Eyes">
+ Yeux rapprochés
+ </string>
+ <string name="Closed">
+ Fermé(s)
+ </string>
+ <string name="Closed Back">
+ Fermé à l&apos;arrière
+ </string>
+ <string name="Closed Front">
+ Fermé devant
+ </string>
+ <string name="Closed Left">
+ Fermé à gauche
+ </string>
+ <string name="Closed Right">
+ Fermé à droite
+ </string>
+ <string name="Coin Purse">
+ Bijoux de famille
+ </string>
+ <string name="Collar Back">
+ Col arrière
+ </string>
+ <string name="Collar Front">
+ Col devant
+ </string>
+ <string name="Corner Down">
+ Coin vers le bas
+ </string>
+ <string name="Corner Normal">
+ Coin normal
+ </string>
+ <string name="Corner Up">
+ Coin vers le haut
+ </string>
+ <string name="Creased">
+ Frippée
+ </string>
+ <string name="Crooked Nose">
+ Nez en bec d&apos;aigle
+ </string>
+ <string name="Cropped Hair">
+ Garçonne
+ </string>
+ <string name="Cuff Flare">
+ Jambe
+ </string>
+ <string name="Dark">
+ Sombre
+ </string>
+ <string name="Dark Green">
+ Vert foncé
+ </string>
+ <string name="Darker">
+ Plus foncé
+ </string>
+ <string name="Deep">
+ Profonde
+ </string>
+ <string name="Default Heels">
+ Talons par défaut
+ </string>
+ <string name="Default Toe">
+ Orteil par défaut
+ </string>
+ <string name="Dense">
+ Dense
+ </string>
+ <string name="Dense hair">
+ Cheveux denses
+ </string>
+ <string name="Double Chin">
+ Double menton
+ </string>
+ <string name="Downturned">
+ Pointant vers le bas
+ </string>
+ <string name="Duffle Bag">
+ Membre viril
+ </string>
+ <string name="Ear Angle">
+ Angle de l&apos;oreille
+ </string>
+ <string name="Ear Size">
+ Taille de l&apos;oreille
+ </string>
+ <string name="Ear Tips">
+ Pointes de l&apos;oreille
+ </string>
+ <string name="Egg Head">
+ Forme de la tête
+ </string>
+ <string name="Eye Bags">
+ Cernes
+ </string>
+ <string name="Eye Color">
+ Couleur des yeux
+ </string>
+ <string name="Eye Depth">
+ Profondeur des yeux
+ </string>
+ <string name="Eye Lightness">
+ Clarté des yeux
+ </string>
+ <string name="Eye Opening">
+ Ouverture des yeux
+ </string>
+ <string name="Eye Pop">
+ Œil proéminent
+ </string>
+ <string name="Eye Size">
+ Taille de l&apos;œil
+ </string>
+ <string name="Eye Spacing">
+ Espacement des yeux
+ </string>
+ <string name="Eyeball Size">
+ Taille du globe oculaire
+ </string>
+ <string name="Eyebrow Arc">
+ Arc des sourcils
+ </string>
+ <string name="Eyebrow Density">
+ Épaisseur des sourcils
+ </string>
+ <string name="Eyebrow Height">
+ Hauteur des sourcils
+ </string>
+ <string name="Eyebrow Points">
+ Direction des sourcils
+ </string>
+ <string name="Eyebrow Size">
+ Taille des sourcils
+ </string>
+ <string name="Eyelash Length">
+ Longueur des cils
+ </string>
+ <string name="Eyeliner">
+ Eyeliner
+ </string>
+ <string name="Eyeliner Color">
+ Couleur de l&apos;eyeliner
+ </string>
+ <string name="Eyes Back">
+ Yeux noirs
+ </string>
+ <string name="Eyes Bugged">
+ Yeux globuleux
+ </string>
+ <string name="Eyes Forward">
+ Yeux vers l&apos;avant
+ </string>
+ <string name="Eyes Long Head">
+ Yeux longue tête
+ </string>
+ <string name="Eyes Shear Left Up">
+ Œil gauche vers le haut
+ </string>
+ <string name="Eyes Shear Right Up">
+ Œil droit vers le haut
+ </string>
+ <string name="Eyes Short Head">
+ Yeux petite tête
+ </string>
+ <string name="Eyes Spread">
+ Espacement des yeux
+ </string>
+ <string name="Eyes Sunken">
+ Yeux enfoncés
+ </string>
+ <string name="Eyes Together">
+ Yeux rapprochés
+ </string>
+ <string name="Face Shear">
+ Visage
+ </string>
+ <string name="Facial Definition">
+ Définition du visage
+ </string>
+ <string name="Far Set Eyes">
+ Yeux écartés
+ </string>
+ <string name="Fat">
+ Grosse
+ </string>
+ <string name="Fat Head">
+ Grosse tête
+ </string>
+ <string name="Fat Lips">
+ Lèvres épaisses
+ </string>
+ <string name="Fat Lower">
+ Inférieure plus épaisse
+ </string>
+ <string name="Fat Lower Lip">
+ Lèvre inférieure épaisse
+ </string>
+ <string name="Fat Torso">
+ Torse épais
+ </string>
+ <string name="Fat Upper">
+ Supérieure plus épaisse
+ </string>
+ <string name="Fat Upper Lip">
+ Lèvre supérieure épaisse
+ </string>
+ <string name="Female">
+ Femme
+ </string>
+ <string name="Fingerless">
+ Sans doigts
+ </string>
+ <string name="Fingers">
+ Doigts
+ </string>
+ <string name="Flared Cuffs">
+ Jambes larges
+ </string>
+ <string name="Flat">
+ Plat
+ </string>
+ <string name="Flat Butt">
+ Fesses plates
+ </string>
+ <string name="Flat Head">
+ Tête plate
+ </string>
+ <string name="Flat Toe">
+ Orteil plat
+ </string>
+ <string name="Foot Size">
+ Pointure
+ </string>
+ <string name="Forehead Angle">
+ Angle du front
+ </string>
+ <string name="Forehead Heavy">
+ Front lourd
+ </string>
+ <string name="Freckles">
+ Tâches de rousseur
+ </string>
+ <string name="Front Bangs Down">
+ Mèches de devant longues
+ </string>
+ <string name="Front Bangs Up">
+ Mèches de devant courtes
+ </string>
+ <string name="Front Fringe">
+ Mèches de devant
+ </string>
+ <string name="Front Hair">
+ Cheveux devant
+ </string>
+ <string name="Front Hair Down">
+ Cheveux de devant longs
+ </string>
+ <string name="Front Hair Up">
+ Cheveux de devant courts
+ </string>
+ <string name="Full Back">
+ Arrière touffu
+ </string>
+ <string name="Full Eyeliner">
+ Eyeliner marqué
+ </string>
+ <string name="Full Front">
+ Devant touffu
+ </string>
+ <string name="Full Hair Sides">
+ Côtés touffus
+ </string>
+ <string name="Full Sides">
+ Côtés touffus
+ </string>
+ <string name="Glossy">
+ Brillant
+ </string>
+ <string name="Glove Fingers">
+ Doigts avec gants
+ </string>
+ <string name="Glove Length">
+ Longueur des gants
+ </string>
+ <string name="Hair">
+ Cheveux
+ </string>
+ <string name="Hair Back">
+ Cheveux : Derrière
+ </string>
+ <string name="Hair Front">
+ Cheveux : Devant
+ </string>
+ <string name="Hair Sides">
+ Cheveux : Côtés
+ </string>
+ <string name="Hair Sweep">
+ Sens de la coiffure
+ </string>
+ <string name="Hair Thickess">
+ Épaisseur des cheveux
+ </string>
+ <string name="Hair Thickness">
+ Épaisseur des cheveux
+ </string>
+ <string name="Hair Tilt">
+ Inclinaison des cheveux
+ </string>
+ <string name="Hair Tilted Left">
+ Vers la gauche
+ </string>
+ <string name="Hair Tilted Right">
+ Vers la droite
+ </string>
+ <string name="Hair Volume">
+ Cheveux : Volume
+ </string>
+ <string name="Hand Size">
+ Taille de la main
+ </string>
+ <string name="Handlebars">
+ Guidons
+ </string>
+ <string name="Head Length">
+ Longueur de la tête
+ </string>
+ <string name="Head Shape">
+ Forme de la tête
+ </string>
+ <string name="Head Size">
+ Taille de la tête
+ </string>
+ <string name="Head Stretch">
+ Allongement de la tête
+ </string>
+ <string name="Heel Height">
+ Hauteur des talons
+ </string>
+ <string name="Heel Shape">
+ Forme des talons
+ </string>
+ <string name="Height">
+ Taille
+ </string>
+ <string name="High">
+ Haut
+ </string>
+ <string name="High Heels">
+ Talons hauts
+ </string>
+ <string name="High Jaw">
+ Mâchoire haute
+ </string>
+ <string name="High Platforms">
+ Plateformes hautes
+ </string>
+ <string name="High and Tight">
+ Haut et serré
+ </string>
+ <string name="Higher">
+ Plus élevé
+ </string>
+ <string name="Hip Length">
+ Longueur hanche
+ </string>
+ <string name="Hip Width">
+ Largeur hanche
+ </string>
+ <string name="In">
+ In
+ </string>
+ <string name="In Shdw Color">
+ Couleur ombre interne
+ </string>
+ <string name="In Shdw Opacity">
+ Opacité ombre interne
+ </string>
+ <string name="Inner Eye Corner">
+ Coin de l&apos;œil interne
+ </string>
+ <string name="Inner Eye Shadow">
+ Ombre de l&apos;œil interne
+ </string>
+ <string name="Inner Shadow">
+ Ombre interne
+ </string>
+ <string name="Jacket Length">
+ Longueur de la veste
+ </string>
+ <string name="Jacket Wrinkles">
+ Plis de la veste
+ </string>
+ <string name="Jaw Angle">
+ Angle de la mâchoire
+ </string>
+ <string name="Jaw Jut">
+ saillie de la mâchoire
+ </string>
+ <string name="Jaw Shape">
+ Forme de la mâchoire
+ </string>
+ <string name="Join">
+ Rapprochés
+ </string>
+ <string name="Jowls">
+ Bajoues
+ </string>
+ <string name="Knee Angle">
+ Angle du genou
+ </string>
+ <string name="Knock Kneed">
+ Genoux rapprochés
+ </string>
+ <string name="Large">
+ Grande
+ </string>
+ <string name="Large Hands">
+ Grandes mains
+ </string>
+ <string name="Left Part">
+ Raie à gauche
+ </string>
+ <string name="Leg Length">
+ Longueur de la jambe
+ </string>
+ <string name="Leg Muscles">
+ Muscles de la jambe
+ </string>
+ <string name="Less">
+ Moins
+ </string>
+ <string name="Less Body Fat">
+ Moins de graisse
+ </string>
+ <string name="Less Curtains">
+ Moins
+ </string>
+ <string name="Less Freckles">
+ Moins
+ </string>
+ <string name="Less Full">
+ Moins
+ </string>
+ <string name="Less Gravity">
+ Moins
+ </string>
+ <string name="Less Love">
+ Moins
+ </string>
+ <string name="Less Muscles">
+ Moins
+ </string>
+ <string name="Less Muscular">
+ Moins
+ </string>
+ <string name="Less Rosy">
+ Moins
+ </string>
+ <string name="Less Round">
+ Moins
+ </string>
+ <string name="Less Saddle">
+ Moins
+ </string>
+ <string name="Less Square">
+ Moins
+ </string>
+ <string name="Less Volume">
+ Moins
+ </string>
+ <string name="Less soul">
+ Moins
+ </string>
+ <string name="Lighter">
+ Plus léger
+ </string>
+ <string name="Lip Cleft">
+ Fente labiale
+ </string>
+ <string name="Lip Cleft Depth">
+ Profondeur de la fente labiale
+ </string>
+ <string name="Lip Fullness">
+ Volume des lèvres
+ </string>
+ <string name="Lip Pinkness">
+ Rougeur des lèvres
+ </string>
+ <string name="Lip Ratio">
+ Proportion des lèvres
+ </string>
+ <string name="Lip Thickness">
+ Épaisseur des lèvres
+ </string>
+ <string name="Lip Width">
+ Largeur des lèvres
+ </string>
+ <string name="Lipgloss">
+ Brillant à lèvres
+ </string>
+ <string name="Lipstick">
+ Rouge à lèvres
+ </string>
+ <string name="Lipstick Color">
+ Couleur du rouge à lèvres
+ </string>
+ <string name="Long">
+ Long
+ </string>
+ <string name="Long Head">
+ Tête longue
+ </string>
+ <string name="Long Hips">
+ Hanches longues
+ </string>
+ <string name="Long Legs">
+ Jambes longues
+ </string>
+ <string name="Long Neck">
+ Long cou
+ </string>
+ <string name="Long Pigtails">
+ Longues couettes
+ </string>
+ <string name="Long Ponytail">
+ Longue queue de cheval
+ </string>
+ <string name="Long Torso">
+ Torse long
+ </string>
+ <string name="Long arms">
+ Longs bras
+ </string>
+ <string name="Longcuffs">
+ Manches longues
+ </string>
+ <string name="Loose Pants">
+ Pantalons amples
+ </string>
+ <string name="Loose Shirt">
+ Chemise ample
+ </string>
+ <string name="Loose Sleeves">
+ Manches amples
+ </string>
+ <string name="Love Handles">
+ Poignées d&apos;amour
+ </string>
+ <string name="Low">
+ Bas
+ </string>
+ <string name="Low Heels">
+ Talons bas
+ </string>
+ <string name="Low Jaw">
+ Mâchoire basse
+ </string>
+ <string name="Low Platforms">
+ Plateformes basses
+ </string>
+ <string name="Low and Loose">
+ Bas et ample
+ </string>
+ <string name="Lower">
+ Abaisser
+ </string>
+ <string name="Lower Bridge">
+ Arête plus basse
+ </string>
+ <string name="Lower Cheeks">
+ Joues plus basses
+ </string>
+ <string name="Male">
+ Homme
+ </string>
+ <string name="Middle Part">
+ Raie au milieu
+ </string>
+ <string name="More">
+ Plus
+ </string>
+ <string name="More Blush">
+ Plus
+ </string>
+ <string name="More Body Fat">
+ Plus
+ </string>
+ <string name="More Curtains">
+ Plus
+ </string>
+ <string name="More Eyeshadow">
+ Plus
+ </string>
+ <string name="More Freckles">
+ Plus
+ </string>
+ <string name="More Full">
+ Plus
+ </string>
+ <string name="More Gravity">
+ Plus
+ </string>
+ <string name="More Lipstick">
+ Plus
+ </string>
+ <string name="More Love">
+ Plus
+ </string>
+ <string name="More Lower Lip">
+ Plus
+ </string>
+ <string name="More Muscles">
+ Plus
+ </string>
+ <string name="More Muscular">
+ Plus
+ </string>
+ <string name="More Rosy">
+ Plus
+ </string>
+ <string name="More Round">
+ Plus
+ </string>
+ <string name="More Saddle">
+ Plus
+ </string>
+ <string name="More Sloped">
+ Plus
+ </string>
+ <string name="More Square">
+ Plus
+ </string>
+ <string name="More Upper Lip">
+ Plus
+ </string>
+ <string name="More Vertical">
+ Plus
+ </string>
+ <string name="More Volume">
+ Plus
+ </string>
+ <string name="More soul">
+ Plus
+ </string>
+ <string name="Moustache">
+ Moustache
+ </string>
+ <string name="Mouth Corner">
+ Coin de la bouche
+ </string>
+ <string name="Mouth Position">
+ Position de la bouche
+ </string>
+ <string name="Mowhawk">
+ Mowhawk
+ </string>
+ <string name="Muscular">
+ Musclé
+ </string>
+ <string name="Mutton Chops">
+ Rouflaquettes
+ </string>
+ <string name="Nail Polish">
+ Vernis à ongles
+ </string>
+ <string name="Nail Polish Color">
+ Couleur du vernis
+ </string>
+ <string name="Narrow">
+ Étroit
+ </string>
+ <string name="Narrow Back">
+ Arrière étroit
+ </string>
+ <string name="Narrow Front">
+ Devant étroit
+ </string>
+ <string name="Narrow Lips">
+ Lèvres étroites
+ </string>
+ <string name="Natural">
+ Naturel
+ </string>
+ <string name="Neck Length">
+ Longueur du cou
+ </string>
+ <string name="Neck Thickness">
+ Épaisseur du cou
+ </string>
+ <string name="No Blush">
+ Pas de blush
+ </string>
+ <string name="No Eyeliner">
+ Pas de eyeliner
+ </string>
+ <string name="No Eyeshadow">
+ Pas d&apos;ombre à paupières
+ </string>
+ <string name="No Heels">
+ Pas de talons
+ </string>
+ <string name="No Lipgloss">
+ Pas de brillant à lèvres
+ </string>
+ <string name="No Lipstick">
+ Pas de rouge à lèvres
+ </string>
+ <string name="No Part">
+ Pas de raie
+ </string>
+ <string name="No Polish">
+ Pas de vernis
+ </string>
+ <string name="No Red">
+ Pas de rouge
+ </string>
+ <string name="No Spikes">
+ Pas de spikes
+ </string>
+ <string name="No White">
+ Pas de blanc
+ </string>
+ <string name="No Wrinkles">
+ Pas de rides
+ </string>
+ <string name="Normal Lower">
+ Normal plus bas
+ </string>
+ <string name="Normal Upper">
+ Normal plus haut
+ </string>
+ <string name="Nose Left">
+ Nez à gauche
+ </string>
+ <string name="Nose Right">
+ Nez à droite
+ </string>
+ <string name="Nose Size">
+ Taille du nez
+ </string>
+ <string name="Nose Thickness">
+ Épaisseur du nez
+ </string>
+ <string name="Nose Tip Angle">
+ Angle du bout du nez
+ </string>
+ <string name="Nose Tip Shape">
+ Forme du bout du nez
+ </string>
+ <string name="Nose Width">
+ Largeur du nez
+ </string>
+ <string name="Nostril Division">
+ Division des narines
+ </string>
+ <string name="Nostril Width">
+ Largeur des narines
+ </string>
+ <string name="Old">
+ Vieux
+ </string>
+ <string name="Opaque">
+ Opaque
+ </string>
+ <string name="Open">
+ Ouvert
+ </string>
+ <string name="Open Back">
+ Derrière ouvert
+ </string>
+ <string name="Open Front">
+ Devant ouvert
+ </string>
+ <string name="Open Left">
+ Ouvert à gauche
+ </string>
+ <string name="Open Right">
+ Ouvert à droite
+ </string>
+ <string name="Orange">
+ Orange
+ </string>
+ <string name="Out">
+ Dehors
+ </string>
+ <string name="Out Shdw Color">
+ Couleur de l&apos;ombre externe
+ </string>
+ <string name="Out Shdw Opacity">
+ Opacité de l&apos;ombre externe
+ </string>
+ <string name="Outer Eye Corner">
+ Coin de l&apos;œil externe
+ </string>
+ <string name="Outer Eye Shadow">
+ Ombre de l&apos;œil externe
+ </string>
+ <string name="Outer Shadow">
+ Ombre externe
+ </string>
+ <string name="Overbite">
+ Chevauchement
+ </string>
+ <string name="Package">
+ Parties
+ </string>
+ <string name="Painted Nails">
+ Ongles vernis
+ </string>
+ <string name="Pale">
+ Pâle
+ </string>
+ <string name="Pants Crotch">
+ Entrejambe
+ </string>
+ <string name="Pants Fit">
+ Taille
+ </string>
+ <string name="Pants Length">
+ Longueur
+ </string>
+ <string name="Pants Waist">
+ Taille
+ </string>
+ <string name="Pants Wrinkles">
+ Plis
+ </string>
+ <string name="Part">
+ Raie
+ </string>
+ <string name="Part Bangs">
+ Séparation de la frange
+ </string>
+ <string name="Pectorals">
+ Pectoraux
+ </string>
+ <string name="Pigment">
+ Pigmentation
+ </string>
+ <string name="Pigtails">
+ Couettes
+ </string>
+ <string name="Pink">
+ Rose
+ </string>
+ <string name="Pinker">
+ Plus rose
+ </string>
+ <string name="Platform Height">
+ Hauteur de la plateforme
+ </string>
+ <string name="Platform Width">
+ Largeur de la plateforme
+ </string>
+ <string name="Pointy">
+ Pointu
+ </string>
+ <string name="Pointy Heels">
+ Talons pointus
+ </string>
+ <string name="Pointy Toe">
+ Orteil pointu
+ </string>
+ <string name="Ponytail">
+ Queue de cheval
+ </string>
+ <string name="Poofy Skirt">
+ Jupe bouffante
+ </string>
+ <string name="Pop Left Eye">
+ Œil gauche saillant
+ </string>
+ <string name="Pop Right Eye">
+ Œil droit saillant
+ </string>
+ <string name="Puffy">
+ Gonflé
+ </string>
+ <string name="Puffy Eyelids">
+ Paupières gonflées
+ </string>
+ <string name="Rainbow Color">
+ Couleur de l&apos;arc en ciel
+ </string>
+ <string name="Red Hair">
+ Cheveux roux
+ </string>
+ <string name="Red Skin">
+ Peau rouge
+ </string>
+ <string name="Regular">
+ Standard
+ </string>
+ <string name="Regular Muscles">
+ Muscles normaux
+ </string>
+ <string name="Right Part">
+ Raie à droite
+ </string>
+ <string name="Rosy Complexion">
+ Teint rosé
+ </string>
+ <string name="Round">
+ Rond
+ </string>
+ <string name="Round Forehead">
+ Front rond
+ </string>
+ <string name="Ruddiness">
+ Rougeur
+ </string>
+ <string name="Ruddy">
+ Rouge
+ </string>
+ <string name="Rumpled Hair">
+ Texture
+ </string>
+ <string name="Saddle Bags">
+ Culotte de cheval
+ </string>
+ <string name="Saddlebags">
+ Culotte de cheval
+ </string>
+ <string name="Scrawny">
+ Maigre
+ </string>
+ <string name="Scrawny Leg">
+ Jambes maigres
+ </string>
+ <string name="Separate">
+ Séparés
+ </string>
+ <string name="Shading">
+ Dégradé
+ </string>
+ <string name="Shadow hair">
+ Cheveux
+ </string>
+ <string name="Shallow">
+ Creux
+ </string>
+ <string name="Shear Back">
+ Coupe derrière
+ </string>
+ <string name="Shear Face">
+ Visage
+ </string>
+ <string name="Shear Front">
+ Devant dégagé
+ </string>
+ <string name="Shear Left">
+ Gauche dégagée
+ </string>
+ <string name="Shear Left Up">
+ Haut gauche dégagé
+ </string>
+ <string name="Shear Right">
+ Droite dégagée
+ </string>
+ <string name="Shear Right Up">
+ Haut droit dégagé
+ </string>
+ <string name="Sheared Back">
+ Dégagé derrière
+ </string>
+ <string name="Sheared Front">
+ Dégagé devant
+ </string>
+ <string name="Shift Left">
+ Déplacer vers la gauche
+ </string>
+ <string name="Shift Mouth">
+ Déplacer la bouche
+ </string>
+ <string name="Shift Right">
+ Déplacer vers la droite
+ </string>
+ <string name="Shirt Bottom">
+ Chemise
+ </string>
+ <string name="Shirt Fit">
+ Taille
+ </string>
+ <string name="Shirt Wrinkles">
+ Plis
+ </string>
+ <string name="Shoe Height">
+ Hauteur de la chaussure
+ </string>
+ <string name="Short">
+ Court
+ </string>
+ <string name="Short Arms">
+ Bras courts
+ </string>
+ <string name="Short Legs">
+ Jambes courtes
+ </string>
+ <string name="Short Neck">
+ Petit cou
+ </string>
+ <string name="Short Pigtails">
+ Couettes courtes
+ </string>
+ <string name="Short Ponytail">
+ Queue de cheval courte
+ </string>
+ <string name="Short Sideburns">
+ Favoris courts
+ </string>
+ <string name="Short Torso">
+ Torse court
+ </string>
+ <string name="Short hips">
+ Hanches courtes
+ </string>
+ <string name="Shoulders">
+ Épaules
+ </string>
+ <string name="Side Bangs">
+ Mèches sur le côté
+ </string>
+ <string name="Side Bangs Down">
+ Mèches sur le côté en bas
+ </string>
+ <string name="Side Bangs Up">
+ Mèches sur le côté en haut
+ </string>
+ <string name="Side Fringe">
+ Frange sur le côté
+ </string>
+ <string name="Sideburns">
+ Favoris
+ </string>
+ <string name="Sides Hair">
+ Cheveux sur le côté
+ </string>
+ <string name="Sides Hair Down">
+ Cheveux sur le côté en bas
+ </string>
+ <string name="Sides Hair Up">
+ Cheveux sur le côté en haut
+ </string>
+ <string name="Skinny">
+ Maigre
+ </string>
+ <string name="Skinny Neck">
+ Cou maigre
+ </string>
+ <string name="Skirt Fit">
+ Taille de la jupe
+ </string>
+ <string name="Skirt Length">
+ Longueur de la jupe
+ </string>
+ <string name="Slanted Forehead">
+ Front incliné
+ </string>
+ <string name="Sleeve Length">
+ Longueur de la manche
+ </string>
+ <string name="Sleeve Looseness">
+ Ampleur de la manche
+ </string>
+ <string name="Slit Back">
+ Fente : Derrière
+ </string>
+ <string name="Slit Front">
+ Fente : Devant
+ </string>
+ <string name="Slit Left">
+ Fente : Gauche
+ </string>
+ <string name="Slit Right">
+ Fente : Droite
+ </string>
+ <string name="Small">
+ Petite
+ </string>
+ <string name="Small Hands">
+ Petites mains
+ </string>
+ <string name="Small Head">
+ Petite tête
+ </string>
+ <string name="Smooth">
+ Lisse
+ </string>
+ <string name="Smooth Hair">
+ Cheveux lisses
+ </string>
+ <string name="Socks Length">
+ Longueur des chaussettes
+ </string>
+ <string name="Some">
+ Quelques un(e)s
+ </string>
+ <string name="Soulpatch">
+ Soulpatch
+ </string>
+ <string name="Sparse">
+ Rares
+ </string>
+ <string name="Spiked Hair">
+ Mèches en pointe
+ </string>
+ <string name="Square">
+ Carré
+ </string>
+ <string name="Square Toe">
+ Orteil carré
+ </string>
+ <string name="Squash Head">
+ Écraser la tête
+ </string>
+ <string name="Squash/Stretch Head">
+ Allonger/écraser la tête
+ </string>
+ <string name="Stretch Head">
+ Allonger la tête
+ </string>
+ <string name="Sunken">
+ Enfoncées
+ </string>
+ <string name="Sunken Chest">
+ Poitrine enfoncée
+ </string>
+ <string name="Sunken Eyes">
+ Yeux enfoncés
+ </string>
+ <string name="Sweep Back">
+ En arrière
+ </string>
+ <string name="Sweep Forward">
+ Vers l&apos;avant
+ </string>
+ <string name="Swept Back">
+ En arrière
+ </string>
+ <string name="Swept Back Hair">
+ Cheveux en arrière
+ </string>
+ <string name="Swept Forward">
+ Vers l&apos;avant
+ </string>
+ <string name="Swept Forward Hair">
+ Cheveux vers l&apos;&apos;avant
+ </string>
+ <string name="Tall">
+ Grand
+ </string>
+ <string name="Taper Back">
+ Biseauter à l&apos;arrière
+ </string>
+ <string name="Taper Front">
+ Biseauter à l&apos;avant
+ </string>
+ <string name="Thick Heels">
+ Talons épais
+ </string>
+ <string name="Thick Neck">
+ Cou épais
+ </string>
+ <string name="Thick Toe">
+ Orteil épais
+ </string>
+ <string name="Thickness">
+ Épaisseur
+ </string>
+ <string name="Thin">
+ Fins
+ </string>
+ <string name="Thin Eyebrows">
+ Sourcils fins
+ </string>
+ <string name="Thin Lips">
+ Lèvres fines
+ </string>
+ <string name="Thin Nose">
+ Nez fin
+ </string>
+ <string name="Tight Chin">
+ Menton fin
+ </string>
+ <string name="Tight Cuffs">
+ Jambes serrées
+ </string>
+ <string name="Tight Pants">
+ Pantalons serrés
+ </string>
+ <string name="Tight Shirt">
+ Chemise serrée
+ </string>
+ <string name="Tight Skirt">
+ Jupe serrée
+ </string>
+ <string name="Tight Sleeves">
+ Manches serrées
+ </string>
+ <string name="Tilt Left">
+ Pencher sur la gauche
+ </string>
+ <string name="Tilt Right">
+ Pencher sur la droite
+ </string>
+ <string name="Toe Shape">
+ Forme de l&apos;orteil
+ </string>
+ <string name="Toe Thickness">
+ Épaisseur de l&apos;orteil
+ </string>
+ <string name="Torso Length">
+ Longueur du torse
+ </string>
+ <string name="Torso Muscles">
+ Muscles du torse
+ </string>
+ <string name="Torso Scrawny">
+ Torse maigre
+ </string>
+ <string name="Unattached">
+ Séparés
+ </string>
+ <string name="Uncreased">
+ Lisse
+ </string>
+ <string name="Underbite">
+ Rentré
+ </string>
+ <string name="Unnatural">
+ Artificiel
+ </string>
+ <string name="Upper Bridge">
+ Arête supérieure
+ </string>
+ <string name="Upper Cheeks">
+ Pommettes
+ </string>
+ <string name="Upper Chin Cleft">
+ Fente du menton supérieure
+ </string>
+ <string name="Upper Eyelid Fold">
+ Paupière supérieure
+ </string>
+ <string name="Upturned">
+ En trompette
+ </string>
+ <string name="Very Red">
+ Très rouge
+ </string>
+ <string name="Waist Height">
+ Hauteur de la taille
+ </string>
+ <string name="Well-Fed">
+ Bien nourri
+ </string>
+ <string name="White Hair">
+ Cheveux blancs
+ </string>
+ <string name="Wide">
+ Large
+ </string>
+ <string name="Wide Back">
+ Dos large
+ </string>
+ <string name="Wide Front">
+ Devant large
+ </string>
+ <string name="Wide Lips">
+ Lèvres larges
+ </string>
+ <string name="Wild">
+ Revêche
+ </string>
+ <string name="Wrinkles">
+ Rides
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Ajouter à mes repères
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Modifier mes repères
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Mettre à jour
+ </string>
+ <string name="UpdaterNowUpdating">
+ En train de charger [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ En train d&apos;installer [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Le client [APP_NAME] est en train d&apos;être mis à jour. Cela peut prendre un certain temps, merci de votre patience.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Mise à jour en cours...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Mise à jour en cours
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Le téléchargement de la mise à jour a échoué
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version sur www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ L&apos;installation de la mise à jour a échoué
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Impossible de lancer le client
+ </string>
+ <string name="only_user_message">
+ Vous êtes le seul participant à cette session.
+ </string>
+ <string name="offline_message">
+ [FIRST] [LAST] est déconnecté(e).
+ </string>
+ <string name="invite_message">
+ Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME].
+ </string>
+ <string name="generic_request_error">
+ Erreur lors de la requête, veuillez réessayer ultérieurement.
+ </string>
+ <string name="insufficient_perms_error">
+ Vous n&apos;avez pas les droits requis.
+ </string>
+ <string name="session_does_not_exist_error">
+ La session a expiré
+ </string>
+ <string name="no_ability_error">
+ Vous n&apos;avez pas ce pouvoir.
+ </string>
+ <string name="no_ability">
+ Vous n&apos;avez pas ce pouvoir.
+ </string>
+ <string name="not_a_mod_error">
+ Vous n&apos;êtes pas modérateur de session.
+ </string>
+ <string name="muted_error">
+ Un modérateur de groupe a désactivé votre chat écrit.
+ </string>
+ <string name="add_session_event">
+ Impossible d&apos;ajouter des participants à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ Impossible d&apos;envoyer votre message à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="removed_from_group">
+ Vous avez été supprimé du groupe.
+ </string>
+ <string name="close_on_no_ability">
+ Vous ne pouvez plus participer à la session de chat.
+ </string>
+</strings>
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
index 1315a4b100..b76ae370fd 100644
--- a/indra/newview/skins/default/xui/fr/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml
@@ -1,77 +1,77 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages name="">
- <message_set name="errors">
- <message name="invalid_tport">
- Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
-Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
- </message>
- <message name="invalid_region_handoff">
- Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir traverser des régions.
-Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
- </message>
- <message name="blocked_tport">
- Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
-Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème.
- </message>
- <message name="nolandmark_tport">
- Désolé, le système n&apos;a pas réussi à localiser la destination de votre repère.
- </message>
- <message name="timeout_tport">
- Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
-Veuillez réessayer dans un moment.
- </message>
- <message name="noaccess_tport">
- Désolé, vous n&apos;avez pas accès à cette destination.
- </message>
- <message name="missing_attach_tport">
- Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d&apos;essayer de vous téléporter.
- </message>
- <message name="too_many_uploads_tport">
- Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée.
- </message>
- <message name="expired_tport">
- Désolé, votre demande de téléportation n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
- </message>
- <message name="expired_region_handoff">
- Désolé, votre demande pour passer dans une autre région n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
- </message>
- <message name="no_host">
- Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu&apos;elle n&apos;existe plus. Veuillez réessayer dans quelques minutes.
- </message>
- <message name="no_inventory_host">
- L&apos;inventaire est temporairement indisponible.
- </message>
- </message_set>
- <message_set name="progress">
- <message name="sending_dest">
- Envoi vers la destination en cours.
- </message>
- <message name="redirecting">
- Redirection vers un emplacement différent en cours.
- </message>
- <message name="relaying">
- Relai vers la destination en cours.
- </message>
- <message name="sending_home">
- Requête de la demande d&apos;envoi vers votre domicile en cours.
- </message>
- <message name="sending_landmark">
- Requête de la demande d&apos;envoi vers le repère en cours.
- </message>
- <message name="completing">
- Téléportation sur le point d&apos;aboutir.
- </message>
- <message name="resolving">
- Destination en cours de résolution.
- </message>
- <message name="contacting">
- Contact avec la nouvelle région en cours.
- </message>
- <message name="arriving">
- Vous arrivez...
- </message>
- <message name="requesting">
- Demande de téléportation en cours...
- </message>
- </message_set>
-</teleport_messages>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages name="">
+ <message_set name="errors">
+ <message name="invalid_tport">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
+Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir traverser des régions.
+Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
+Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème.
+ </message>
+ <message name="nolandmark_tport">
+ Désolé, le système n&apos;a pas réussi à localiser la destination de votre repère.
+ </message>
+ <message name="timeout_tport">
+ Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
+Veuillez réessayer dans un moment.
+ </message>
+ <message name="noaccess_tport">
+ Désolé, vous n&apos;avez pas accès à cette destination.
+ </message>
+ <message name="missing_attach_tport">
+ Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d&apos;essayer de vous téléporter.
+ </message>
+ <message name="too_many_uploads_tport">
+ Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée.
+ </message>
+ <message name="expired_tport">
+ Désolé, votre demande de téléportation n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="expired_region_handoff">
+ Désolé, votre demande pour passer dans une autre région n&apos;a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="no_host">
+ Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu&apos;elle n&apos;existe plus. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="no_inventory_host">
+ L&apos;inventaire est temporairement indisponible.
+ </message>
+ </message_set>
+ <message_set name="progress">
+ <message name="sending_dest">
+ Envoi vers la destination en cours.
+ </message>
+ <message name="redirecting">
+ Redirection vers un emplacement différent en cours.
+ </message>
+ <message name="relaying">
+ Relai vers la destination en cours.
+ </message>
+ <message name="sending_home">
+ Requête de la demande d&apos;envoi vers votre domicile en cours.
+ </message>
+ <message name="sending_landmark">
+ Requête de la demande d&apos;envoi vers le repère en cours.
+ </message>
+ <message name="completing">
+ Téléportation sur le point d&apos;aboutir.
+ </message>
+ <message name="resolving">
+ Destination en cours de résolution.
+ </message>
+ <message name="contacting">
+ Contact avec la nouvelle région en cours.
+ </message>
+ <message name="arriving">
+ Vous arrivez...
+ </message>
+ <message name="requesting">
+ Demande de téléportation en cours...
+ </message>
+ </message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_profile.xml b/indra/newview/skins/default/xui/it/panel_edit_profile.xml
index 0eba7bf3b6..33f3c367c2 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_profile.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Residente" />
- <string name="AcctTypeTrial"
- value="Prova" />
- <string name="AcctTypeCharterMember"
- value="Membro privilegiato" />
- <string name="AcctTypeEmployee"
- value="Impiegato della Linden Lab" />
- <string name="PaymentInfoUsed"
- value="Info. di pagamento usate" />
- <string name="PaymentInfoOnFile"
- value="Info. di pagamento in archivio" />
- <string name="NoPaymentInfoOnFile"
- value="Nessuna info. di pagamento" />
- <string name="AgeVerified"
- value="Età verificata" />
- <string name="NotAgeVerified"
- value="Età non verificata" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=it
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Risposta agli IM quando sono in &apos;Occupato&apos;:
- </text>
- </panel>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident"
+ value="Residente" />
+ <string name="AcctTypeTrial"
+ value="Prova" />
+ <string name="AcctTypeCharterMember"
+ value="Membro privilegiato" />
+ <string name="AcctTypeEmployee"
+ value="Impiegato della Linden Lab" />
+ <string name="PaymentInfoUsed"
+ value="Info. di pagamento usate" />
+ <string name="PaymentInfoOnFile"
+ value="Info. di pagamento in archivio" />
+ <string name="NoPaymentInfoOnFile"
+ value="Nessuna info. di pagamento" />
+ <string name="AgeVerified"
+ value="Età verificata" />
+ <string name="NotAgeVerified"
+ value="Età non verificata" />
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=it
+ </string>
+ <panel name="scroll_content_panel">
+ <panel name="data_panel" >
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text">
+ [SECOND_LIFE]:
+ </text>
+ </panel>
+ </panel>
+ <text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="text_box3">
+ Risposta agli IM quando sono in &apos;Occupato&apos;:
+ </text>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
index 07911c68b1..723ceae552 100644
--- a/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="[APP_NAME]について">
- <tab_container name="about_tab">
- <panel label="クレジット" name="credits_panel">
- <text_editor name="credits_editor">
- Second Lifeは、 Philip、Tessa、Andrew、Cory、James、Ben、Char、Charlie、Colin、Dan、Daniel、Doug、Eric、Hamlet、Haney、Eve、Hunter、Ian、Jeff、Jennifer、Jim、John、Lee、Mark、Peter、Phoenix、Richard、Robin、Xenon、Steve、Tanya、Eddie、Avi、Frank、Bruce、Aaron、Alice、Bob、Debra、Eileen、Helen、Janet、Louie、Leviathania、Stefan、Ray、Kevin、Tom、Mikeb、MikeT、Burgess、Elena、Tracy、Bill、Todd、Ryan、Zach、Sarah、Nova、Tim、Stephanie、Michael、Evan、Nicolas、Catherine、Rachelle、Dave、Holly、Bub、Kelly、Magellan、Ramzi、Don、Sabin、Jill、Rheya、Jeska、Torley、Kona、Callum、Charity、Ventrella、Jack、Vektor、Iris、Chris、Nicole、Mick、Reuben、Blue、Babbage、Yedwab、Deana、Lauren、Brent、Pathfinder、Chadrick、Altruima、Jesse、Teeny、Monroe、Icculus、David、Tess、Lizzie、Patsy、Isaac、Lawrence、Cyn、Bo、Gia、Annette、Marius、Tbone、Jonathan、Karen、Ginsu、Satoko、Yuko、Makiko、Thomas、Harry、Seth、Alexei、Brian、Guy、Runitai、Ethan、Data、Cornelius、Kenny、Swiss、Zero、Natria、Wendy、Stephen、Teeple、Thumper、Lucy、Dee、Mia、Liana、Warren、Branka、Aura、beez、Milo、Hermia、Red、Thrax、Joe、Sally、Magenta、Mogura、Paul、Jose、Rejean、Henrik、Lexie、Amber、Logan、Xan、Nora、Morpheus、Donovan、Leyla、MichaelFrancis、Beast、Cube、Bucky、Joshua、Stryfe、Harmony、Teresa、Claudia、Walker、Glenn、Fritz、Fordak、June、Cleopetra、Jean、Ivy、Betsy、Roosevelt、Spike、Ken、Which、Tofu、Chiyo、Rob、Zee、dustin、George、Del、Matthew、Cat、Jacqui、Lightfoot、Adrian、Viola、Alfred、Noel、Irfan、Sunil、Yool、Rika、Jane、Xtreme、Frontier、a2、Neo、Siobhan、Yoz、Justin、Elle、Qarl、Benjamin、Isabel、Gulliver、Everett、Christopher、Izzy、Stephany、Garry、Sejong、Sean、Tobin、Iridium、Meta、Anthony、Jeremy、JP、Jake、Maurice、Madhavi、Leopard、Kyle、Joon、Kari、Bert、Belinda、Jon、Kristi、Bridie、Pramod、KJ、Socrates、Maria、Ivan、Aric、Yamasaki、Adreanne、Jay、MitchK、Ceren、Coco、Durl、Jenny、Periapse、Kartic、Storrs、Lotte、Sandy、Rohn、Colossus、Zen、BigPapi、Brad、Pastrami、Kurz、Mani、Neuro、Jaime、MJ、Rowan、Sgt、Elvis、Gecko、Samuel、Sardonyx、Leo、Bryan、Niko、Soft、Poppy、Rachel、Aki、Angelo、Banzai、Alexa、Sue、CeeLo、Bender、CG、Gillian、Pelle、Nick、Echo、Zara、Christine、Shamiran、Emma、Blake、Keiko、Plexus、Joppa、Sidewinder、Erica、Ashlei、Twilight、Kristen、Brett、Q、Enus、Simon、Bevis、Kraft、Kip、Chandler、Ron、LauraP、Ram、KyleJM、Scouse、Prospero、Melissa、Marty、Nat、Hamilton、Kend、Lordan、Jimmy、Kosmo、Seraph、Green、Ekim、Wiggo、JT、Rome、Doris、Miz、Benoc、Whump、Trinity、Patch、Kate、TJ、Bao、Joohwan、Christy、Sofia、Matias、Cogsworth、Johan、Oreh、Cheah、Angela、Brandy、Mango、Lan、Aleks、Gloria、Heidy、Mitchell、Space、Colton、Bambers、Einstein、Maggie、Malbers、Rose、Winnie、Stella、Milton、Rothman、Niall、Marin、Allison、Katie、Dawn、Katt、Dusty、Kalpana、Judy、Andrea、Ambroff、Infinity、Gail、Rico、Raymond、Yi、William、Christa、M、Teagan、Scout、Molly、Dante、Corr、Dynamike、Usi、Kaylee、Vidtuts、Lil、Danica、Sascha、Kelv、Jacob、Nya、Rodney、Brandon、Elsie、Blondin、Grant、Katrin、Nyx、Gabriel、Locklainn、Claire、Devin、Minerva、Monty、Austin、Bradford、Si、Keira、H、Caitlin、Dita、Makai、Jenn、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、Yang、T、Simone、Maestro、Scott、Charlene、Quixote、Amanda、Susan、Zed、Anne、Enkidu、Esbee、Joroan、Katelin、Roxie、Tay、Scarlet、Kevin、Johnny、Wolfgang、Andren、Bob、Howard、Merov、Rand、Ray、Michon、Newell、Galen、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と、その他多数の人達によって作成されました。
-
- このバージョンをこれまでで最高のものになるようご協力をいただいた以下の住人の皆様に深く感謝いたします。 able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
-
-
-
- ビジネスで成功するには、勇気を持って、誰よりも先に、人と違ったことをすることだ。 --Henry Marchant
- </text_editor>
- </panel>
- <panel label="ライセンス" 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.
-
- 無断転写、複製、転載を禁じます。 詳細はlicenses.txtを参照してください。
-
- Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="[APP_NAME]について">
+ <tab_container name="about_tab">
+ <panel label="クレジット" name="credits_panel">
+ <text_editor name="credits_editor">
+ Second Lifeは、 Philip、Tessa、Andrew、Cory、James、Ben、Char、Charlie、Colin、Dan、Daniel、Doug、Eric、Hamlet、Haney、Eve、Hunter、Ian、Jeff、Jennifer、Jim、John、Lee、Mark、Peter、Phoenix、Richard、Robin、Xenon、Steve、Tanya、Eddie、Avi、Frank、Bruce、Aaron、Alice、Bob、Debra、Eileen、Helen、Janet、Louie、Leviathania、Stefan、Ray、Kevin、Tom、Mikeb、MikeT、Burgess、Elena、Tracy、Bill、Todd、Ryan、Zach、Sarah、Nova、Tim、Stephanie、Michael、Evan、Nicolas、Catherine、Rachelle、Dave、Holly、Bub、Kelly、Magellan、Ramzi、Don、Sabin、Jill、Rheya、Jeska、Torley、Kona、Callum、Charity、Ventrella、Jack、Vektor、Iris、Chris、Nicole、Mick、Reuben、Blue、Babbage、Yedwab、Deana、Lauren、Brent、Pathfinder、Chadrick、Altruima、Jesse、Teeny、Monroe、Icculus、David、Tess、Lizzie、Patsy、Isaac、Lawrence、Cyn、Bo、Gia、Annette、Marius、Tbone、Jonathan、Karen、Ginsu、Satoko、Yuko、Makiko、Thomas、Harry、Seth、Alexei、Brian、Guy、Runitai、Ethan、Data、Cornelius、Kenny、Swiss、Zero、Natria、Wendy、Stephen、Teeple、Thumper、Lucy、Dee、Mia、Liana、Warren、Branka、Aura、beez、Milo、Hermia、Red、Thrax、Joe、Sally、Magenta、Mogura、Paul、Jose、Rejean、Henrik、Lexie、Amber、Logan、Xan、Nora、Morpheus、Donovan、Leyla、MichaelFrancis、Beast、Cube、Bucky、Joshua、Stryfe、Harmony、Teresa、Claudia、Walker、Glenn、Fritz、Fordak、June、Cleopetra、Jean、Ivy、Betsy、Roosevelt、Spike、Ken、Which、Tofu、Chiyo、Rob、Zee、dustin、George、Del、Matthew、Cat、Jacqui、Lightfoot、Adrian、Viola、Alfred、Noel、Irfan、Sunil、Yool、Rika、Jane、Xtreme、Frontier、a2、Neo、Siobhan、Yoz、Justin、Elle、Qarl、Benjamin、Isabel、Gulliver、Everett、Christopher、Izzy、Stephany、Garry、Sejong、Sean、Tobin、Iridium、Meta、Anthony、Jeremy、JP、Jake、Maurice、Madhavi、Leopard、Kyle、Joon、Kari、Bert、Belinda、Jon、Kristi、Bridie、Pramod、KJ、Socrates、Maria、Ivan、Aric、Yamasaki、Adreanne、Jay、MitchK、Ceren、Coco、Durl、Jenny、Periapse、Kartic、Storrs、Lotte、Sandy、Rohn、Colossus、Zen、BigPapi、Brad、Pastrami、Kurz、Mani、Neuro、Jaime、MJ、Rowan、Sgt、Elvis、Gecko、Samuel、Sardonyx、Leo、Bryan、Niko、Soft、Poppy、Rachel、Aki、Angelo、Banzai、Alexa、Sue、CeeLo、Bender、CG、Gillian、Pelle、Nick、Echo、Zara、Christine、Shamiran、Emma、Blake、Keiko、Plexus、Joppa、Sidewinder、Erica、Ashlei、Twilight、Kristen、Brett、Q、Enus、Simon、Bevis、Kraft、Kip、Chandler、Ron、LauraP、Ram、KyleJM、Scouse、Prospero、Melissa、Marty、Nat、Hamilton、Kend、Lordan、Jimmy、Kosmo、Seraph、Green、Ekim、Wiggo、JT、Rome、Doris、Miz、Benoc、Whump、Trinity、Patch、Kate、TJ、Bao、Joohwan、Christy、Sofia、Matias、Cogsworth、Johan、Oreh、Cheah、Angela、Brandy、Mango、Lan、Aleks、Gloria、Heidy、Mitchell、Space、Colton、Bambers、Einstein、Maggie、Malbers、Rose、Winnie、Stella、Milton、Rothman、Niall、Marin、Allison、Katie、Dawn、Katt、Dusty、Kalpana、Judy、Andrea、Ambroff、Infinity、Gail、Rico、Raymond、Yi、William、Christa、M、Teagan、Scout、Molly、Dante、Corr、Dynamike、Usi、Kaylee、Vidtuts、Lil、Danica、Sascha、Kelv、Jacob、Nya、Rodney、Brandon、Elsie、Blondin、Grant、Katrin、Nyx、Gabriel、Locklainn、Claire、Devin、Minerva、Monty、Austin、Bradford、Si、Keira、H、Caitlin、Dita、Makai、Jenn、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、Yang、T、Simone、Maestro、Scott、Charlene、Quixote、Amanda、Susan、Zed、Anne、Enkidu、Esbee、Joroan、Katelin、Roxie、Tay、Scarlet、Kevin、Johnny、Wolfgang、Andren、Bob、Howard、Merov、Rand、Ray、Michon、Newell、Galen、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と、その他多数の人達によって作成されました。
+
+ このバージョンをこれまでで最高のものになるようご協力をいただいた以下の住人の皆様に深く感謝いたします。 able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
+
+
+
+ ビジネスで成功するには、勇気を持って、誰よりも先に、人と違ったことをすることだ。 --Henry Marchant
+ </text_editor>
+ </panel>
+ <panel label="ライセンス" 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.
+
+ 無断転写、複製、転載を禁じます。 詳細はlicenses.txtを参照してください。
+
+ 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/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index bb9dcac83b..80c76879f1 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -1,475 +1,475 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="土地情報">
- <floater.string name="Minutes">
- [MINUTES] 分
- </floater.string>
- <floater.string name="Minute">
- 分
- </floater.string>
- <floater.string name="Seconds">
- [SECONDS] 秒
- </floater.string>
- <tab_container name="landtab">
- <panel label="一般" name="land_general_panel">
- <panel.string name="new users only">
- 新規ユーザーのみ
- </panel.string>
- <panel.string name="anyone">
- 誰でも
- </panel.string>
- <panel.string name="area_text">
- 面積:
- </panel.string>
- <panel.string name="area_size_text">
- [AREA]平方メートル
- </panel.string>
- <panel.string name="auction_id_text">
- オークションID: [ID]
- </panel.string>
- <panel.string name="need_tier_to_modify">
- この土地を修正変更するには、購入を承認する必要があります。
- </panel.string>
- <panel.string name="group_owned_text">
- (グループ所有)
- </panel.string>
- <panel.string name="profile_text">
- プロフィール...
- </panel.string>
- <panel.string name="info_text">
- 情報...
- </panel.string>
- <panel.string name="public_text">
- (公共)
- </panel.string>
- <panel.string name="none_text">
- (なし)
- </panel.string>
- <panel.string name="sale_pending_text">
- (購入審査中)
- </panel.string>
- <panel.string name="no_selection_text">
- 区画が選定されていません。
-「世界」メニュー>「土地情報」に進むか、別の区画を選択して、詳細を表示します。
- </panel.string>
- <text name="Name:">
- 名前:
- </text>
- <line_editor name="Name"/>
- <text name="Description:">
- 説明:
- </text>
- <text name="LandType">
- 種類:
- </text>
- <text name="LandTypeText">
- メインランド/ホームステッド
- </text>
- <text name="ContentRating">
- 区分:
- </text>
- <text name="ContentRatingText">
- Adult
- </text>
- <text name="Owner:">
- オーナー:
- </text>
- <text name="OwnerText">
- Leyla Linden
- </text>
- <button label="プロフィール..." label_selected="プロフィール..." name="Profile..."/>
- <text name="Group:">
- グループ:
- </text>
- <button label="設定..." label_selected="設定..." name="Set..."/>
- <check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループ・オフィサーは、この土地をグループに譲渡し、グループの土地配分に委ねることができます。"/>
- <button label="譲渡..." label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/>
- <check_box label="オーナーが譲渡と共に寄付" name="check contrib" tool_tip="土地がグループに譲渡されるとき、前の所有者は譲渡が成立するよう、十分な土地を寄付します。"/>
- <text name="For Sale:">
- 販売の有無:
- </text>
- <text name="Not for sale.">
- 販売対象外
- </text>
- <text name="For Sale: Price L$[PRICE].">
- 価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル)
- </text>
- <button label="土地を販売..." label_selected="土地を販売..." name="Sell Land..."/>
- <text name="For sale to">
- 販売先:[BUYER]
- </text>
- <text name="Sell with landowners objects in parcel.">
- オブジェクトも販売価格に含まれます
- </text>
- <text name="Selling with no objects in parcel.">
- オブジェクトは販売対象外です
- </text>
- <button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"/>
- <text name="Claimed:">
- 取得日時:
- </text>
- <text name="DateClaimText">
- 2006年8月15日火曜日13:47:25
- </text>
- <text name="PriceLabel">
- 面積:
- </text>
- <text name="PriceText">
- 4048平方メートル
- </text>
- <text name="Traffic:">
- 交通量:
- </text>
- <text name="DwellText">
- 誤
- </text>
- <button label="土地を購入..." label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/>
- <button label="グループ用に購入..." label_selected="グループ用に購入..." name="Buy For Group..."/>
- <button label="入場許可を購入..." label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/>
- <button label="土地を放棄..." label_selected="土地を放棄..." name="Abandon Land..."/>
- <button label="土地の返還を要求..." label_selected="土地の返還を要求..." name="Reclaim Land..."/>
- <button label="Lindenセール..." label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
- </panel>
- <panel label="約款" name="land_covenant_panel">
- <panel.string name="can_resell">
- この地域で購入した土地は、再販できます。
- </panel.string>
- <panel.string name="can_not_resell">
- この地域で購入した土地は、再販できないことがあります。
- </panel.string>
- <panel.string name="can_change">
- この地域で購入した土地は、統合または再分割できます。
- </panel.string>
- <panel.string name="can_not_change">
- この地域で購入した土地は、統合/再分割できないことが
-あります。
- </panel.string>
- <text font="SansSerifLarge" name="estate_section_lbl">
- 不動産:
- </text>
- <text name="estate_name_lbl">
- 名前:
- </text>
- <text name="estate_name_text">
- メインランド
- </text>
- <text name="estate_owner_lbl">
- オーナー:
- </text>
- <text name="estate_owner_text">
- (なし)
- </text>
- <text_editor name="covenant_editor">
- この不動産には約款がありません。
- </text_editor>
- <text name="covenant_timestamp_text">
- 最後の更新1969年12月31日水曜日16:00:00
- </text>
- <text font="SansSerifLarge" name="region_section_lbl">
- 地域:
- </text>
- <text name="region_name_lbl">
- 名前:
- </text>
- <text name="region_name_text">
- Leyla
- </text>
- <text name="region_landtype_lbl">
- 種類:
- </text>
- <text name="region_landtype_text">
- メインランド/ホームステッド
- </text>
- <text name="region_maturity_lbl">
- 区分:
- </text>
- <text name="region_maturity_text">
- Adult
- </text>
- <text name="resellable_lbl">
- 再販:
- </text>
- <text name="resellable_clause">
- この地域(リージョン)にある土地は再販できません。
- </text>
- <text name="changeable_lbl">
- 再分割:
- </text>
- <text name="changeable_clause">
- この地域(リージョン)にある土地は統合または分割ができ
-ません。
- </text>
- </panel>
- <panel label="オブジェクト" name="land_objects_panel">
- <panel.string left="200" name="objects_available_text">
- [MAX]の内[COUNT]([AVAILABLE]利用可能)
- </panel.string>
- <panel.string left="200" name="objects_deleted_text">
- [MAX]の内[COUNT]([DELETED]を削除)
- </panel.string>
- <text name="parcel_object_bonus">
- 地域オブジェクトボーナス要因: [BONUS]
- </text>
- <text name="Simulator primitive usage:" width="500">
- 地域全体のプリム使用状況:
- </text>
- <text left="200" name="objects_available">
- [MAX]の内[COUNT]([AVAILABLE]利用可能)
- </text>
- <text name="Primitives parcel supports:" width="200">
- 区画でサポートされるプリム数:
- </text>
- <text left="200" name="object_contrib_text">
- [COUNT]
- </text>
- <text name="Primitives on parcel:">
- 区画上のプリム数:
- </text>
- <text left="200" name="total_objects_text">
- [COUNT]
- </text>
- <text name="Owned by parcel owner:" width="300">
- 区画オーナーによる所有:
- </text>
- <text left="200" name="owner_objects_text">
- [COUNT]
- </text>
- <button label="表示" label_selected="表示" name="ShowOwner" right="-145"/>
- <button label="返却..." label_selected="返却..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
- <text name="Set to group:">
- グループに設定:
- </text>
- <text left="200" name="group_objects_text">
- [COUNT]
- </text>
- <button label="表示" label_selected="表示" name="ShowGroup" right="-145"/>
- <button label="返却..." label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
- <text name="Owned by others:">
- 他人による所有:
- </text>
- <text left="200" name="other_objects_text">
- [COUNT]
- </text>
- <button label="表示" label_selected="表示" name="ShowOther" right="-145"/>
- <button label="返却..." label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
- <text name="Selected / sat upon:">
- 選択済み/決定済み:
- </text>
- <text left="200" name="selected_objects_text">
- [COUNT]
- </text>
- <text name="Autoreturn" width="500">
- 他の住人のオブジェクトの自動返却(分、0で自動返却なし)
- </text>
- <line_editor left_delta="5" name="clean other time" right="-80"/>
- <text name="Object Owners:" width="150">
- オブジェクトのオーナー:
- </text>
- <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List"/>
- <button label="オブジェクトの返却..." label_selected="オブジェクトの返却..." left="256" name="Return objects..."/>
- <name_list label="カウント" name="owner list">
- <name_list.columns label="タイプ" name="type"/>
- <name_list.columns name="online_status"/>
- <name_list.columns label="名前" name="name"/>
- <name_list.columns label="カウント" name="count"/>
- <name_list.columns label="最新" name="mostrecent"/>
- </name_list>
- </panel>
- <panel label="オプション" name="land_options_panel">
- <panel.string name="search_enabled_tooltip">
- この区画を検索結果に表示する
- </panel.string>
- <panel.string name="search_disabled_small_tooltip">
- 区画面積が128平方メートルかそれ以下のため、このオプションは無効です。
-大きな区画のみ検索に表示させることが可能です。
- </panel.string>
- <panel.string name="search_disabled_permissions_tooltip">
- あなたはこの区画の設定編集ができないため、このオプションは無効です。
- </panel.string>
- <panel.string name="mature_check_mature">
- Matureコンテンツ
- </panel.string>
- <panel.string name="mature_check_adult">
- Adultコンテンツ
- </panel.string>
- <panel.string name="mature_check_mature_tooltip">
- あなたの区画情報及びコンテンツはMatureとされています。
- </panel.string>
- <panel.string name="mature_check_adult_tooltip">
- あなたの区画情報及びコンテンツはAdultとされています。
- </panel.string>
- <panel.string name="landing_point_none">
- (なし)
- </panel.string>
- <panel.string name="push_restrict_text">
- プッシングを制限
- </panel.string>
- <panel.string name="push_restrict_region_text">
- プッシングを制限 (地域優先)
- </panel.string>
- <text name="allow_label">
- 他の住人に以下を許可:
- </text>
- <check_box label="地形を編集" name="edit land check" tool_tip="チェックを入れると、他人があなたの土地の地形編集を行うことが可能となります。このオプションのチェックを外しておくことをおすすめします。外した状態であなたの土地の地形編集が可能です。"/>
- <check_box label="飛行" name="check fly" tool_tip="チェックを入れるとこの土地での飛行が可能となります。チェックを外すと土地に入る際と通り過ぎるときのみ飛行可能となります。"/>
- <text left="138" name="allow_label2" width="144">
- オブジェクトの作成:
- </text>
- <check_box label="すべての住人" left="280" name="edit objects check"/>
- <check_box label="グループ" left="380" name="edit group objects check"/>
- <text left="138" name="allow_label3" width="144">
- オブジェクトの進入:
- </text>
- <check_box label="すべての住人" left="280" name="all object entry check"/>
- <check_box label="グループ" left="380" name="group object entry check"/>
- <text left="138" name="allow_label4" width="144">
- スクリプトの実行:
- </text>
- <check_box label="すべての住人" left="280" name="check other scripts"/>
- <check_box label="グループ" left="380" name="check group scripts"/>
- <text name="land_options_label">
- 土地オプション:
- </text>
- <check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
- <check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を妨げることができます。"/>
- <check_box label="検索に表示>(週L$30)以下の場所" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/>
- <combo_box name="land category with adult">
- <combo_box.item label="全カテゴリ" name="item0"/>
- <combo_box.item label="Linden所在地" name="item1"/>
- <combo_box.item label="Adult" name="item2"/>
- <combo_box.item label="アートとカルチャー" name="item3"/>
- <combo_box.item label="ビジネス" name="item4"/>
- <combo_box.item label="教育的" name="item5"/>
- <combo_box.item label="ゲーム" name="item6"/>
- <combo_box.item label="たまり場" name="item7"/>
- <combo_box.item label="新住人に好意的" name="item8"/>
- <combo_box.item label="公園と自然" name="item9"/>
- <combo_box.item label="住宅用" name="item10"/>
- <combo_box.item label="ショッピング" name="item11"/>
- <combo_box.item label="その他" name="item12"/>
- </combo_box>
- <combo_box name="land category">
- <combo_box.item label="全カテゴリー" name="item0"/>
- <combo_box.item label="Linden所在地" name="item1"/>
- <combo_box.item label="アート&amp;カルチャー" name="item3"/>
- <combo_box.item label="ビジネス" name="item4"/>
- <combo_box.item label="教育的" name="item5"/>
- <combo_box.item label="ゲーム" name="item6"/>
- <combo_box.item label="たまり場" name="item7"/>
- <combo_box.item label="新住人に好意的" name="item8"/>
- <combo_box.item label="公園と自然" name="item9"/>
- <combo_box.item label="住宅用" name="item10"/>
- <combo_box.item label="ショッピング" name="item11"/>
- <combo_box.item label="その他" name="item12"/>
- </combo_box>
- <check_box label="Matureコンテンツ" name="MatureCheck" tool_tip=""/>
- <text name="Snapshot:">
- スナップショット:
- </text>
- <texture_picker label="" left="116" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
- <text name="landing_point">
- 着地点: [LANDING]
- </text>
- <button label="設定" label_selected="設定" name="Set" tool_tip="訪問者の着地点の設定を行います。この区画内に立って行ってください。"/>
- <button label="クリア" label_selected="クリア" name="Clear" tool_tip="着地点をクリアしてください。"/>
- <text name="Teleport Routing: ">
- テレポート制限:
- </text>
- <combo_box name="landing type" tool_tip="Teleport Routing -- select how to handle teleports onto your land.">
- <combo_box.item label="不可" name="Blocked"/>
- <combo_box.item label="着地点" name="LandingPoint"/>
- <combo_box.item label="どこでも" name="Anywhere"/>
- </combo_box>
- </panel>
- <panel label="メディア" name="land_media_panel">
- <text name="with media:">
- 種類:
- </text>
- <combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/>
- <text name="at URL:">
- ホーム URL:
- </text>
- <button label="設定..." label_selected="設定..." name="set_media_url"/>
- <text name="CurrentURL:">
- 現在の URL:
- </text>
- <button label="リセット..." label_selected="リセット..." name="reset_media_url"/>
- <check_box label="URL を非表示" name="hide_media_url" tool_tip="このオプションをオンにすると、許可なしでこの区画情報にアクセスしているユーザーにはメディア URL が表示されません。 これは HTML タイプには使用できませんのでご注意ください。"/>
- <text name="Description:">
- 説明:
- </text>
- <line_editor name="url_description" tool_tip="[再生]/[ロード]ボタンの隣に表示されるテキスト"/>
- <text name="Media texture:">
- テクスチ
-ャ取替:
- </text>
- <texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/>
- <text name="replace_texture_help" width="290">
- このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。
-
-テクスチャを変更するにはサムネイルを選択してください。
- </text>
- <check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャーのスケーリングや整列が必要になることはありません。"/>
- <text name="media_size" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。">
- サイズ:
- </text>
- <spinner name="media_size_width" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
- <spinner name="media_size_height" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
- <text name="pixels">
- ピクセル
- </text>
- <text name="Options:">
- オプション:
- </text>
- <check_box label="ループ" name="media_loop" tool_tip="メディアをループ再生します。 メディアの再生が終わったら、最初から再生し直します。"/>
- </panel>
- <panel label="オーディオ" name="land_audio_panel">
- <text name="MusicURL:">
- 音楽 URL:
- </text>
- <text name="Sound:">
- サウンド:
- </text>
- <check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定" name="check sound local"/>
- <text name="Voice settings:">
- ボイス:
- </text>
- <check_box label="ボイスを有効にする" name="parcel_enable_voice_channel"/>
- <check_box label="ボイスを有効にする(不動産設定)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="この区画でのボイス使用を制限する" name="parcel_enable_voice_channel_parcel"/>
- </panel>
- <panel label="アクセス" name="land_access_panel">
- <panel.string name="estate_override">
- 1つ以上のオプションが、不動産レベルで設定されています。
- </panel.string>
- <text name="Limit access to this parcel to:">
- この区画にアクセス
- </text>
- <check_box label="パブリック・アクセスを許可" name="public_access"/>
- <text name="Only Allow">
- 次の住人のアクセスをブロック:
- </text>
- <check_box label="Linden Labに支払い情報を登録していない住人" name="limit_payment" tool_tip="支払い情報未確認の住人を排除する"/>
- <check_box label="年齢確認を済ませていない成人の住人" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
- <check_box label="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/>
- <check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/>
- <combo_box name="pass_combo">
- <combo_box.item label="誰でも" name="Anyone"/>
- <combo_box.item label="グループ" name="Group"/>
- </combo_box>
- <spinner label="価格(L$):" name="PriceSpin"/>
- <spinner label="アクセス時間:" name="HoursSpin"/>
- <text label="常に許可" name="AllowedText">
- 許可された住人
- </text>
- <name_list name="AccessList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/>
- <button label="追加..." label_selected="追加..." name="add_allowed"/>
- <button label="削除" label_selected="削除" name="remove_allowed"/>
- <text label="禁止" name="BanCheck">
- 禁止された住人
- </text>
- <name_list name="BannedList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/>
- <button label="追加..." label_selected="追加..." name="add_banned"/>
- <button label="削除" label_selected="削除" name="remove_banned"/>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="土地情報">
+ <floater.string name="Minutes">
+ [MINUTES] 分
+ </floater.string>
+ <floater.string name="Minute">
+ 分
+ </floater.string>
+ <floater.string name="Seconds">
+ [SECONDS] 秒
+ </floater.string>
+ <tab_container name="landtab">
+ <panel label="一般" name="land_general_panel">
+ <panel.string name="new users only">
+ 新規ユーザーのみ
+ </panel.string>
+ <panel.string name="anyone">
+ 誰でも
+ </panel.string>
+ <panel.string name="area_text">
+ 面積:
+ </panel.string>
+ <panel.string name="area_size_text">
+ [AREA]平方メートル
+ </panel.string>
+ <panel.string name="auction_id_text">
+ オークションID: [ID]
+ </panel.string>
+ <panel.string name="need_tier_to_modify">
+ この土地を修正変更するには、購入を承認する必要があります。
+ </panel.string>
+ <panel.string name="group_owned_text">
+ (グループ所有)
+ </panel.string>
+ <panel.string name="profile_text">
+ プロフィール...
+ </panel.string>
+ <panel.string name="info_text">
+ 情報...
+ </panel.string>
+ <panel.string name="public_text">
+ (公共)
+ </panel.string>
+ <panel.string name="none_text">
+ (なし)
+ </panel.string>
+ <panel.string name="sale_pending_text">
+ (購入審査中)
+ </panel.string>
+ <panel.string name="no_selection_text">
+ 区画が選定されていません。
+「世界」メニュー>「土地情報」に進むか、別の区画を選択して、詳細を表示します。
+ </panel.string>
+ <text name="Name:">
+ 名前:
+ </text>
+ <line_editor name="Name"/>
+ <text name="Description:">
+ 説明:
+ </text>
+ <text name="LandType">
+ 種類:
+ </text>
+ <text name="LandTypeText">
+ メインランド/ホームステッド
+ </text>
+ <text name="ContentRating">
+ 区分:
+ </text>
+ <text name="ContentRatingText">
+ Adult
+ </text>
+ <text name="Owner:">
+ オーナー:
+ </text>
+ <text name="OwnerText">
+ Leyla Linden
+ </text>
+ <button label="プロフィール..." label_selected="プロフィール..." name="Profile..."/>
+ <text name="Group:">
+ グループ:
+ </text>
+ <button label="設定..." label_selected="設定..." name="Set..."/>
+ <check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループ・オフィサーは、この土地をグループに譲渡し、グループの土地配分に委ねることができます。"/>
+ <button label="譲渡..." label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/>
+ <check_box label="オーナーが譲渡と共に寄付" name="check contrib" tool_tip="土地がグループに譲渡されるとき、前の所有者は譲渡が成立するよう、十分な土地を寄付します。"/>
+ <text name="For Sale:">
+ 販売の有無:
+ </text>
+ <text name="Not for sale.">
+ 販売対象外
+ </text>
+ <text name="For Sale: Price L$[PRICE].">
+ 価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル)
+ </text>
+ <button label="土地を販売..." label_selected="土地を販売..." name="Sell Land..."/>
+ <text name="For sale to">
+ 販売先:[BUYER]
+ </text>
+ <text name="Sell with landowners objects in parcel.">
+ オブジェクトも販売価格に含まれます
+ </text>
+ <text name="Selling with no objects in parcel.">
+ オブジェクトは販売対象外です
+ </text>
+ <button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"/>
+ <text name="Claimed:">
+ 取得日時:
+ </text>
+ <text name="DateClaimText">
+ 2006年8月15日火曜日13:47:25
+ </text>
+ <text name="PriceLabel">
+ 面積:
+ </text>
+ <text name="PriceText">
+ 4048平方メートル
+ </text>
+ <text name="Traffic:">
+ 交通量:
+ </text>
+ <text name="DwellText">
+ 誤
+ </text>
+ <button label="土地を購入..." label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/>
+ <button label="グループ用に購入..." label_selected="グループ用に購入..." name="Buy For Group..."/>
+ <button label="入場許可を購入..." label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/>
+ <button label="土地を放棄..." label_selected="土地を放棄..." name="Abandon Land..."/>
+ <button label="土地の返還を要求..." label_selected="土地の返還を要求..." name="Reclaim Land..."/>
+ <button label="Lindenセール..." label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
+ </panel>
+ <panel label="約款" name="land_covenant_panel">
+ <panel.string name="can_resell">
+ この地域で購入した土地は、再販できます。
+ </panel.string>
+ <panel.string name="can_not_resell">
+ この地域で購入した土地は、再販できないことがあります。
+ </panel.string>
+ <panel.string name="can_change">
+ この地域で購入した土地は、統合または再分割できます。
+ </panel.string>
+ <panel.string name="can_not_change">
+ この地域で購入した土地は、統合/再分割できないことが
+あります。
+ </panel.string>
+ <text font="SansSerifLarge" name="estate_section_lbl">
+ 不動産:
+ </text>
+ <text name="estate_name_lbl">
+ 名前:
+ </text>
+ <text name="estate_name_text">
+ メインランド
+ </text>
+ <text name="estate_owner_lbl">
+ オーナー:
+ </text>
+ <text name="estate_owner_text">
+ (なし)
+ </text>
+ <text_editor name="covenant_editor">
+ この不動産には約款がありません。
+ </text_editor>
+ <text name="covenant_timestamp_text">
+ 最後の更新1969年12月31日水曜日16:00:00
+ </text>
+ <text font="SansSerifLarge" name="region_section_lbl">
+ 地域:
+ </text>
+ <text name="region_name_lbl">
+ 名前:
+ </text>
+ <text name="region_name_text">
+ Leyla
+ </text>
+ <text name="region_landtype_lbl">
+ 種類:
+ </text>
+ <text name="region_landtype_text">
+ メインランド/ホームステッド
+ </text>
+ <text name="region_maturity_lbl">
+ 区分:
+ </text>
+ <text name="region_maturity_text">
+ Adult
+ </text>
+ <text name="resellable_lbl">
+ 再販:
+ </text>
+ <text name="resellable_clause">
+ この地域(リージョン)にある土地は再販できません。
+ </text>
+ <text name="changeable_lbl">
+ 再分割:
+ </text>
+ <text name="changeable_clause">
+ この地域(リージョン)にある土地は統合または分割ができ
+ません。
+ </text>
+ </panel>
+ <panel label="オブジェクト" name="land_objects_panel">
+ <panel.string left="200" name="objects_available_text">
+ [MAX]の内[COUNT]([AVAILABLE]利用可能)
+ </panel.string>
+ <panel.string left="200" name="objects_deleted_text">
+ [MAX]の内[COUNT]([DELETED]を削除)
+ </panel.string>
+ <text name="parcel_object_bonus">
+ 地域オブジェクトボーナス要因: [BONUS]
+ </text>
+ <text name="Simulator primitive usage:" width="500">
+ 地域全体のプリム使用状況:
+ </text>
+ <text left="200" name="objects_available">
+ [MAX]の内[COUNT]([AVAILABLE]利用可能)
+ </text>
+ <text name="Primitives parcel supports:" width="200">
+ 区画でサポートされるプリム数:
+ </text>
+ <text left="200" name="object_contrib_text">
+ [COUNT]
+ </text>
+ <text name="Primitives on parcel:">
+ 区画上のプリム数:
+ </text>
+ <text left="200" name="total_objects_text">
+ [COUNT]
+ </text>
+ <text name="Owned by parcel owner:" width="300">
+ 区画オーナーによる所有:
+ </text>
+ <text left="200" name="owner_objects_text">
+ [COUNT]
+ </text>
+ <button label="表示" label_selected="表示" name="ShowOwner" right="-145"/>
+ <button label="返却..." label_selected="返却..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
+ <text name="Set to group:">
+ グループに設定:
+ </text>
+ <text left="200" name="group_objects_text">
+ [COUNT]
+ </text>
+ <button label="表示" label_selected="表示" name="ShowGroup" right="-145"/>
+ <button label="返却..." label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
+ <text name="Owned by others:">
+ 他人による所有:
+ </text>
+ <text left="200" name="other_objects_text">
+ [COUNT]
+ </text>
+ <button label="表示" label_selected="表示" name="ShowOther" right="-145"/>
+ <button label="返却..." label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/>
+ <text name="Selected / sat upon:">
+ 選択済み/決定済み:
+ </text>
+ <text left="200" name="selected_objects_text">
+ [COUNT]
+ </text>
+ <text name="Autoreturn" width="500">
+ 他の住人のオブジェクトの自動返却(分、0で自動返却なし)
+ </text>
+ <line_editor left_delta="5" name="clean other time" right="-80"/>
+ <text name="Object Owners:" width="150">
+ オブジェクトのオーナー:
+ </text>
+ <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List"/>
+ <button label="オブジェクトの返却..." label_selected="オブジェクトの返却..." left="256" name="Return objects..."/>
+ <name_list label="カウント" name="owner list">
+ <name_list.columns label="タイプ" name="type"/>
+ <name_list.columns name="online_status"/>
+ <name_list.columns label="名前" name="name"/>
+ <name_list.columns label="カウント" name="count"/>
+ <name_list.columns label="最新" name="mostrecent"/>
+ </name_list>
+ </panel>
+ <panel label="オプション" name="land_options_panel">
+ <panel.string name="search_enabled_tooltip">
+ この区画を検索結果に表示する
+ </panel.string>
+ <panel.string name="search_disabled_small_tooltip">
+ 区画面積が128平方メートルかそれ以下のため、このオプションは無効です。
+大きな区画のみ検索に表示させることが可能です。
+ </panel.string>
+ <panel.string name="search_disabled_permissions_tooltip">
+ あなたはこの区画の設定編集ができないため、このオプションは無効です。
+ </panel.string>
+ <panel.string name="mature_check_mature">
+ Matureコンテンツ
+ </panel.string>
+ <panel.string name="mature_check_adult">
+ Adultコンテンツ
+ </panel.string>
+ <panel.string name="mature_check_mature_tooltip">
+ あなたの区画情報及びコンテンツはMatureとされています。
+ </panel.string>
+ <panel.string name="mature_check_adult_tooltip">
+ あなたの区画情報及びコンテンツはAdultとされています。
+ </panel.string>
+ <panel.string name="landing_point_none">
+ (なし)
+ </panel.string>
+ <panel.string name="push_restrict_text">
+ プッシングを制限
+ </panel.string>
+ <panel.string name="push_restrict_region_text">
+ プッシングを制限 (地域優先)
+ </panel.string>
+ <text name="allow_label">
+ 他の住人に以下を許可:
+ </text>
+ <check_box label="地形を編集" name="edit land check" tool_tip="チェックを入れると、他人があなたの土地の地形編集を行うことが可能となります。このオプションのチェックを外しておくことをおすすめします。外した状態であなたの土地の地形編集が可能です。"/>
+ <check_box label="飛行" name="check fly" tool_tip="チェックを入れるとこの土地での飛行が可能となります。チェックを外すと土地に入る際と通り過ぎるときのみ飛行可能となります。"/>
+ <text left="138" name="allow_label2" width="144">
+ オブジェクトの作成:
+ </text>
+ <check_box label="すべての住人" left="280" name="edit objects check"/>
+ <check_box label="グループ" left="380" name="edit group objects check"/>
+ <text left="138" name="allow_label3" width="144">
+ オブジェクトの進入:
+ </text>
+ <check_box label="すべての住人" left="280" name="all object entry check"/>
+ <check_box label="グループ" left="380" name="group object entry check"/>
+ <text left="138" name="allow_label4" width="144">
+ スクリプトの実行:
+ </text>
+ <check_box label="すべての住人" left="280" name="check other scripts"/>
+ <check_box label="グループ" left="380" name="check group scripts"/>
+ <text name="land_options_label">
+ 土地オプション:
+ </text>
+ <check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
+ <check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を妨げることができます。"/>
+ <check_box label="検索に表示>(週L$30)以下の場所" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/>
+ <combo_box name="land category with adult">
+ <combo_box.item label="全カテゴリ" name="item0"/>
+ <combo_box.item label="Linden所在地" name="item1"/>
+ <combo_box.item label="Adult" name="item2"/>
+ <combo_box.item label="アートとカルチャー" name="item3"/>
+ <combo_box.item label="ビジネス" name="item4"/>
+ <combo_box.item label="教育的" name="item5"/>
+ <combo_box.item label="ゲーム" name="item6"/>
+ <combo_box.item label="たまり場" name="item7"/>
+ <combo_box.item label="新住人に好意的" name="item8"/>
+ <combo_box.item label="公園と自然" name="item9"/>
+ <combo_box.item label="住宅用" name="item10"/>
+ <combo_box.item label="ショッピング" name="item11"/>
+ <combo_box.item label="その他" name="item12"/>
+ </combo_box>
+ <combo_box name="land category">
+ <combo_box.item label="全カテゴリー" name="item0"/>
+ <combo_box.item label="Linden所在地" name="item1"/>
+ <combo_box.item label="アート&amp;カルチャー" name="item3"/>
+ <combo_box.item label="ビジネス" name="item4"/>
+ <combo_box.item label="教育的" name="item5"/>
+ <combo_box.item label="ゲーム" name="item6"/>
+ <combo_box.item label="たまり場" name="item7"/>
+ <combo_box.item label="新住人に好意的" name="item8"/>
+ <combo_box.item label="公園と自然" name="item9"/>
+ <combo_box.item label="住宅用" name="item10"/>
+ <combo_box.item label="ショッピング" name="item11"/>
+ <combo_box.item label="その他" name="item12"/>
+ </combo_box>
+ <check_box label="Matureコンテンツ" name="MatureCheck" tool_tip=""/>
+ <text name="Snapshot:">
+ スナップショット:
+ </text>
+ <texture_picker label="" left="116" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
+ <text name="landing_point">
+ 着地点: [LANDING]
+ </text>
+ <button label="設定" label_selected="設定" name="Set" tool_tip="訪問者の着地点の設定を行います。この区画内に立って行ってください。"/>
+ <button label="クリア" label_selected="クリア" name="Clear" tool_tip="着地点をクリアしてください。"/>
+ <text name="Teleport Routing: ">
+ テレポート制限:
+ </text>
+ <combo_box name="landing type" tool_tip="Teleport Routing -- select how to handle teleports onto your land.">
+ <combo_box.item label="不可" name="Blocked"/>
+ <combo_box.item label="着地点" name="LandingPoint"/>
+ <combo_box.item label="どこでも" name="Anywhere"/>
+ </combo_box>
+ </panel>
+ <panel label="メディア" name="land_media_panel">
+ <text name="with media:">
+ 種類:
+ </text>
+ <combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/>
+ <text name="at URL:">
+ ホーム URL:
+ </text>
+ <button label="設定..." label_selected="設定..." name="set_media_url"/>
+ <text name="CurrentURL:">
+ 現在の URL:
+ </text>
+ <button label="リセット..." label_selected="リセット..." name="reset_media_url"/>
+ <check_box label="URL を非表示" name="hide_media_url" tool_tip="このオプションをオンにすると、許可なしでこの区画情報にアクセスしているユーザーにはメディア URL が表示されません。 これは HTML タイプには使用できませんのでご注意ください。"/>
+ <text name="Description:">
+ 説明:
+ </text>
+ <line_editor name="url_description" tool_tip="[再生]/[ロード]ボタンの隣に表示されるテキスト"/>
+ <text name="Media texture:">
+ テクスチ
+ャ取替:
+ </text>
+ <texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/>
+ <text name="replace_texture_help" width="290">
+ このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。
+
+テクスチャを変更するにはサムネイルを選択してください。
+ </text>
+ <check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャーのスケーリングや整列が必要になることはありません。"/>
+ <text name="media_size" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。">
+ サイズ:
+ </text>
+ <spinner name="media_size_width" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
+ <spinner name="media_size_height" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
+ <text name="pixels">
+ ピクセル
+ </text>
+ <text name="Options:">
+ オプション:
+ </text>
+ <check_box label="ループ" name="media_loop" tool_tip="メディアをループ再生します。 メディアの再生が終わったら、最初から再生し直します。"/>
+ </panel>
+ <panel label="オーディオ" name="land_audio_panel">
+ <text name="MusicURL:">
+ 音楽 URL:
+ </text>
+ <text name="Sound:">
+ サウンド:
+ </text>
+ <check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定" name="check sound local"/>
+ <text name="Voice settings:">
+ ボイス:
+ </text>
+ <check_box label="ボイスを有効にする" name="parcel_enable_voice_channel"/>
+ <check_box label="ボイスを有効にする(不動産設定)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+ <check_box label="この区画でのボイス使用を制限する" name="parcel_enable_voice_channel_parcel"/>
+ </panel>
+ <panel label="アクセス" name="land_access_panel">
+ <panel.string name="estate_override">
+ 1つ以上のオプションが、不動産レベルで設定されています。
+ </panel.string>
+ <text name="Limit access to this parcel to:">
+ この区画にアクセス
+ </text>
+ <check_box label="パブリック・アクセスを許可" name="public_access"/>
+ <text name="Only Allow">
+ 次の住人のアクセスをブロック:
+ </text>
+ <check_box label="Linden Labに支払い情報を登録していない住人" name="limit_payment" tool_tip="支払い情報未確認の住人を排除する"/>
+ <check_box label="年齢確認を済ませていない成人の住人" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
+ <check_box label="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/>
+ <check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/>
+ <combo_box name="pass_combo">
+ <combo_box.item label="誰でも" name="Anyone"/>
+ <combo_box.item label="グループ" name="Group"/>
+ </combo_box>
+ <spinner label="価格(L$):" name="PriceSpin"/>
+ <spinner label="アクセス時間:" name="HoursSpin"/>
+ <text label="常に許可" name="AllowedText">
+ 許可された住人
+ </text>
+ <name_list name="AccessList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/>
+ <button label="追加..." label_selected="追加..." name="add_allowed"/>
+ <button label="削除" label_selected="削除" name="remove_allowed"/>
+ <text label="禁止" name="BanCheck">
+ 禁止された住人
+ </text>
+ <name_list name="BannedList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/>
+ <button label="追加..." label_selected="追加..." name="add_banned"/>
+ <button label="削除" label_selected="削除" name="remove_banned"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
index 1bc12b839c..a1c30ec572 100644
--- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
@@ -1,183 +1,183 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Animation Preview" title="">
- <floater.string name="failed_to_initialize">
- モーションを初期化できませんでした
- </floater.string>
- <floater.string name="anim_too_long">
- アニメーションファイルの長さは[LENGTH]秒です。
-
-アニメーションの最大の長さは[MAX_LENGTH]秒です。
- </floater.string>
- <floater.string name="failed_file_read">
- アニメーションファイルを読み取れません。
-
-[STATUS]
- </floater.string>
- <floater.string name="E_ST_OK">
- Ok
- </floater.string>
- <floater.string name="E_ST_EOF">
- 不完全なファイル。
- </floater.string>
- <floater.string name="E_ST_NO_CONSTRAINT">
- 制約定義を読みとれません。
- </floater.string>
- <floater.string name="E_ST_NO_FILE">
- BVH ファイルを開けません。
- </floater.string>
- <floater.string name="E_ST_NO_HIER">
- 無効な HIERARCHY ヘッダーです。.
- </floater.string>
- <floater.string name="E_ST_NO_JOINT">
- ROOT または JOINT が見つかりません。
- </floater.string>
- <floater.string name="E_ST_NO_NAME">
- JOINT ネームを取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_OFFSET">
- OFFSET が見つかりません。
- </floater.string>
- <floater.string name="E_ST_NO_CHANNELS">
- CHANNELS が見つかりません。
- </floater.string>
- <floater.string name="E_ST_NO_ROTATION">
- 回転順序を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_AXIS">
- 回転軸を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_MOTION">
- MOTION が見つかりません。
- </floater.string>
- <floater.string name="E_ST_NO_FRAMES">
- フレーム数を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_FRAME_TIME">
- フレームタイムを取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_POS">
- ポジション値を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_ROT">
- 回転値を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_FILE">
- Cannot open translation file.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_HEADER">
- Cannot read translation header.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_NAME">
- Cannot read translation names.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_IGNORE">
- Cannot read translation ignore value.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_RELATIVE">
- Cannot read translation relative value.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_OUTNAME">
- Cannot read translation outname value.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MATRIX">
- Cannot read translation matrix.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MERGECHILD">
- Mergechild 名を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_MERGEPARENT">
- Mergeparent 名を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_PRIORITY">
- プロパティ値を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_LOOP">
- ループ値を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EASEIN">
- Cannot get easeIn values.
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EASEOUT">
- easeOut 値を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_HAND">
- Hand morph 値を取得できません。
- </floater.string>
- <floater.string name="E_ST_NO_XLT_EMOTE">
- エモート名を読みとれません。
- </floater.string>
- <text name="name_label">
- 名前:
- </text>
- <text name="description_label">
- 説明:
- </text>
- <spinner label="優先順位" name="priority" tool_tip="このアニメーションで上書き可能な他のアニメーションを制御します。"/>
- <check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生します。"/>
- <spinner label="イン(%)" label_width="45" left="70" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します。" width="100"/>
- <spinner label="アウト(%)" label_width="60" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します。" width="100"/>
- <text name="hand_label">
- 手の動き
- </text>
- <combo_box label="" name="hand_pose_combo" tool_tip="アニメーションの手の動きをコントロールします。">
- <combo_box.item label="広がる" name="Spread"/>
- <combo_box.item label="リラックス" name="Relaxed"/>
- <combo_box.item label="両方を指す" name="PointBoth"/>
- <combo_box.item label="拳" name="Fist"/>
- <combo_box.item label="リラックス左" name="RelaxedLeft"/>
- <combo_box.item label="左を指す" name="PointLeft"/>
- <combo_box.item label="拳左" name="FistLeft"/>
- <combo_box.item label="リラックス右" name="RelaxedRight"/>
- <combo_box.item label="右を指す" name="PointRight"/>
- <combo_box.item label="拳右" name="FistRight"/>
- <combo_box.item label="敬礼右" name="SaluteRight"/>
- <combo_box.item label="入力する" name="Typing"/>
- <combo_box.item label="ピース・サイン右" name="PeaceRight"/>
- </combo_box>
- <text name="emote_label">
- 表現
- </text>
- <combo_box label="" name="emote_combo" tool_tip="アニメーションの顔を表情をコントロールします。">
- <combo_box.item label="None]" name="[None]"/>
- <combo_box.item label="アーーーーー" name="Aaaaah"/>
- <combo_box.item label="怖れ" name="Afraid"/>
- <combo_box.item label="怒り" name="Angry"/>
- <combo_box.item label="満面の笑み" name="BigSmile"/>
- <combo_box.item label="退屈" name="Bored"/>
- <combo_box.item label="泣く" name="Cry"/>
- <combo_box.item label="侮蔑" name="Disdain"/>
- <combo_box.item label="困惑" name="Embarrassed"/>
- <combo_box.item label="しかめっ面" name="Frown"/>
- <combo_box.item label="キス" name="Kiss"/>
- <combo_box.item label="笑う" name="Laugh"/>
- <combo_box.item label="Plllppt" name="Plllppt"/>
- <combo_box.item label="嫌悪感" name="Repulsed"/>
- <combo_box.item label="悲しい" name="Sad"/>
- <combo_box.item label="肩をすくめる" name="Shrug"/>
- <combo_box.item label="笑み" name="Smile"/>
- <combo_box.item label="驚き" name="Surprise"/>
- <combo_box.item label="ウィンク" name="Wink"/>
- <combo_box.item label="心配" name="Worry"/>
- </combo_box>
- <text name="preview_label">
- 同時進行行動
- </text>
- <combo_box label="" name="preview_base_anim" tool_tip="アバターが普通の行動をするときのアニメーションの動きをテストするためにこれを使います。">
- <combo_box.item label="立つ" name="Standing"/>
- <combo_box.item label="歩く" name="Walking"/>
- <combo_box.item label="座る" name="Sitting"/>
- <combo_box.item label="飛行" name="Flying"/>
- </combo_box>
- <spinner label="フェーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンド・イン時間(秒)"/>
- <spinner label="フェーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンド・アウト時間(秒)"/>
- <button label="" name="play_btn" tool_tip="アニメーションの再生/一時停止"/>
- <button label="" name="stop_btn" tool_tip="アニメーションの再生を停止"/>
- <slider label="" name="playback_slider"/>
- <text name="bad_animation_text">
- アニメーション・ファイルを読み込めません。
-
- Poser 4からエクスポートされたBVHファイルを推奨します。
- </text>
- <button label="取り消し" name="cancel_btn"/>
- <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview" title="">
+ <floater.string name="failed_to_initialize">
+ モーションを初期化できませんでした
+ </floater.string>
+ <floater.string name="anim_too_long">
+ アニメーションファイルの長さは[LENGTH]秒です。
+
+アニメーションの最大の長さは[MAX_LENGTH]秒です。
+ </floater.string>
+ <floater.string name="failed_file_read">
+ アニメーションファイルを読み取れません。
+
+[STATUS]
+ </floater.string>
+ <floater.string name="E_ST_OK">
+ Ok
+ </floater.string>
+ <floater.string name="E_ST_EOF">
+ 不完全なファイル。
+ </floater.string>
+ <floater.string name="E_ST_NO_CONSTRAINT">
+ 制約定義を読みとれません。
+ </floater.string>
+ <floater.string name="E_ST_NO_FILE">
+ BVH ファイルを開けません。
+ </floater.string>
+ <floater.string name="E_ST_NO_HIER">
+ 無効な HIERARCHY ヘッダーです。.
+ </floater.string>
+ <floater.string name="E_ST_NO_JOINT">
+ ROOT または JOINT が見つかりません。
+ </floater.string>
+ <floater.string name="E_ST_NO_NAME">
+ JOINT ネームを取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_OFFSET">
+ OFFSET が見つかりません。
+ </floater.string>
+ <floater.string name="E_ST_NO_CHANNELS">
+ CHANNELS が見つかりません。
+ </floater.string>
+ <floater.string name="E_ST_NO_ROTATION">
+ 回転順序を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_AXIS">
+ 回転軸を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_MOTION">
+ MOTION が見つかりません。
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAMES">
+ フレーム数を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_FRAME_TIME">
+ フレームタイムを取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_POS">
+ ポジション値を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_ROT">
+ 回転値を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_FILE">
+ Cannot open translation file.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HEADER">
+ Cannot read translation header.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_NAME">
+ Cannot read translation names.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_IGNORE">
+ Cannot read translation ignore value.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_RELATIVE">
+ Cannot read translation relative value.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_OUTNAME">
+ Cannot read translation outname value.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MATRIX">
+ Cannot read translation matrix.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGECHILD">
+ Mergechild 名を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_MERGEPARENT">
+ Mergeparent 名を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_PRIORITY">
+ プロパティ値を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_LOOP">
+ ループ値を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEIN">
+ Cannot get easeIn values.
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EASEOUT">
+ easeOut 値を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_HAND">
+ Hand morph 値を取得できません。
+ </floater.string>
+ <floater.string name="E_ST_NO_XLT_EMOTE">
+ エモート名を読みとれません。
+ </floater.string>
+ <text name="name_label">
+ 名前:
+ </text>
+ <text name="description_label">
+ 説明:
+ </text>
+ <spinner label="優先順位" name="priority" tool_tip="このアニメーションで上書き可能な他のアニメーションを制御します。"/>
+ <check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生します。"/>
+ <spinner label="イン(%)" label_width="45" left="70" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します。" width="100"/>
+ <spinner label="アウト(%)" label_width="60" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します。" width="100"/>
+ <text name="hand_label">
+ 手の動き
+ </text>
+ <combo_box label="" name="hand_pose_combo" tool_tip="アニメーションの手の動きをコントロールします。">
+ <combo_box.item label="広がる" name="Spread"/>
+ <combo_box.item label="リラックス" name="Relaxed"/>
+ <combo_box.item label="両方を指す" name="PointBoth"/>
+ <combo_box.item label="拳" name="Fist"/>
+ <combo_box.item label="リラックス左" name="RelaxedLeft"/>
+ <combo_box.item label="左を指す" name="PointLeft"/>
+ <combo_box.item label="拳左" name="FistLeft"/>
+ <combo_box.item label="リラックス右" name="RelaxedRight"/>
+ <combo_box.item label="右を指す" name="PointRight"/>
+ <combo_box.item label="拳右" name="FistRight"/>
+ <combo_box.item label="敬礼右" name="SaluteRight"/>
+ <combo_box.item label="入力する" name="Typing"/>
+ <combo_box.item label="ピース・サイン右" name="PeaceRight"/>
+ </combo_box>
+ <text name="emote_label">
+ 表現
+ </text>
+ <combo_box label="" name="emote_combo" tool_tip="アニメーションの顔を表情をコントロールします。">
+ <combo_box.item label="None]" name="[None]"/>
+ <combo_box.item label="アーーーーー" name="Aaaaah"/>
+ <combo_box.item label="怖れ" name="Afraid"/>
+ <combo_box.item label="怒り" name="Angry"/>
+ <combo_box.item label="満面の笑み" name="BigSmile"/>
+ <combo_box.item label="退屈" name="Bored"/>
+ <combo_box.item label="泣く" name="Cry"/>
+ <combo_box.item label="侮蔑" name="Disdain"/>
+ <combo_box.item label="困惑" name="Embarrassed"/>
+ <combo_box.item label="しかめっ面" name="Frown"/>
+ <combo_box.item label="キス" name="Kiss"/>
+ <combo_box.item label="笑う" name="Laugh"/>
+ <combo_box.item label="Plllppt" name="Plllppt"/>
+ <combo_box.item label="嫌悪感" name="Repulsed"/>
+ <combo_box.item label="悲しい" name="Sad"/>
+ <combo_box.item label="肩をすくめる" name="Shrug"/>
+ <combo_box.item label="笑み" name="Smile"/>
+ <combo_box.item label="驚き" name="Surprise"/>
+ <combo_box.item label="ウィンク" name="Wink"/>
+ <combo_box.item label="心配" name="Worry"/>
+ </combo_box>
+ <text name="preview_label">
+ 同時進行行動
+ </text>
+ <combo_box label="" name="preview_base_anim" tool_tip="アバターが普通の行動をするときのアニメーションの動きをテストするためにこれを使います。">
+ <combo_box.item label="立つ" name="Standing"/>
+ <combo_box.item label="歩く" name="Walking"/>
+ <combo_box.item label="座る" name="Sitting"/>
+ <combo_box.item label="飛行" name="Flying"/>
+ </combo_box>
+ <spinner label="フェーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンド・イン時間(秒)"/>
+ <spinner label="フェーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンド・アウト時間(秒)"/>
+ <button label="" name="play_btn" tool_tip="アニメーションの再生/一時停止"/>
+ <button label="" name="stop_btn" tool_tip="アニメーションの再生を停止"/>
+ <slider label="" name="playback_slider"/>
+ <text name="bad_animation_text">
+ アニメーション・ファイルを読み込めません。
+
+ Poser 4からエクスポートされたBVHファイルを推奨します。
+ </text>
+ <button label="取り消し" name="cancel_btn"/>
+ <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml
index eebc7eb88e..df60f52ee8 100644
--- a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="275" name="avatarpicker" title="住人を選択" width="275">
- <tab_container name="ResidentChooserTabs" width="265">
- <panel label="検索" name="SearchPanel" width="145">
- <text name="InstructSearchResidentName">
- 名前の一部を入力:
- </text>
- <button label="検索" label_selected="検索" name="Find"/>
- </panel>
- <panel label="コーリングカード" name="CallingCardsPanel" width="145">
- <text name="InstructSelectCallingCard">
- コーリングカードを選択:
- </text>
- </panel>
- <panel label="自分の近く" name="NearMePanel" width="145">
- <text name="InstructSelectResident">
- 近くの人を選択:
- </text>
- <button label="リスト更新" label_selected="リスト更新" name="Refresh"/>
- <slider label="範囲" name="near_me_range"/>
- <text name="meters" width="50">
- メートル
- </text>
- </panel>
- </tab_container>
- <button label="OK" label_selected="OK" name="Select"/>
- <button label="取り消し" label_selected="取り消し" name="Cancel"/>
- <string name="not_found">
- 「[TEXT]」は見つかりませんでした
- </string>
- <string name="no_one_near">
- 近くに誰もいません
- </string>
- <string name="no_results">
- 検索結果:ゼロ
- </string>
- <string name="searching">
- 検索中...
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater min_width="275" name="avatarpicker" title="住人を選択" width="275">
+ <tab_container name="ResidentChooserTabs" width="265">
+ <panel label="検索" name="SearchPanel" width="145">
+ <text name="InstructSearchResidentName">
+ 名前の一部を入力:
+ </text>
+ <button label="検索" label_selected="検索" name="Find"/>
+ </panel>
+ <panel label="コーリングカード" name="CallingCardsPanel" width="145">
+ <text name="InstructSelectCallingCard">
+ コーリングカードを選択:
+ </text>
+ </panel>
+ <panel label="自分の近く" name="NearMePanel" width="145">
+ <text name="InstructSelectResident">
+ 近くの人を選択:
+ </text>
+ <button label="リスト更新" label_selected="リスト更新" name="Refresh"/>
+ <slider label="範囲" name="near_me_range"/>
+ <text name="meters" width="50">
+ メートル
+ </text>
+ </panel>
+ </tab_container>
+ <button label="OK" label_selected="OK" name="Select"/>
+ <button label="取り消し" label_selected="取り消し" name="Cancel"/>
+ <string name="not_found">
+ 「[TEXT]」は見つかりませんでした
+ </string>
+ <string name="no_one_near">
+ 近くに誰もいません
+ </string>
+ <string name="no_results">
+ 検索結果:ゼロ
+ </string>
+ <string name="searching">
+ 検索中...
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_beacons.xml b/indra/newview/skins/default/xui/ja/floater_beacons.xml
index 4e89e11d0d..d2f4798949 100644
--- a/indra/newview/skins/default/xui/ja/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/ja/floater_beacons.xml
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="ビーコン(標識)">
- <panel name="beacons_panel">
- <text name="label_show">
- 表示:
- </text>
- <check_box label="ビーコン(標識)" name="beacons"/>
- <check_box label="ハイライト" name="highlights"/>
- <text name="beacon_width_label" tool_tip="ビーコン(標識)の幅">
- 幅:
- </text>
- <text name="label_objects">
- 対象オブジェクト:
- </text>
- <check_box label="物理的" name="physical"/>
- <check_box label="スクリプト" name="scripted"/>
- <check_box label="触れる" name="touch_only"/>
- <check_box label="音源" name="sounds"/>
- <check_box label="パーティクル源" name="particles"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="ビーコン(標識)">
+ <panel name="beacons_panel">
+ <text name="label_show">
+ 表示:
+ </text>
+ <check_box label="ビーコン(標識)" name="beacons"/>
+ <check_box label="ハイライト" name="highlights"/>
+ <text name="beacon_width_label" tool_tip="ビーコン(標識)の幅">
+ 幅:
+ </text>
+ <text name="label_objects">
+ 対象オブジェクト:
+ </text>
+ <check_box label="物理的" name="physical"/>
+ <check_box label="スクリプト" name="scripted"/>
+ <check_box label="触れる" name="touch_only"/>
+ <check_box label="音源" name="sounds"/>
+ <check_box label="パーティクル源" name="particles"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_build_options.xml b/indra/newview/skins/default/xui/ja/floater_build_options.xml
index 8b5e88fa7f..02bc0dd5f7 100644
--- a/indra/newview/skins/default/xui/ja/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/ja/floater_build_options.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="グリッドのオプション">
- <spinner label="グリッドユニット(メートル)" name="GridResolution"/>
- <spinner label="グリッド範囲(メートル)" name="GridDrawSize"/>
- <check_box label="サブユニットにスナップ" name="GridSubUnit"/>
- <check_box label="横断面を表示" name="GridCrossSection"/>
- <text name="grid_opacity_label" tool_tip="グリッドの透明度">
- 透明度:
- </text>
- <slider label="グリッドの不透明度" name="GridOpacity"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="グリッドのオプション">
+ <spinner label="グリッドユニット(メートル)" name="GridResolution"/>
+ <spinner label="グリッド範囲(メートル)" name="GridDrawSize"/>
+ <check_box label="サブユニットにスナップ" name="GridSubUnit"/>
+ <check_box label="横断面を表示" name="GridCrossSection"/>
+ <text name="grid_opacity_label" tool_tip="グリッドの透明度">
+ 透明度:
+ </text>
+ <slider label="グリッドの不透明度" name="GridOpacity"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
index b86a3647fe..9a3d432228 100644
--- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
@@ -1,53 +1,53 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="コンテンツ権限を編集">
- <floater.string name="nothing_to_modify_text">
- 選択した中に編集できないコンテンツが含まれています
- </floater.string>
- <floater.string name="status_text">
- [NAME]に権限を設定中です。
- </floater.string>
- <floater.string name="start_text">
- 権限変更リクエストをしています
- </floater.string>
- <floater.string name="done_text">
- 権限変更リクエストが完了しました
- </floater.string>
- <check_box label="アニメーション" name="check_animation"/>
- <icon name="icon_animation" tool_tip="アニメーション"/>
- <check_box label="身体部位" name="check_bodypart"/>
- <icon name="icon_bodypart" tool_tip="身体部位"/>
- <check_box label="服" name="check_clothing"/>
- <icon name="icon_clothing" tool_tip="衣類"/>
- <check_box label="ジェスチャー" name="check_gesture"/>
- <icon name="icon_gesture" tool_tip="ジェスチャー"/>
- <check_box label="ノートカード" name="check_notecard"/>
- <icon name="icon_notecard" tool_tip="ノートカード"/>
- <check_box label="オブジェクト" name="check_object"/>
- <icon name="icon_object" tool_tip="オブジェクト"/>
- <check_box label="スクリプト" name="check_script"/>
- <icon name="icon_script" tool_tip="スクリプト"/>
- <check_box label="サウンド" name="check_sound"/>
- <icon name="icon_sound" tool_tip="サウンド"/>
- <check_box label="テクスチャー" name="check_texture"/>
- <button label="√ すべて" label_selected="全て" name="check_all"/>
- <button label="クリア" label_selected="なし" name="check_none"/>
- <text name="newperms">
- 新しいコンテンツ権限
- </text>
- <text name="GroupLabel">
- グループ:
- </text>
- <check_box label="共有" name="share_with_group"/>
- <text name="AnyoneLabel">
- すべての人:
- </text>
- <check_box label="コピー" name="everyone_copy"/>
- <text name="NextOwnerLabel">
- 次の所有者:
- </text>
- <check_box label="修正" name="next_owner_modify"/>
- <check_box label="コピー" name="next_owner_copy"/>
- <check_box initial_value="true" label="再販/プレゼント" name="next_owner_transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
- <button label="OK" name="apply"/>
- <button label="キャンセル" name="close"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="コンテンツ権限を編集">
+ <floater.string name="nothing_to_modify_text">
+ 選択した中に編集できないコンテンツが含まれています
+ </floater.string>
+ <floater.string name="status_text">
+ [NAME]に権限を設定中です。
+ </floater.string>
+ <floater.string name="start_text">
+ 権限変更リクエストをしています
+ </floater.string>
+ <floater.string name="done_text">
+ 権限変更リクエストが完了しました
+ </floater.string>
+ <check_box label="アニメーション" name="check_animation"/>
+ <icon name="icon_animation" tool_tip="アニメーション"/>
+ <check_box label="身体部位" name="check_bodypart"/>
+ <icon name="icon_bodypart" tool_tip="身体部位"/>
+ <check_box label="服" name="check_clothing"/>
+ <icon name="icon_clothing" tool_tip="衣類"/>
+ <check_box label="ジェスチャー" name="check_gesture"/>
+ <icon name="icon_gesture" tool_tip="ジェスチャー"/>
+ <check_box label="ノートカード" name="check_notecard"/>
+ <icon name="icon_notecard" tool_tip="ノートカード"/>
+ <check_box label="オブジェクト" name="check_object"/>
+ <icon name="icon_object" tool_tip="オブジェクト"/>
+ <check_box label="スクリプト" name="check_script"/>
+ <icon name="icon_script" tool_tip="スクリプト"/>
+ <check_box label="サウンド" name="check_sound"/>
+ <icon name="icon_sound" tool_tip="サウンド"/>
+ <check_box label="テクスチャー" name="check_texture"/>
+ <button label="√ すべて" label_selected="全て" name="check_all"/>
+ <button label="クリア" label_selected="なし" name="check_none"/>
+ <text name="newperms">
+ 新しいコンテンツ権限
+ </text>
+ <text name="GroupLabel">
+ グループ:
+ </text>
+ <check_box label="共有" name="share_with_group"/>
+ <text name="AnyoneLabel">
+ すべての人:
+ </text>
+ <check_box label="コピー" name="everyone_copy"/>
+ <text name="NextOwnerLabel">
+ 次の所有者:
+ </text>
+ <check_box label="修正" name="next_owner_modify"/>
+ <check_box label="コピー" name="next_owner_copy"/>
+ <check_box initial_value="true" label="再販/プレゼント" name="next_owner_transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
+ <button label="OK" name="apply"/>
+ <button label="キャンセル" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_object.xml b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
index fc0418f808..f807e91573 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
@@ -1,26 +1,26 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="オブジェクトのコピーを購入">
- <text name="contents_text">
- 内容:
- </text>
- <text name="buy_text">
- [NAME]からL$[AMOUNT]で購入しますか?
- </text>
- <button label="取消" label_selected="取消" name="cancel_btn"/>
- <button label="購入" label_selected="購入" name="buy_btn"/>
- <text name="title_buy_text">
- 購入
- </text>
- <string name="title_buy_copy_text">
- 次のものを買う
- </string>
- <text name="no_copy_text">
- (コピーなし)
- </text>
- <text name="no_modify_text">
- (修正なし)
- </text>
- <text name="no_transfer_text">
- (転送なし)
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="オブジェクトのコピーを購入">
+ <text name="contents_text">
+ 内容:
+ </text>
+ <text name="buy_text">
+ [NAME]からL$[AMOUNT]で購入しますか?
+ </text>
+ <button label="取消" label_selected="取消" name="cancel_btn"/>
+ <button label="購入" label_selected="購入" name="buy_btn"/>
+ <text name="title_buy_text">
+ 購入
+ </text>
+ <string name="title_buy_copy_text">
+ 次のものを買う
+ </string>
+ <text name="no_copy_text">
+ (コピーなし)
+ </text>
+ <text name="no_modify_text">
+ (修正なし)
+ </text>
+ <text name="no_transfer_text">
+ (転送なし)
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
index 06e42a29d9..7e32e5b3c5 100644
--- a/indra/newview/skins/default/xui/ja/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ja/floater_camera.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
- <floater.string name="rotate_tooltip">
- フォーカスを中心にカメラを回転
- </floater.string>
- <floater.string name="zoom_tooltip">
- フォーカスに向けてカメラをズーム
- </floater.string>
- <floater.string name="move_tooltip">
- カメラを上下左右に移動
- </floater.string>
- <panel name="controls">
- <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に移動"/>
- <joystick_zoom name="zoom" tool_tip="向いてる方法にカメラをズーム"/>
- <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
- </panel>
- <panel name="buttons">
- <button label="" name="orbit_btn" tool_tip="カメラを旋回"/>
- <button label="" name="pan_btn" tool_tip="カメラを水平・垂直移動"/>
- <button label="" name="avatarview_btn" tool_tip="アバター視点"/>
- <button label="" name="freecamera_btn" tool_tip="オブジェクトを見る"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater">
+ <floater.string name="rotate_tooltip">
+ フォーカスを中心にカメラを回転
+ </floater.string>
+ <floater.string name="zoom_tooltip">
+ フォーカスに向けてカメラをズーム
+ </floater.string>
+ <floater.string name="move_tooltip">
+ カメラを上下左右に移動
+ </floater.string>
+ <panel name="controls">
+ <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に移動"/>
+ <joystick_zoom name="zoom" tool_tip="向いてる方法にカメラをズーム"/>
+ <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
+ </panel>
+ <panel name="buttons">
+ <button label="" name="orbit_btn" tool_tip="カメラを旋回"/>
+ <button label="" name="pan_btn" tool_tip="カメラを水平・垂直移動"/>
+ <button label="" name="avatarview_btn" tool_tip="アバター視点"/>
+ <button label="" name="freecamera_btn" tool_tip="オブジェクトを見る"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
index cd871f7214..d041f44e08 100644
--- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
@@ -1,31 +1,31 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="カラー・ピッカー">
- <text name="r_val_text">
- 赤:
- </text>
- <text name="g_val_text">
- 緑:
- </text>
- <text name="b_val_text">
- 青:
- </text>
- <text name="h_val_text">
- 色相:
- </text>
- <text name="s_val_text">
- 色調:
- </text>
- <text name="l_val_text">
- 輝度:
- </text>
- <check_box label="今すぐ適用" name="apply_immediate"/>
- <button label="" label_selected="" name="color_pipette"/>
- <button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
- <button label="OK" label_selected="選択" name="select_btn"/>
- <text name="Current color:">
- 現在の色:
- </text>
- <text name="(Drag below to save.)">
- ドラッグして保存
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="カラー・ピッカー">
+ <text name="r_val_text">
+ 赤:
+ </text>
+ <text name="g_val_text">
+ 緑:
+ </text>
+ <text name="b_val_text">
+ 青:
+ </text>
+ <text name="h_val_text">
+ 色相:
+ </text>
+ <text name="s_val_text">
+ 色調:
+ </text>
+ <text name="l_val_text">
+ 輝度:
+ </text>
+ <check_box label="今すぐ適用" name="apply_immediate"/>
+ <button label="" label_selected="" name="color_pipette"/>
+ <button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
+ <button label="OK" label_selected="選択" name="select_btn"/>
+ <text name="Current color:">
+ 現在の色:
+ </text>
+ <text name="(Drag below to save.)">
+ ドラッグして保存
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
index e21b06988c..25de45c094 100644
--- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
@@ -1,97 +1,97 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="godtools floater" title="ゴッド・ツール">
- <tab_container name="GodTools Tabs">
- <panel label="グリッド" name="grid">
- <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users"/>
- <button label="この地域の地図の表示キャッシュを消去" label_selected="この地域の地図の表示キャッシュを消去" name="Flush This Region&apos;s Map Visibility Caches"/>
- </panel>
- <panel label="地域" name="region">
- <text name="Sim Name:">
- シム名:
- </text>
- <check_box label="準備" name="check prelude" tool_tip="この設定により、この地域の準備をします。"/>
- <check_box label="太陽固定" name="check fixed sun" tool_tip="太陽位置を固定([地域/不動産]>[地形]の場合と同様)"/>
- <check_box label="テレポートのホームをリセット" name="check reset home" tool_tip="住人がテレポートで去ったとき、彼らのホームを目的地にリセットする。"/>
- <check_box label="可視" name="check visible" tool_tip="この設定により、この地域をゴッド・モード以外でも可視にします。"/>
- <check_box label="ダメージ" name="check damage" tool_tip="この設定により、この地域内でダメージを有効化します。"/>
- <check_box label="トラフィック・トラッキングをブロック" name="block dwell" tool_tip="この設定により、この地域内のトラフィック計算をオフにします。"/>
- <check_box label="土地整備をブロック" name="block terraform" tool_tip="この設定により、この地域内での土地整備を禁止"/>
- <check_box label="サンドボックス" name="is sandbox" tool_tip="これがサンドボックス地域でも切り替え"/>
- <button label="地形を構築する" label_selected="地形を構築する" name="Bake Terrain" tool_tip="現在の地形をデフォルトとして保存します。"/>
- <button label="地形を元に戻す" label_selected="地形を元に戻す" name="Revert Terrain" tool_tip="現在の地形をデフォルトに置換します。"/>
- <button label="地形を交換" label_selected="地形を交換" name="Swap Terrain" tool_tip="現在の地形をデフォルトと入れ替えます。"/>
- <text name="estate id">
- 不動産ID:
- </text>
- <text name="parent id">
- 親ID:
- </text>
- <line_editor name="parentestate" tool_tip="これは、この地域の親不動産です。"/>
- <text name="Grid Pos: ">
- グリッド位置:
- </text>
- <line_editor name="gridposx" tool_tip="これは、この地域のグリッドxの位置です。"/>
- <line_editor name="gridposy" tool_tip="これは、この地域のグリッドyの位置です。"/>
- <text name="Redirect to Grid: ">
- グリッドにリダイレクト:
- </text>
- <text name="billable factor text">
- 請求率:
- </text>
- <text name="land cost text">
- 平方メートル当たりL$:
- </text>
- <button label="更新" label_selected="更新" name="Refresh" tool_tip="上記の情報を更新するには、ここをクリックします。"/>
- <button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/>
- <button label="地域を選択" label_selected="地域を選択" name="Select Region" tool_tip="土地ツールで地域全体を選択してください。"/>
- <button label="ただちに自動保存する" label_selected="ただちに自動保存する" name="Autosave now" tool_tip="Gzip状態を自動保存ディレクトリに保存します。"/>
- </panel>
- <panel label="オブジェクト" name="objects">
- <panel.string name="no_target">
- (ターゲットなし)
- </panel.string>
- <text name="Sim Name:">
- シム名:
- </text>
- <text name="region name">
- ウェルシュ
- </text>
- <check_box label="スクリプトを無効化" name="disable scripts" tool_tip="この設定により、この地域内のスクリプトをすべて無効化"/>
- <check_box label="衝突を無効化" name="disable collisions" tool_tip="この設定により、この地域内の非エージェント衝突を無効化"/>
- <check_box label="物理作用を無効化" name="disable physics" tool_tip="この設定により、この地域内の物理的作用をすべて無効化"/>
- <button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/>
- <button label="対象の設定" label_selected="対象の設定" name="Set Target" tool_tip="オブジェクト削除の対象となるアバターを設定してください。"/>
- <text name="target_avatar_name">
- (対象なし)
- </text>
- <button label="他の土地における対象のスクリプト・オブジェクトを削除" label_selected="他の土地における対象のスクリプト・オブジェクトを削除" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="この地域において対象が所有していないスクリプト・オブジェクトをすべて削除します。 (コピー禁止)オブジェクトは返却されます。"/>
- <button label="「すべての」土地における対象のスクリプト・オブジェクトを削除" label_selected="「すべての」土地における対象のスクリプト・オブジェクトを削除" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="この地域において対象が所有しているスクリプト・オブジェクトをすべて削除します。 (コピー禁止)オブジェクトは返却されます。"/>
- <button label="対象のオブジェクトを「すべて」削除" label_selected="対象のオブジェクトを「すべて」削除" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="この地域において対象が所有しているオブジェクトをすべて削除します。 (コピー禁止)オブジェクトは返却されます。"/>
- <button label="トップ・コライダーを取得" label_selected="トップ・コライダーを取得" name="Get Top Colliders" tool_tip="最も段階の狭いコールバックが発生したオブジェクトのリストを取得します。"/>
- <button label="トップ・スクリプトを取得" label_selected="トップ・スクリプトを取得" name="Get Top Scripts" tool_tip="スクリプトの起動に最も時間を費やしているオブジェクトのリストを取得します。"/>
- <button label="スクリプト・ダイジェスト" label_selected="スクリプト・ダイジェスト" name="Scripts digest" tool_tip="すべてのスクリプトとそれらの使用回数のリストを取得します。"/>
- </panel>
- <panel label="要求" name="request">
- <text name="Destination:">
- 目的地:
- </text>
- <combo_box name="destination">
- <combo_box.item label="選択" name="item1"/>
- <combo_box.item label="エージェント地域" name="item2"/>
- </combo_box>
- <text name="Request:">
- 要求:
- </text>
- <combo_box name="request">
- <combo_box.item label="コライダー<ステップ>" name="item1"/>
- <combo_box.item label="スクリプト<回数>、<オプション・パターン>" name="item2"/>
- <combo_box.item label="オブジェクト<パターン>" name="item3"/>
- <combo_box.item label="rez <asset_id>" name="item4"/>
- </combo_box>
- <text name="Parameter:">
- パラメーター:
- </text>
- <button label="リクエストする" label_selected="リクエストする" name="Make Request"/>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="ゴッド・ツール">
+ <tab_container name="GodTools Tabs">
+ <panel label="グリッド" name="grid">
+ <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users"/>
+ <button label="この地域の地図の表示キャッシュを消去" label_selected="この地域の地図の表示キャッシュを消去" name="Flush This Region&apos;s Map Visibility Caches"/>
+ </panel>
+ <panel label="地域" name="region">
+ <text name="Sim Name:">
+ シム名:
+ </text>
+ <check_box label="準備" name="check prelude" tool_tip="この設定により、この地域の準備をします。"/>
+ <check_box label="太陽固定" name="check fixed sun" tool_tip="太陽位置を固定([地域/不動産]>[地形]の場合と同様)"/>
+ <check_box label="テレポートのホームをリセット" name="check reset home" tool_tip="住人がテレポートで去ったとき、彼らのホームを目的地にリセットする。"/>
+ <check_box label="可視" name="check visible" tool_tip="この設定により、この地域をゴッド・モード以外でも可視にします。"/>
+ <check_box label="ダメージ" name="check damage" tool_tip="この設定により、この地域内でダメージを有効化します。"/>
+ <check_box label="トラフィック・トラッキングをブロック" name="block dwell" tool_tip="この設定により、この地域内のトラフィック計算をオフにします。"/>
+ <check_box label="土地整備をブロック" name="block terraform" tool_tip="この設定により、この地域内での土地整備を禁止"/>
+ <check_box label="サンドボックス" name="is sandbox" tool_tip="これがサンドボックス地域でも切り替え"/>
+ <button label="地形を構築する" label_selected="地形を構築する" name="Bake Terrain" tool_tip="現在の地形をデフォルトとして保存します。"/>
+ <button label="地形を元に戻す" label_selected="地形を元に戻す" name="Revert Terrain" tool_tip="現在の地形をデフォルトに置換します。"/>
+ <button label="地形を交換" label_selected="地形を交換" name="Swap Terrain" tool_tip="現在の地形をデフォルトと入れ替えます。"/>
+ <text name="estate id">
+ 不動産ID:
+ </text>
+ <text name="parent id">
+ 親ID:
+ </text>
+ <line_editor name="parentestate" tool_tip="これは、この地域の親不動産です。"/>
+ <text name="Grid Pos: ">
+ グリッド位置:
+ </text>
+ <line_editor name="gridposx" tool_tip="これは、この地域のグリッドxの位置です。"/>
+ <line_editor name="gridposy" tool_tip="これは、この地域のグリッドyの位置です。"/>
+ <text name="Redirect to Grid: ">
+ グリッドにリダイレクト:
+ </text>
+ <text name="billable factor text">
+ 請求率:
+ </text>
+ <text name="land cost text">
+ 平方メートル当たりL$:
+ </text>
+ <button label="更新" label_selected="更新" name="Refresh" tool_tip="上記の情報を更新するには、ここをクリックします。"/>
+ <button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/>
+ <button label="地域を選択" label_selected="地域を選択" name="Select Region" tool_tip="土地ツールで地域全体を選択してください。"/>
+ <button label="ただちに自動保存する" label_selected="ただちに自動保存する" name="Autosave now" tool_tip="Gzip状態を自動保存ディレクトリに保存します。"/>
+ </panel>
+ <panel label="オブジェクト" name="objects">
+ <panel.string name="no_target">
+ (ターゲットなし)
+ </panel.string>
+ <text name="Sim Name:">
+ シム名:
+ </text>
+ <text name="region name">
+ ウェルシュ
+ </text>
+ <check_box label="スクリプトを無効化" name="disable scripts" tool_tip="この設定により、この地域内のスクリプトをすべて無効化"/>
+ <check_box label="衝突を無効化" name="disable collisions" tool_tip="この設定により、この地域内の非エージェント衝突を無効化"/>
+ <check_box label="物理作用を無効化" name="disable physics" tool_tip="この設定により、この地域内の物理的作用をすべて無効化"/>
+ <button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/>
+ <button label="対象の設定" label_selected="対象の設定" name="Set Target" tool_tip="オブジェクト削除の対象となるアバターを設定してください。"/>
+ <text name="target_avatar_name">
+ (対象なし)
+ </text>
+ <button label="他の土地における対象のスクリプト・オブジェクトを削除" label_selected="他の土地における対象のスクリプト・オブジェクトを削除" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="この地域において対象が所有していないスクリプト・オブジェクトをすべて削除します。 (コピー禁止)オブジェクトは返却されます。"/>
+ <button label="「すべての」土地における対象のスクリプト・オブジェクトを削除" label_selected="「すべての」土地における対象のスクリプト・オブジェクトを削除" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="この地域において対象が所有しているスクリプト・オブジェクトをすべて削除します。 (コピー禁止)オブジェクトは返却されます。"/>
+ <button label="対象のオブジェクトを「すべて」削除" label_selected="対象のオブジェクトを「すべて」削除" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="この地域において対象が所有しているオブジェクトをすべて削除します。 (コピー禁止)オブジェクトは返却されます。"/>
+ <button label="トップ・コライダーを取得" label_selected="トップ・コライダーを取得" name="Get Top Colliders" tool_tip="最も段階の狭いコールバックが発生したオブジェクトのリストを取得します。"/>
+ <button label="トップ・スクリプトを取得" label_selected="トップ・スクリプトを取得" name="Get Top Scripts" tool_tip="スクリプトの起動に最も時間を費やしているオブジェクトのリストを取得します。"/>
+ <button label="スクリプト・ダイジェスト" label_selected="スクリプト・ダイジェスト" name="Scripts digest" tool_tip="すべてのスクリプトとそれらの使用回数のリストを取得します。"/>
+ </panel>
+ <panel label="要求" name="request">
+ <text name="Destination:">
+ 目的地:
+ </text>
+ <combo_box name="destination">
+ <combo_box.item label="選択" name="item1"/>
+ <combo_box.item label="エージェント地域" name="item2"/>
+ </combo_box>
+ <text name="Request:">
+ 要求:
+ </text>
+ <combo_box name="request">
+ <combo_box.item label="コライダー<ステップ>" name="item1"/>
+ <combo_box.item label="スクリプト<回数>、<オプション・パターン>" name="item2"/>
+ <combo_box.item label="オブジェクト<パターン>" name="item3"/>
+ <combo_box.item label="rez <asset_id>" name="item4"/>
+ </combo_box>
+ <text name="Parameter:">
+ パラメーター:
+ </text>
+ <button label="リクエストする" label_selected="リクエストする" name="Make Request"/>
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
index 309a35a2a2..a8cc4827c5 100644
--- a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="ハードウェア設定">
- <text name="Filtering:">
- フィルタリング:
- </text>
- <check_box label="異方的フィルタリング(有効にすると速度が低下します)" name="ani"/>
- <text name="Antialiasing:">
- アンチエイリアシング:
- </text>
- <combo_box label="アンチエイリアシング" name="fsaa">
- <combo_box.item label="無効" name="FSAADisabled"/>
- <combo_box.item label="2x" name="2x"/>
- <combo_box.item label="4x" name="4x"/>
- <combo_box.item label="8x" name="8x"/>
- <combo_box.item label="16x" name="16x"/>
- </combo_box>
- <spinner label="ガンマ:" name="gamma"/>
- <text name="(brightness, lower is brighter)">
- (0 でデフォルト、低いほど明るい)
- </text>
- <text name="Enable VBO:">
- VBO を有効化:
- </text>
- <check_box label="OpenGL Vertex Buffer Objectsを有効化" name="vbo" tool_tip="最新のハードウェアでこの設定を有効にすると、パフォーマンスが向上します。 しかし、旧型のハードウェアでは VBO の実装が貧弱な場合が多く、この設定を有効にすることでクラッシュにつながるおそれがあります。"/>
- <slider label="テクスチャメモリ(MB):" name="GrapicsCardTextureMemory" tool_tip="テクスチャーに割り当てるメモリの合計。 ビデオ・カード・メモリをデフォルトにします。 この数値を減らすと、パフォーマンスが改善されますが、テクスチャーがぼやけた感じになる場合があります。"/>
- <spinner label="フォグの距離比率:" name="fog"/>
- <button label="OK" label_selected="OK" name="OK"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="ハードウェア設定">
+ <text name="Filtering:">
+ フィルタリング:
+ </text>
+ <check_box label="異方的フィルタリング(有効にすると速度が低下します)" name="ani"/>
+ <text name="Antialiasing:">
+ アンチエイリアシング:
+ </text>
+ <combo_box label="アンチエイリアシング" name="fsaa">
+ <combo_box.item label="無効" name="FSAADisabled"/>
+ <combo_box.item label="2x" name="2x"/>
+ <combo_box.item label="4x" name="4x"/>
+ <combo_box.item label="8x" name="8x"/>
+ <combo_box.item label="16x" name="16x"/>
+ </combo_box>
+ <spinner label="ガンマ:" name="gamma"/>
+ <text name="(brightness, lower is brighter)">
+ (0 でデフォルト、低いほど明るい)
+ </text>
+ <text name="Enable VBO:">
+ VBO を有効化:
+ </text>
+ <check_box label="OpenGL Vertex Buffer Objectsを有効化" name="vbo" tool_tip="最新のハードウェアでこの設定を有効にすると、パフォーマンスが向上します。 しかし、旧型のハードウェアでは VBO の実装が貧弱な場合が多く、この設定を有効にすることでクラッシュにつながるおそれがあります。"/>
+ <slider label="テクスチャメモリ(MB):" name="GrapicsCardTextureMemory" tool_tip="テクスチャーに割り当てるメモリの合計。 ビデオ・カード・メモリをデフォルトにします。 この数値を減らすと、パフォーマンスが改善されますが、テクスチャーがぼやけた感じになる場合があります。"/>
+ <spinner label="フォグの距離比率:" name="fog"/>
+ <button label="OK" label_selected="OK" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_image_preview.xml b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
index 42a4a2fd7f..57ed139e54 100644
--- a/indra/newview/skins/default/xui/ja/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Image Preview" title="">
- <text name="name_label">
- 名前:
- </text>
- <text name="description_label">
- 説明:
- </text>
- <text name="preview_label">
- イメージのプレビュー:
- </text>
- <combo_box label="服の種類" name="clothing_type_combo">
- <combo_box.item label="画像" name="Image"/>
- <combo_box.item label="髪" name="Hair"/>
- <combo_box.item label="女性の頭" name="FemaleHead"/>
- <combo_box.item label="女性の上半身" name="FemaleUpperBody"/>
- <combo_box.item label="女性の下半身" name="FemaleLowerBody"/>
- <combo_box.item label="男性の頭" name="MaleHead"/>
- <combo_box.item label="男性の上半身" name="MaleUpperBody"/>
- <combo_box.item label="男性の下半身" name="MaleLowerBody"/>
- <combo_box.item label="スカート" name="Skirt"/>
- <combo_box.item label="スカルプトプリム" name="SculptedPrim"/>
- </combo_box>
- <text name="bad_image_text">
- イメージを読み取れません。
-
-24bitTarga(.tga)でイメージを保存してください。
- </text>
- <check_box label="ロスのない圧縮を使用" name="lossless_check"/>
- <button label="取り消し" name="cancel_btn"/>
- <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview" title="">
+ <text name="name_label">
+ 名前:
+ </text>
+ <text name="description_label">
+ 説明:
+ </text>
+ <text name="preview_label">
+ イメージのプレビュー:
+ </text>
+ <combo_box label="服の種類" name="clothing_type_combo">
+ <combo_box.item label="画像" name="Image"/>
+ <combo_box.item label="髪" name="Hair"/>
+ <combo_box.item label="女性の頭" name="FemaleHead"/>
+ <combo_box.item label="女性の上半身" name="FemaleUpperBody"/>
+ <combo_box.item label="女性の下半身" name="FemaleLowerBody"/>
+ <combo_box.item label="男性の頭" name="MaleHead"/>
+ <combo_box.item label="男性の上半身" name="MaleUpperBody"/>
+ <combo_box.item label="男性の下半身" name="MaleLowerBody"/>
+ <combo_box.item label="スカート" name="Skirt"/>
+ <combo_box.item label="スカルプトプリム" name="SculptedPrim"/>
+ </combo_box>
+ <text name="bad_image_text">
+ イメージを読み取れません。
+
+24bitTarga(.tga)でイメージを保存してください。
+ </text>
+ <check_box label="ロスのない圧縮を使用" name="lossless_check"/>
+ <button label="取り消し" name="cancel_btn"/>
+ <button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+</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 bc34878fde..a3fddc7b8d 100644
--- 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,67 @@
-<?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>
- <text name="LabelItemNameTitle">
- 名前:
- </text>
- <text name="LabelItemDescTitle">
- 説明:
- </text>
- <text name="LabelCreatorTitle">
- クリエーター
- </text>
- <text name="LabelCreatorName">
- Nicole Linden
- </text>
- <button label="情報" label_selected="" name="BtnCreator"/>
- <text name="LabelOwnerTitle">
- オーナー:
- </text>
- <text name="LabelOwnerName">
- Thrax Linden
- </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>
- <check_box label="編集" name="CheckOwnerModify"/>
- <check_box label="コピー" name="CheckOwnerCopy"/>
- <check_box label="再販・プレゼント" name="CheckOwnerTransfer"/>
- <text name="AnyoneLabel">
- 全員:
- </text>
- <check_box label="コピー" name="CheckEveryoneCopy"/>
- <text name="GroupLabel">
- グループ:
- </text>
- <check_box label="共有" name="CheckShareWithGroup"/>
- <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.item label="コピー" name="Copy"/>
- <combo_box.item label="オリジナル" name="Original"/>
- </combo_box>
- <spinner label="価格: L$" name="Edit Cost"/>
-</floater>
+<?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>
+ <text name="LabelItemNameTitle">
+ 名前:
+ </text>
+ <text name="LabelItemDescTitle">
+ 説明:
+ </text>
+ <text name="LabelCreatorTitle">
+ クリエーター
+ </text>
+ <text name="LabelCreatorName">
+ Nicole Linden
+ </text>
+ <button label="情報" label_selected="" name="BtnCreator"/>
+ <text name="LabelOwnerTitle">
+ オーナー:
+ </text>
+ <text name="LabelOwnerName">
+ Thrax Linden
+ </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>
+ <check_box label="編集" name="CheckOwnerModify"/>
+ <check_box label="コピー" name="CheckOwnerCopy"/>
+ <check_box label="再販・プレゼント" name="CheckOwnerTransfer"/>
+ <text name="AnyoneLabel">
+ 全員:
+ </text>
+ <check_box label="コピー" name="CheckEveryoneCopy"/>
+ <text name="GroupLabel">
+ グループ:
+ </text>
+ <check_box label="共有" name="CheckShareWithGroup"/>
+ <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.item label="コピー" name="Copy"/>
+ <combo_box.item label="オリジナル" name="Original"/>
+ </combo_box>
+ <spinner label="価格: L$" name="Edit Cost"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
index 49a42a7165..3cff79430d 100644
--- a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="自分の土地">
- <scroll_list name="parcel list">
- <column label="区画" name="name"/>
- <column label="地域(リージョン)" name="location"/>
- <column label="種類" name="type"/>
- <column label="面積" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポート"/>
- <button label="地図" label_selected="地図" name="Show on Map" tool_tip="この土地を世界地図に表示します。"/>
- <text name="contrib_label">
- あなたのグループへの貢献:
- </text>
- <scroll_list name="grant list">
- <column label="グループ名" name="group"/>
- <column label="面積" name="area"/>
- </scroll_list>
- <text name="allowed_label">
- 現在の支払いプランでの許可された保有地:
- </text>
- <text name="allowed_text">
- [AREA]平方メートル
- </text>
- <text name="current_label">
- 現在の保有地:
- </text>
- <text name="current_text">
- [AREA]平方メートル
- </text>
- <text name="available_label">
- 土地購入可:
- </text>
- <text name="available_text">
- [AREA]平方メートル
- </text>
- <string name="area_string">
- [AREA]平方メートル
- </string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="自分の土地">
+ <scroll_list name="parcel list">
+ <column label="区画" name="name"/>
+ <column label="地域(リージョン)" name="location"/>
+ <column label="種類" name="type"/>
+ <column label="面積" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポート"/>
+ <button label="地図" label_selected="地図" name="Show on Map" tool_tip="この土地を世界地図に表示します。"/>
+ <text name="contrib_label">
+ あなたのグループへの貢献:
+ </text>
+ <scroll_list name="grant list">
+ <column label="グループ名" name="group"/>
+ <column label="面積" name="area"/>
+ </scroll_list>
+ <text name="allowed_label">
+ 現在の支払いプランでの許可された保有地:
+ </text>
+ <text name="allowed_text">
+ [AREA]平方メートル
+ </text>
+ <text name="current_label">
+ 現在の保有地:
+ </text>
+ <text name="current_text">
+ [AREA]平方メートル
+ </text>
+ <text name="available_label">
+ 土地購入可:
+ </text>
+ <text name="available_text">
+ [AREA]平方メートル
+ </text>
+ <string name="area_string">
+ [AREA]平方メートル
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml
index b108a3e70c..ce1a1ecf92 100644
--- a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="スクリプト:新しいスクリプト">
- <floater.string name="not_allowed">
- このスクリプトは「コピー不可」のため、表示または編集することができません。 オブジェクト内のスクリプトの表示または編集には、全権限が必要です。
- </floater.string>
- <floater.string name="script_running">
- 実行中
- </floater.string>
- <floater.string name="Title">
- スクリプト: [NAME]
- </floater.string>
- <button label="リセット" label_selected="リセット" name="Reset"/>
- <check_box initial_value="true" label="実行中" name="running"/>
- <check_box initial_value="true" label="Mono" name="mono"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="スクリプト:新しいスクリプト">
+ <floater.string name="not_allowed">
+ このスクリプトは「コピー不可」のため、表示または編集することができません。 オブジェクト内のスクリプトの表示または編集には、全権限が必要です。
+ </floater.string>
+ <floater.string name="script_running">
+ 実行中
+ </floater.string>
+ <floater.string name="Title">
+ スクリプト: [NAME]
+ </floater.string>
+ <button label="リセット" label_selected="リセット" name="Reset"/>
+ <check_box initial_value="true" label="実行中" name="running"/>
+ <check_box initial_value="true" label="Mono" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
index aefe24ae48..f3cba7e674 100644
--- a/indra/newview/skins/default/xui/ja/floater_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_map.xml
@@ -1,54 +1,54 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
- <floater.string name="mini_map_north">
- 北
- </floater.string>
- <floater.string name="mini_map_east">
- 東
- </floater.string>
- <floater.string name="mini_map_west">
- 西
- </floater.string>
- <floater.string name="mini_map_south">
- 南
- </floater.string>
- <floater.string name="mini_map_southeast">
- 南東
- </floater.string>
- <floater.string name="mini_map_northeast">
- 北東
- </floater.string>
- <floater.string name="mini_map_southwest">
- 南西
- </floater.string>
- <floater.string name="mini_map_northwest">
- 北西
- </floater.string>
- <floater.string name="ToolTipMsg">
- [AGENT][REGION] (ダブルクリックで地図を開く)
- </floater.string>
- <text label="北" name="floater_map_north" text="北">
- 北
- </text>
- <text label="東" name="floater_map_east" text="東">
- 東
- </text>
- <text label="西" name="floater_map_west" text="西">
- 西
- </text>
- <text label="南" name="floater_map_south" text="南">
- 南
- </text>
- <text label="南東" name="floater_map_southeast" text="南東">
- 南東
- </text>
- <text label="北東" name="floater_map_northeast" text="北東">
- 北東
- </text>
- <text label="南西" name="floater_map_southwest" text="南西">
- 南西
- </text>
- <text label="北西" name="floater_map_northwest" text="北西">
- 北西
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map">
+ <floater.string name="mini_map_north">
+ 北
+ </floater.string>
+ <floater.string name="mini_map_east">
+ 東
+ </floater.string>
+ <floater.string name="mini_map_west">
+ 西
+ </floater.string>
+ <floater.string name="mini_map_south">
+ 南
+ </floater.string>
+ <floater.string name="mini_map_southeast">
+ 南東
+ </floater.string>
+ <floater.string name="mini_map_northeast">
+ 北東
+ </floater.string>
+ <floater.string name="mini_map_southwest">
+ 南西
+ </floater.string>
+ <floater.string name="mini_map_northwest">
+ 北西
+ </floater.string>
+ <floater.string name="ToolTipMsg">
+ [AGENT][REGION] (ダブルクリックで地図を開く)
+ </floater.string>
+ <text label="北" name="floater_map_north" text="北">
+ 北
+ </text>
+ <text label="東" name="floater_map_east" text="東">
+ 東
+ </text>
+ <text label="西" name="floater_map_west" text="西">
+ 西
+ </text>
+ <text label="南" name="floater_map_south" text="南">
+ 南
+ </text>
+ <text label="南東" name="floater_map_southeast" text="南東">
+ 南東
+ </text>
+ <text label="北東" name="floater_map_northeast" text="北東">
+ 北東
+ </text>
+ <text label="南西" name="floater_map_southwest" text="南西">
+ 南西
+ </text>
+ <text label="北西" name="floater_map_northwest" text="北西">
+ 北西
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
index 5e60b9f1a2..3bcc40f9dd 100644
--- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="メディア・ブラウザ">
- <floater.string name="home_page_url">
- http://jp.secondlife.com
- </floater.string>
- <floater.string name="support_page_url">
- http://jp.secondlife.com/support
- </floater.string>
- <layout_stack name="stack1">
- <layout_panel name="nav_controls">
- <button label="戻る" name="back"/>
- <button label="進む" name="forward"/>
- <button label="更新" name="reload"/>
- <button label="閲覧" name="go"/>
- </layout_panel>
- <layout_panel name="time_controls">
- <button label="巻き戻し" name="rewind"/>
- <button label="停止" name="stop"/>
- <button label="早送り" name="seek"/>
- </layout_panel>
- <layout_panel name="parcel_owner_controls">
- <button label="現在の URL を区画に送信" name="assign"/>
- </layout_panel>
- <layout_panel name="external_controls">
- <button label="外部ウェブ・ブラウザで開く" name="open_browser"/>
- <check_box label="常に外部のウェブ・ブラウザで開く" name="open_always"/>
- <button label="閉じる" name="close"/>
- </layout_panel>
- </layout_stack>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="メディア・ブラウザ">
+ <floater.string name="home_page_url">
+ http://jp.secondlife.com
+ </floater.string>
+ <floater.string name="support_page_url">
+ http://jp.secondlife.com/support
+ </floater.string>
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button label="戻る" name="back"/>
+ <button label="進む" name="forward"/>
+ <button label="更新" name="reload"/>
+ <button label="閲覧" name="go"/>
+ </layout_panel>
+ <layout_panel name="time_controls">
+ <button label="巻き戻し" name="rewind"/>
+ <button label="停止" name="stop"/>
+ <button label="早送り" name="seek"/>
+ </layout_panel>
+ <layout_panel name="parcel_owner_controls">
+ <button label="現在の URL を区画に送信" name="assign"/>
+ </layout_panel>
+ <layout_panel name="external_controls">
+ <button label="外部ウェブ・ブラウザで開く" name="open_browser"/>
+ <check_box label="常に外部のウェブ・ブラウザで開く" name="open_always"/>
+ <button label="閉じる" name="close"/>
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
index 1f7fcb9495..6167b6db91 100644
--- a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="メモリリークのシミュレート">
- <spinner label="リークスピード(1フレームごとのバイト数):" label_width="244" name="leak_speed"/>
- <spinner label="リークした最大メモリ数(MB):" label_width="244" name="max_leak"/>
- <text name="total_leaked_label">
- 現在のリークメモリサイズ: [SIZE] KB
- </text>
- <text name="note_label_1">
- [NOTE1]
- </text>
- <text name="note_label_2">
- [NOTE2]
- </text>
- <button label="開始" name="start_btn"/>
- <button label="停止" name="stop_btn"/>
- <button label="解放" name="release_btn"/>
- <button label="閉じる" name="close_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="メモリリークのシミュレート">
+ <spinner label="リークスピード(1フレームごとのバイト数):" label_width="244" name="leak_speed"/>
+ <spinner label="リークした最大メモリ数(MB):" label_width="244" name="max_leak"/>
+ <text name="total_leaked_label">
+ 現在のリークメモリサイズ: [SIZE] KB
+ </text>
+ <text name="note_label_1">
+ [NOTE1]
+ </text>
+ <text name="note_label_2">
+ [NOTE2]
+ </text>
+ <button label="開始" name="start_btn"/>
+ <button label="停止" name="stop_btn"/>
+ <button label="解放" name="release_btn"/>
+ <button label="閉じる" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_moveview.xml b/indra/newview/skins/default/xui/ja/floater_moveview.xml
index e6aeccc517..8ba297c7a0 100644
--- a/indra/newview/skins/default/xui/ja/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_moveview.xml
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
- <string name="walk_forward_tooltip">
- 前に進む(上矢印か W を押す)
- </string>
- <string name="walk_back_tooltip">
- 後ろに歩く(下矢印か S を押す)
- </string>
- <string name="run_forward_tooltip">
- 前に走る(上矢印か W を押す)
- </string>
- <string name="run_back_tooltip">
- 後ろに走る(下矢印か S を押す)
- </string>
- <string name="fly_forward_tooltip">
- 前に飛ぶ(上矢印か W を押す)
- </string>
- <string name="fly_back_tooltip">
- 後ろに飛ぶ(下矢印か S を押す)
- </string>
- <panel name="panel_actions">
- <button label="" label_selected="" name="turn left btn" tool_tip="左を向く(左矢印か A を押す)"/>
- <button label="" label_selected="" name="turn right btn" tool_tip="右を向く(右矢印か D を押す)"/>
- <button label="" label_selected="" name="move up btn" tool_tip="飛ぶ・E を押す"/>
- <button label="" label_selected="" name="move down btn" tool_tip="着地・C を押す"/>
- <joystick_turn name="forward btn" tool_tip="前に進む(上矢印か W を押す)"/>
- <joystick_turn name="backward btn" tool_tip="後ろに歩く(下矢印か S を押す)"/>
- </panel>
- <panel name="panel_modes">
- <button label="" name="mode_walk_btn" tool_tip="歩行モード"/>
- <button label="" name="mode_run_btn" tool_tip="走行モード"/>
- <button label="" name="mode_fly_btn" tool_tip="飛行モード"/>
- <button label="飛行停止" name="stop_fly_btn" tool_tip="飛行停止"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater">
+ <string name="walk_forward_tooltip">
+ 前に進む(上矢印か W を押す)
+ </string>
+ <string name="walk_back_tooltip">
+ 後ろに歩く(下矢印か S を押す)
+ </string>
+ <string name="run_forward_tooltip">
+ 前に走る(上矢印か W を押す)
+ </string>
+ <string name="run_back_tooltip">
+ 後ろに走る(下矢印か S を押す)
+ </string>
+ <string name="fly_forward_tooltip">
+ 前に飛ぶ(上矢印か W を押す)
+ </string>
+ <string name="fly_back_tooltip">
+ 後ろに飛ぶ(下矢印か S を押す)
+ </string>
+ <panel name="panel_actions">
+ <button label="" label_selected="" name="turn left btn" tool_tip="左を向く(左矢印か A を押す)"/>
+ <button label="" label_selected="" name="turn right btn" tool_tip="右を向く(右矢印か D を押す)"/>
+ <button label="" label_selected="" name="move up btn" tool_tip="飛ぶ・E を押す"/>
+ <button label="" label_selected="" name="move down btn" tool_tip="着地・C を押す"/>
+ <joystick_turn name="forward btn" tool_tip="前に進む(上矢印か W を押す)"/>
+ <joystick_turn name="backward btn" tool_tip="後ろに歩く(下矢印か S を押す)"/>
+ </panel>
+ <panel name="panel_modes">
+ <button label="" name="mode_walk_btn" tool_tip="歩行モード"/>
+ <button label="" name="mode_run_btn" tool_tip="走行モード"/>
+ <button label="" name="mode_fly_btn" tool_tip="飛行モード"/>
+ <button label="飛行停止" name="stop_fly_btn" tool_tip="飛行停止"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_pay.xml b/indra/newview/skins/default/xui/ja/floater_pay.xml
index d175009ef3..bef2435fe2 100644
--- a/indra/newview/skins/default/xui/ja/floater_pay.xml
+++ b/indra/newview/skins/default/xui/ja/floater_pay.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Give Money" title="">
- <text name="payee_label">
- 支払い:
- </text>
- <icon name="icon_person" tool_tip="住人"/>
- <text name="payee_name">
- [FIRST] [LAST]
- </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"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money" title="">
+ <text name="payee_label">
+ 支払い:
+ </text>
+ <icon name="icon_person" tool_tip="住人"/>
+ <text name="payee_name">
+ [FIRST] [LAST]
+ </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"/>
+</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 5a3edb2908..b304e291d3 100644
--- 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,29 @@
-<?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">
- [FIRST] [LAST]
- </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"/>
-</floater>
+<?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">
+ [FIRST] [LAST]
+ </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"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
index 95cffd33f2..629c1fd339 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_anim">
- <floater.string name="Title">
- アニメーション: [NAME]
- </floater.string>
- <text name="desc txt">
- 説明:
- </text>
- <button label="世界で再生" label_selected="停止" name="Anim play btn" tool_tip="このアニメーションを他の人も見ることができるように再生します。"/>
- <button label="ローカルに再生" label_selected="停止" name="Anim audition btn" tool_tip="このアニメーションを自分専用に再生します。"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+ <floater.string name="Title">
+ アニメーション: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ 説明:
+ </text>
+ <button label="世界で再生" label_selected="停止" name="Anim play btn" tool_tip="このアニメーションを他の人も見ることができるように再生します。"/>
+ <button label="ローカルに再生" label_selected="停止" name="Anim audition btn" tool_tip="このアニメーションを自分専用に再生します。"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_classified.xml b/indra/newview/skins/default/xui/ja/floater_preview_classified.xml
index 48a64e28a6..ba3bb028b2 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_classified.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_classified.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="classified_preview" title="クラシファイド広告情報">
- <floater.string name="Title">
- クラシファイド広告: [NAME]
- </floater.string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="classified_preview" title="クラシファイド広告情報">
+ <floater.string name="Title">
+ クラシファイド広告: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_event.xml b/indra/newview/skins/default/xui/ja/floater_preview_event.xml
index 61c17e2d3c..21f57ca7a3 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_event.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="イベント情報">
- <floater.string name="Title">
- イベント: [NAME]
- </floater.string>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="event_preview" title="イベント情報">
+ <floater.string name="Title">
+ イベント: [NAME]
+ </floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml
index c996ed8591..682b295a14 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="ジェスチャーのショートカット"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ジェスチャーのショートカット"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml
index c996ed8591..682b295a14 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="ジェスチャーのショートカット"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="ジェスチャーのショートカット"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
index ba272bdffd..0ab1efd127 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="メモ:">
- <floater.string name="no_object">
- このノートを含んだオブジェクトが見つかりません。
- </floater.string>
- <floater.string name="not_allowed">
- このノートを見る権限がありません。
- </floater.string>
- <floater.string name="Title">
- ノートカード: [NAME]
- </floater.string>
- <floater.string label="保存" label_selected="保存" name="Save">
- 保存
- </floater.string>
- <text name="desc txt">
- 説明:
- </text>
- <text_editor name="Notecard Editor">
- ローディング...
- </text_editor>
- <button label="保存" label_selected="保存" name="Save"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="メモ:">
+ <floater.string name="no_object">
+ このノートを含んだオブジェクトが見つかりません。
+ </floater.string>
+ <floater.string name="not_allowed">
+ このノートを見る権限がありません。
+ </floater.string>
+ <floater.string name="Title">
+ ノートカード: [NAME]
+ </floater.string>
+ <floater.string label="保存" label_selected="保存" name="Save">
+ 保存
+ </floater.string>
+ <text name="desc txt">
+ 説明:
+ </text>
+ <text_editor name="Notecard Editor">
+ ローディング...
+ </text_editor>
+ <button label="保存" label_selected="保存" name="Save"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
index e52a3a4e92..09c6e46fb5 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_sound">
- <floater.string name="Title">
- サウンド: [NAME]
- </floater.string>
- <text name="desc txt">
- 説明:
- </text>
- <button label="世界で再生" label_selected="世界で再生" name="Sound play btn" tool_tip="このサウンドを他の人も聞くことができるように再生します。"/>
- <button label="ローカルに再生" label_selected="ローカルに再生" name="Sound audition btn" tool_tip="このサウンドを自分専用に再生します。"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+ <floater.string name="Title">
+ サウンド: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ 説明:
+ </text>
+ <button label="世界で再生" label_selected="世界で再生" name="Sound play btn" tool_tip="このサウンドを他の人も聞くことができるように再生します。"/>
+ <button label="ローカルに再生" label_selected="ローカルに再生" name="Sound audition btn" tool_tip="このサウンドを自分専用に再生します。"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
index c83130f3bb..32b83f295d 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_texture">
- <floater.string name="Title">
- テクスチャ: [NAME]
- </floater.string>
- <floater.string name="Copy">
- 持ち物にコピー
- </floater.string>
- <text name="desc txt">
- 説明:
- </text>
- <button label="保存" name="Keep"/>
- <button label="削除" name="Discard"/>
- <text name="dimensions">
- [WIDTH]px x [HEIGHT]px
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+ <floater.string name="Title">
+ テクスチャ: [NAME]
+ </floater.string>
+ <floater.string name="Copy">
+ 持ち物にコピー
+ </floater.string>
+ <text name="desc txt">
+ 説明:
+ </text>
+ <button label="保存" name="Keep"/>
+ <button label="削除" name="Discard"/>
+ <text name="dimensions">
+ [WIDTH]px x [HEIGHT]px
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index 2b07deb103..ac5b2c0a2d 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -1,103 +1,103 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_report_abuse" title="嫌がらせの報告">
- <floater.string name="Screenshot">
- スクリーンショット
- </floater.string>
- <check_box label="このスクリーンショットを使用" name="screen_check"/>
- <text name="reporter_title">
- 報告者:
- </text>
- <text name="reporter_field">
- Loremipsum Dolorsitamut
- </text>
- <text name="sim_title">
- 地域:
- </text>
- <text name="sim_field">
- 地域名
- </text>
- <text name="pos_title">
- 位置:
- </text>
- <text name="pos_field">
- {128.1, 128.1, 15.4}
- </text>
- <text name="select_object_label">
- ボタンをクリック。悪意のあるオブジェクト:
- </text>
- <button label="" label_selected="" name="pick_btn" tool_tip="オブジェクト・ピッカー - この報告の主題となるオブジェクトを特定"/>
- <text name="object_name_label">
- オブジェクト:
- </text>
- <text name="object_name">
- Consetetur Sadipscing
- </text>
- <text name="owner_name_label">
- オーナー:
- </text>
- <text name="owner_name">
- Hendrerit Vulputate
- </text>
- <combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください">
- <combo_box.item label="カテゴリーを選択" name="Select_category"/>
- <combo_box.item label="年齢>年齢偽証" name="Age__Age_play"/>
- <combo_box.item label="年齢>成人の住人がTeen Second Life上にいる" name="Age__Adult_resident_on_Teen_Second_Life"/>
- <combo_box.item label="年齢>未成年な住人がTeen Second Lifeの外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
- <combo_box.item label="攻撃>コンバット・サンドボックス/危険なエリア" name="Assault__Combat_sandbox___unsafe_area"/>
- <combo_box.item label="攻撃>安全なエリア" name="Assault__Safe_area"/>
- <combo_box.item label="攻撃>武器テスト用サンドボックス" name="Assault__Weapons_testing_sandbox"/>
- <combo_box.item label="商取引>製品またはサービスの提供が行われない" name="Commerce__Failure_to_deliver_product_or_service"/>
- <combo_box.item label="開示>リアルワールドの情報" name="Disclosure__Real_world_information"/>
- <combo_box.item label="開示>離れたところからチャットをモニターしている" name="Disclosure__Remotely_monitoring chat"/>
- <combo_box.item label="開示>Second Lifeの情報/チャット/IM" name="Disclosure__Second_Life_information_chat_IMs"/>
- <combo_box.item label="平穏を乱す行為>地域リソースの使用が不公平" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
- <combo_box.item label="平穏を乱す行為>スクリプト・オブジェクトの乱用" name="Disturbing_the_peace__Excessive_scripted_objects"/>
- <combo_box.item label="平穏を乱す行為>オブジェクトの捨て置き" name="Disturbing_the_peace__Object_littering"/>
- <combo_box.item label="平穏を乱す行為>繰り返しスパム" name="Disturbing_the_peace__Repetitive_spam"/>
- <combo_box.item label="平穏を乱す行為>不要な広告スパム" name="Disturbing_the_peace__Unwanted_advert_spam"/>
- <combo_box.item label="詐欺> L$" name="Fraud__L$"/>
- <combo_box.item label="詐欺>土地" name="Fraud__Land"/>
- <combo_box.item label="詐欺>マルチ商法またはチェーン・メール" name="Fraud__Pyramid_scheme_or_chain_letter"/>
- <combo_box.item label="詐欺> US$" name="Fraud__US$"/>
- <combo_box.item label="嫌がらせ>広告委託/視覚的なスパム" name="Harassment__Advert_farms___visual_spam"/>
- <combo_box.item label="嫌がらせ>個人またはグループの中傷" name="Harassment__Defaming_individuals_or_groups"/>
- <combo_box.item label="嫌がらせ>移動の妨害" name="Harassment__Impeding_movement"/>
- <combo_box.item label="嫌がらせ>性的な嫌がらせ" name="Harassment__Sexual_harassment"/>
- <combo_box.item label="嫌がらせ>利用規約(ToS)に違反する行為を行うよう他者を勧誘/扇動" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
- <combo_box.item label="嫌がらせ>暴言" name="Harassment__Verbal_abuse"/>
- <combo_box.item label="わいせつ>著しく不快であると見なされるコンテンツまたは行為" name="Indecency__Broadly_offensive_content_or_conduct"/>
- <combo_box.item label="わいせつ>不適切なアバター名" name="Indecency__Inappropriate_avatar_name"/>
- <combo_box.item label="わいせつ>PG地域での不適切なコンテンツまたは行為" name="Indecency__Mature_content_in_PG_region"/>
- <combo_box.item label="わいせつ>Mature地域での不適切なコンテンツまたは行為" name="Indecency__Inappropriate_content_in_Mature_region"/>
- <combo_box.item label="知的財産の侵害>コンテンツの撤去" name="Intellectual_property_infringement_Content_Removal"/>
- <combo_box.item label="知的財産の侵害>コピーBot及び権限の悪用" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
- <combo_box.item label="不寛容" name="Intolerance"/>
- <combo_box.item label="土地>サンドボックス・リソースの乱用" name="Land__Abuse_of_sandbox_resources"/>
- <combo_box.item label="土地>不法侵入>オブジェクト/テクスチャー" name="Land__Encroachment__Objects_textures"/>
- <combo_box.item label="土地>不法侵入>パーティクル" name="Land__Encroachment__Particles"/>
- <combo_box.item label="土地>不法侵入>樹木/植物" name="Land__Encroachment__Trees_plants"/>
- <combo_box.item label="賭け/ギャンブル" name="Wagering_gambling"/>
- <combo_box.item label="その他" name="Other"/>
- </combo_box>
- <text name="abuser_name_title">
- 迷惑ユーザーの名前:
- </text>
- <button label="選択" label_selected="" name="select_abuser" tool_tip="嫌がらせをした人の名前をリストから選択してください。"/>
- <text name="abuser_name_title2">
- 嫌がらせの起きた場所:
- </text>
- <text name="sum_title">
- 概要:
- </text>
- <text name="dscr_title">
- 詳細:
- </text>
- <text name="bug_aviso">
- できるだけ具体的にお願いします。
- </text>
- <text name="incomplete_title">
- 注意:不完全なレポートは調査されません。
- </text>
- <button label="嫌がらせの報告" label_selected="嫌がらせの報告" name="send_btn"/>
- <button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="嫌がらせの報告">
+ <floater.string name="Screenshot">
+ スクリーンショット
+ </floater.string>
+ <check_box label="このスクリーンショットを使用" name="screen_check"/>
+ <text name="reporter_title">
+ 報告者:
+ </text>
+ <text name="reporter_field">
+ Loremipsum Dolorsitamut
+ </text>
+ <text name="sim_title">
+ 地域:
+ </text>
+ <text name="sim_field">
+ 地域名
+ </text>
+ <text name="pos_title">
+ 位置:
+ </text>
+ <text name="pos_field">
+ {128.1, 128.1, 15.4}
+ </text>
+ <text name="select_object_label">
+ ボタンをクリック。悪意のあるオブジェクト:
+ </text>
+ <button label="" label_selected="" name="pick_btn" tool_tip="オブジェクト・ピッカー - この報告の主題となるオブジェクトを特定"/>
+ <text name="object_name_label">
+ オブジェクト:
+ </text>
+ <text name="object_name">
+ Consetetur Sadipscing
+ </text>
+ <text name="owner_name_label">
+ オーナー:
+ </text>
+ <text name="owner_name">
+ Hendrerit Vulputate
+ </text>
+ <combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください">
+ <combo_box.item label="カテゴリーを選択" name="Select_category"/>
+ <combo_box.item label="年齢>年齢偽証" name="Age__Age_play"/>
+ <combo_box.item label="年齢>成人の住人がTeen Second Life上にいる" name="Age__Adult_resident_on_Teen_Second_Life"/>
+ <combo_box.item label="年齢>未成年な住人がTeen Second Lifeの外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+ <combo_box.item label="攻撃>コンバット・サンドボックス/危険なエリア" name="Assault__Combat_sandbox___unsafe_area"/>
+ <combo_box.item label="攻撃>安全なエリア" name="Assault__Safe_area"/>
+ <combo_box.item label="攻撃>武器テスト用サンドボックス" name="Assault__Weapons_testing_sandbox"/>
+ <combo_box.item label="商取引>製品またはサービスの提供が行われない" name="Commerce__Failure_to_deliver_product_or_service"/>
+ <combo_box.item label="開示>リアルワールドの情報" name="Disclosure__Real_world_information"/>
+ <combo_box.item label="開示>離れたところからチャットをモニターしている" name="Disclosure__Remotely_monitoring chat"/>
+ <combo_box.item label="開示>Second Lifeの情報/チャット/IM" name="Disclosure__Second_Life_information_chat_IMs"/>
+ <combo_box.item label="平穏を乱す行為>地域リソースの使用が不公平" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+ <combo_box.item label="平穏を乱す行為>スクリプト・オブジェクトの乱用" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+ <combo_box.item label="平穏を乱す行為>オブジェクトの捨て置き" name="Disturbing_the_peace__Object_littering"/>
+ <combo_box.item label="平穏を乱す行為>繰り返しスパム" name="Disturbing_the_peace__Repetitive_spam"/>
+ <combo_box.item label="平穏を乱す行為>不要な広告スパム" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+ <combo_box.item label="詐欺> L$" name="Fraud__L$"/>
+ <combo_box.item label="詐欺>土地" name="Fraud__Land"/>
+ <combo_box.item label="詐欺>マルチ商法またはチェーン・メール" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+ <combo_box.item label="詐欺> US$" name="Fraud__US$"/>
+ <combo_box.item label="嫌がらせ>広告委託/視覚的なスパム" name="Harassment__Advert_farms___visual_spam"/>
+ <combo_box.item label="嫌がらせ>個人またはグループの中傷" name="Harassment__Defaming_individuals_or_groups"/>
+ <combo_box.item label="嫌がらせ>移動の妨害" name="Harassment__Impeding_movement"/>
+ <combo_box.item label="嫌がらせ>性的な嫌がらせ" name="Harassment__Sexual_harassment"/>
+ <combo_box.item label="嫌がらせ>利用規約(ToS)に違反する行為を行うよう他者を勧誘/扇動" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+ <combo_box.item label="嫌がらせ>暴言" name="Harassment__Verbal_abuse"/>
+ <combo_box.item label="わいせつ>著しく不快であると見なされるコンテンツまたは行為" name="Indecency__Broadly_offensive_content_or_conduct"/>
+ <combo_box.item label="わいせつ>不適切なアバター名" name="Indecency__Inappropriate_avatar_name"/>
+ <combo_box.item label="わいせつ>PG地域での不適切なコンテンツまたは行為" name="Indecency__Mature_content_in_PG_region"/>
+ <combo_box.item label="わいせつ>Mature地域での不適切なコンテンツまたは行為" name="Indecency__Inappropriate_content_in_Mature_region"/>
+ <combo_box.item label="知的財産の侵害>コンテンツの撤去" name="Intellectual_property_infringement_Content_Removal"/>
+ <combo_box.item label="知的財産の侵害>コピーBot及び権限の悪用" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+ <combo_box.item label="不寛容" name="Intolerance"/>
+ <combo_box.item label="土地>サンドボックス・リソースの乱用" name="Land__Abuse_of_sandbox_resources"/>
+ <combo_box.item label="土地>不法侵入>オブジェクト/テクスチャー" name="Land__Encroachment__Objects_textures"/>
+ <combo_box.item label="土地>不法侵入>パーティクル" name="Land__Encroachment__Particles"/>
+ <combo_box.item label="土地>不法侵入>樹木/植物" name="Land__Encroachment__Trees_plants"/>
+ <combo_box.item label="賭け/ギャンブル" name="Wagering_gambling"/>
+ <combo_box.item label="その他" name="Other"/>
+ </combo_box>
+ <text name="abuser_name_title">
+ 迷惑ユーザーの名前:
+ </text>
+ <button label="選択" label_selected="" name="select_abuser" tool_tip="嫌がらせをした人の名前をリストから選択してください。"/>
+ <text name="abuser_name_title2">
+ 嫌がらせの起きた場所:
+ </text>
+ <text name="sum_title">
+ 概要:
+ </text>
+ <text name="dscr_title">
+ 詳細:
+ </text>
+ <text name="bug_aviso">
+ できるだけ具体的にお願いします。
+ </text>
+ <text name="incomplete_title">
+ 注意:不完全なレポートは調査されません。
+ </text>
+ <button label="嫌がらせの報告" label_selected="嫌がらせの報告" name="send_btn"/>
+ <button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml
index fc805e879b..ef021ce713 100644
--- a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml
+++ b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script" short_title="[All scripts]" title="[All scripts]"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[All scripts]" title="[All scripts]"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_script_preview.xml b/indra/newview/skins/default/xui/ja/floater_script_preview.xml
index 583a2f8b91..82fe741d67 100644
--- a/indra/newview/skins/default/xui/ja/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_script_preview.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview lsl text" title="スクリプト:回転スクリプト">
- <floater.string name="Title">
- スクリプト: [NAME]
- </floater.string>
- <text name="desc txt">
- 説明:
- </text>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="スクリプト:回転スクリプト">
+ <floater.string name="Title">
+ スクリプト: [NAME]
+ </floater.string>
+ <text name="desc txt">
+ 説明:
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_script_queue.xml b/indra/newview/skins/default/xui/ja/floater_script_queue.xml
index 5e059b91ca..22a79e16d6 100644
--- a/indra/newview/skins/default/xui/ja/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/ja/floater_script_queue.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="進捗のリセット">
- <floater.string name="Starting">
- [COUNT] アイテムの [START] を開始します。
- </floater.string>
- <floater.string name="Done">
- 完了。
- </floater.string>
- <floater.string name="Resetting">
- リセット中
- </floater.string>
- <floater.string name="Running">
- 実行中
- </floater.string>
- <floater.string name="NotRunning">
- 実行されていません
- </floater.string>
- <button label="閉じる" label_selected="閉じる" name="close"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="進捗のリセット">
+ <floater.string name="Starting">
+ [COUNT] アイテムの [START] を開始します。
+ </floater.string>
+ <floater.string name="Done">
+ 完了。
+ </floater.string>
+ <floater.string name="Resetting">
+ リセット中
+ </floater.string>
+ <floater.string name="Running">
+ 実行中
+ </floater.string>
+ <floater.string name="NotRunning">
+ 実行されていません
+ </floater.string>
+ <button label="閉じる" label_selected="閉じる" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
index f373a7215e..96a9a76a72 100644
--- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
@@ -1,70 +1,70 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater height="496" min_height="496" name="sell land" title="土地を販売">
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="info_parcel_label">
- 区画:
- </text>
- <text name="info_parcel">
- 区画名
- </text>
- <text name="info_size_label">
- サイズ:
- </text>
- <text name="info_size">
- [AREA]平方メートル
- </text>
- <text bottom_delta="-57" name="info_action">
- この区画を販売す
-るには:
- </text>
- <icon bottom_delta="-86" name="step_price"/>
- <text name="price_label">
- 価格を設定:
- </text>
- <text name="price_text">
- 適正価格を選んでください。
- </text>
- <text name="price_ld">
- L$
- </text>
- <text left_delta="106" name="price_per_m" width="230">
- (1平方メートル当たりL$ [PER_METER])
- </text>
- <text name="sell_to_label">
- 土地の販売先:
- </text>
- <text name="sell_to_text" right="-6">
- 誰にでも販売するか、特定の人にのみ販売するかを選択してください
- </text>
- <combo_box name="sell_to">
- <combo_box.item label="1つ選択--" name="--selectone--"/>
- <combo_box.item label="誰でも" name="Anyone"/>
- <combo_box.item label="特定の人:" name="Specificuser:"/>
- </combo_box>
- <button label="選択..." name="sell_to_select_agent"/>
- <text name="sell_objects_label">
- 土地と共にオブジェクトを販売しますか?
- </text>
- <text name="sell_objects_text">
- 区画上にある譲渡可能なオブジェクトは所有権が変更されます
- </text>
- <radio_group bottom_delta="-76" height="72" name="sell_objects">
- <radio_item name="no">
- いいえ、オブジェクト所有権
-を保持します
- </radio_item>
- <radio_item bottom="-56" name="yes">
- はい、土地と一緒にオブジェ
-クトを売ります
- </radio_item>
- </radio_group>
- <button label="オブジェクトを表示" name="show_objects" width="138"/>
- <text name="nag_message_label">
- 注意:返品や交換はできません
- </text>
- <button bottom="-489" label="販売を決定" name="sell_btn"/>
- <button label="取り消し" name="cancel_btn"/>
- </panel>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater height="496" min_height="496" name="sell land" title="土地を販売">
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="info_parcel_label">
+ 区画:
+ </text>
+ <text name="info_parcel">
+ 区画名
+ </text>
+ <text name="info_size_label">
+ サイズ:
+ </text>
+ <text name="info_size">
+ [AREA]平方メートル
+ </text>
+ <text bottom_delta="-57" name="info_action">
+ この区画を販売す
+るには:
+ </text>
+ <icon bottom_delta="-86" name="step_price"/>
+ <text name="price_label">
+ 価格を設定:
+ </text>
+ <text name="price_text">
+ 適正価格を選んでください。
+ </text>
+ <text name="price_ld">
+ L$
+ </text>
+ <text left_delta="106" name="price_per_m" width="230">
+ (1平方メートル当たりL$ [PER_METER])
+ </text>
+ <text name="sell_to_label">
+ 土地の販売先:
+ </text>
+ <text name="sell_to_text" right="-6">
+ 誰にでも販売するか、特定の人にのみ販売するかを選択してください
+ </text>
+ <combo_box name="sell_to">
+ <combo_box.item label="1つ選択--" name="--selectone--"/>
+ <combo_box.item label="誰でも" name="Anyone"/>
+ <combo_box.item label="特定の人:" name="Specificuser:"/>
+ </combo_box>
+ <button label="選択..." name="sell_to_select_agent"/>
+ <text name="sell_objects_label">
+ 土地と共にオブジェクトを販売しますか?
+ </text>
+ <text name="sell_objects_text">
+ 区画上にある譲渡可能なオブジェクトは所有権が変更されます
+ </text>
+ <radio_group bottom_delta="-76" height="72" name="sell_objects">
+ <radio_item name="no">
+ いいえ、オブジェクト所有権
+を保持します
+ </radio_item>
+ <radio_item bottom="-56" name="yes">
+ はい、土地と一緒にオブジェ
+クトを売ります
+ </radio_item>
+ </radio_group>
+ <button label="オブジェクトを表示" name="show_objects" width="138"/>
+ <text name="nag_message_label">
+ 注意:返品や交換はできません
+ </text>
+ <button bottom="-489" label="販売を決定" name="sell_btn"/>
+ <button label="取り消し" name="cancel_btn"/>
+ </panel>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_settings_debug.xml b/indra/newview/skins/default/xui/ja/floater_settings_debug.xml
index 6ad4976b1c..cb7950bf53 100644
--- a/indra/newview/skins/default/xui/ja/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/ja/floater_settings_debug.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="デバッグ設定">
- <combo_box name="boolean_combo">
- <combo_box.item label="TRUE" name="TRUE"/>
- <combo_box.item label="FALSE" name="FALSE"/>
- </combo_box>
- <color_swatch label="色" name="val_color_swatch"/>
- <spinner label="x" name="val_spinner_1"/>
- <spinner label="x" name="val_spinner_2"/>
- <spinner label="x" name="val_spinner_3"/>
- <spinner label="x" name="val_spinner_4"/>
- <button label="デフォルトにリセット" name="default_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="デバッグ設定">
+ <combo_box name="boolean_combo">
+ <combo_box.item label="TRUE" name="TRUE"/>
+ <combo_box.item label="FALSE" name="FALSE"/>
+ </combo_box>
+ <color_swatch label="色" name="val_color_swatch"/>
+ <spinner label="x" name="val_spinner_1"/>
+ <spinner label="x" name="val_spinner_2"/>
+ <spinner label="x" name="val_spinner_3"/>
+ <spinner label="x" name="val_spinner_4"/>
+ <button label="デフォルトにリセット" name="default_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml
index 698beccb07..2a45d8556b 100644
--- a/indra/newview/skins/default/xui/ja/floater_stats.xml
+++ b/indra/newview/skins/default/xui/ja/floater_stats.xml
@@ -1,71 +1,71 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="統計バー">
- <scroll_container name="statistics_scroll">
- <container_view name="statistics_view">
- <stat_view label="ベーシック" name="basic">
- <stat_bar label="FPS" name="fps"/>
- <stat_bar label="帯域幅" name="bandwidth"/>
- <stat_bar label="パケットロス" name="packet_loss"/>
- <stat_bar label="シムの Ping" name="ping"/>
- </stat_view>
- <stat_view label="詳細" name="advanced">
- <stat_view label="レンダリング" name="render">
- <stat_bar label="KTris の描画" name="ktrisframe"/>
- <stat_bar label="KTris の描画" name="ktrissec"/>
- <stat_bar label="オブジェクト合計" name="objs"/>
- <stat_bar label="新しいオブジェクト" name="newobjs"/>
- </stat_view>
- <stat_view label="テクスチャ" name="texture">
- <stat_bar label="カウント" name="numimagesstat"/>
- <stat_bar label="未処理のカウント" name="numrawimagesstat"/>
- <stat_bar label="GL メモリ" name="gltexmemstat"/>
- <stat_bar label="フォーマット済メモリ" name="formattedmemstat"/>
- <stat_bar label="未処理のメモリ" name="rawmemstat"/>
- <stat_bar label="統合メモリ" name="glboundmemstat"/>
- </stat_view>
- <stat_view label="ネットワーク" name="network">
- <stat_bar label="パケットイン" name="packetsinstat"/>
- <stat_bar label="パケットアウト" name="packetsoutstat"/>
- <stat_bar label="オブジェクト" name="objectkbitstat"/>
- <stat_bar label="テクスチャ" name="texturekbitstat"/>
- <stat_bar label="アセット" name="assetkbitstat"/>
- <stat_bar label="レイヤー" name="layerskbitstat"/>
- <stat_bar label="実際の受信" name="actualinkbitstat"/>
- <stat_bar label="実際の送信" name="actualoutkbitstat"/>
- <stat_bar label="VFS 保留中の操作" name="vfspendingoperations"/>
- </stat_view>
- </stat_view>
- <stat_view label="シミュレーター" name="sim">
- <stat_bar label="時間の遅れ" name="simtimedilation"/>
- <stat_bar label="シム FPS" name="simfps"/>
- <stat_bar label="物理的作用 FPS" name="simphysicsfps"/>
- <stat_view label="物理的作用の詳細" name="physicsdetail">
- <stat_bar label="ピン留めオブジェクト" name="physicspinnedtasks"/>
- <stat_bar label="低 LOD オブジェクト" name="physicslodtasks"/>
- <stat_bar label="メモリ配分" name="physicsmemoryallocated"/>
- <stat_bar label="エージェントの更新/秒" name="simagentups"/>
- <stat_bar label="メインエージェント" name="simmainagents"/>
- <stat_bar label="チャイルドエージェント" name="simchildagents"/>
- <stat_bar label="オブジェクト" name="simobjects"/>
- <stat_bar label="アクティブなオブジェクト" name="simactiveobjects"/>
- <stat_bar label="アクティブなスクリプト" name="simactivescripts"/>
- <stat_bar label="スクリプトイベント" name="simscripteps"/>
- <stat_bar label="パケットイン" name="siminpps"/>
- <stat_bar label="パケットアウト" name="simoutpps"/>
- <stat_bar label="保留中のダウンロード" name="simpendingdownloads"/>
- <stat_bar label="保留中のアップロード" name="simpendinguploads"/>
- <stat_bar label="未送信バイト合計" name="simtotalunackedbytes"/>
- </stat_view>
- <stat_view label="時間(ms)" name="simperf">
- <stat_bar label="フレーム時間合計" name="simframemsec"/>
- <stat_bar label="総時間数" name="simnetmsec"/>
- <stat_bar label="物理的作用時間" name="simsimphysicsmsec"/>
- <stat_bar label="シミュレーション時間" name="simsimothermsec"/>
- <stat_bar label="エージェント時間" name="simagentmsec"/>
- <stat_bar label="イメージ時間" name="simimagesmsec"/>
- <stat_bar label="スクリプト時間" name="simscriptmsec"/>
- </stat_view>
- </stat_view>
- </container_view>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="統計バー">
+ <scroll_container name="statistics_scroll">
+ <container_view name="statistics_view">
+ <stat_view label="ベーシック" name="basic">
+ <stat_bar label="FPS" name="fps"/>
+ <stat_bar label="帯域幅" name="bandwidth"/>
+ <stat_bar label="パケットロス" name="packet_loss"/>
+ <stat_bar label="シムの Ping" name="ping"/>
+ </stat_view>
+ <stat_view label="詳細" name="advanced">
+ <stat_view label="レンダリング" name="render">
+ <stat_bar label="KTris の描画" name="ktrisframe"/>
+ <stat_bar label="KTris の描画" name="ktrissec"/>
+ <stat_bar label="オブジェクト合計" name="objs"/>
+ <stat_bar label="新しいオブジェクト" name="newobjs"/>
+ </stat_view>
+ <stat_view label="テクスチャ" name="texture">
+ <stat_bar label="カウント" name="numimagesstat"/>
+ <stat_bar label="未処理のカウント" name="numrawimagesstat"/>
+ <stat_bar label="GL メモリ" name="gltexmemstat"/>
+ <stat_bar label="フォーマット済メモリ" name="formattedmemstat"/>
+ <stat_bar label="未処理のメモリ" name="rawmemstat"/>
+ <stat_bar label="統合メモリ" name="glboundmemstat"/>
+ </stat_view>
+ <stat_view label="ネットワーク" name="network">
+ <stat_bar label="パケットイン" name="packetsinstat"/>
+ <stat_bar label="パケットアウト" name="packetsoutstat"/>
+ <stat_bar label="オブジェクト" name="objectkbitstat"/>
+ <stat_bar label="テクスチャ" name="texturekbitstat"/>
+ <stat_bar label="アセット" name="assetkbitstat"/>
+ <stat_bar label="レイヤー" name="layerskbitstat"/>
+ <stat_bar label="実際の受信" name="actualinkbitstat"/>
+ <stat_bar label="実際の送信" name="actualoutkbitstat"/>
+ <stat_bar label="VFS 保留中の操作" name="vfspendingoperations"/>
+ </stat_view>
+ </stat_view>
+ <stat_view label="シミュレーター" name="sim">
+ <stat_bar label="時間の遅れ" name="simtimedilation"/>
+ <stat_bar label="シム FPS" name="simfps"/>
+ <stat_bar label="物理的作用 FPS" name="simphysicsfps"/>
+ <stat_view label="物理的作用の詳細" name="physicsdetail">
+ <stat_bar label="ピン留めオブジェクト" name="physicspinnedtasks"/>
+ <stat_bar label="低 LOD オブジェクト" name="physicslodtasks"/>
+ <stat_bar label="メモリ配分" name="physicsmemoryallocated"/>
+ <stat_bar label="エージェントの更新/秒" name="simagentups"/>
+ <stat_bar label="メインエージェント" name="simmainagents"/>
+ <stat_bar label="チャイルドエージェント" name="simchildagents"/>
+ <stat_bar label="オブジェクト" name="simobjects"/>
+ <stat_bar label="アクティブなオブジェクト" name="simactiveobjects"/>
+ <stat_bar label="アクティブなスクリプト" name="simactivescripts"/>
+ <stat_bar label="スクリプトイベント" name="simscripteps"/>
+ <stat_bar label="パケットイン" name="siminpps"/>
+ <stat_bar label="パケットアウト" name="simoutpps"/>
+ <stat_bar label="保留中のダウンロード" name="simpendingdownloads"/>
+ <stat_bar label="保留中のアップロード" name="simpendinguploads"/>
+ <stat_bar label="未送信バイト合計" name="simtotalunackedbytes"/>
+ </stat_view>
+ <stat_view label="時間(ms)" name="simperf">
+ <stat_bar label="フレーム時間合計" name="simframemsec"/>
+ <stat_bar label="総時間数" name="simnetmsec"/>
+ <stat_bar label="物理的作用時間" name="simsimphysicsmsec"/>
+ <stat_bar label="シミュレーション時間" name="simsimothermsec"/>
+ <stat_bar label="エージェント時間" name="simagentmsec"/>
+ <stat_bar label="イメージ時間" name="simimagesmsec"/>
+ <stat_bar label="スクリプト時間" name="simscriptmsec"/>
+ </stat_view>
+ </stat_view>
+ </container_view>
+ </scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index 880f42840c..5ce2c291be 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -1,477 +1,477 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" short_title="制作ツール" title="">
- <floater.string name="status_rotate">
- 色の付いたバンドをドラッグしてオブジェクトを回転
- </floater.string>
- <floater.string name="status_scale">
- 選択した側をクリックし、ドラッグして引き伸ばす
- </floater.string>
- <floater.string name="status_move">
- 移動:ドラッグ、コピー:Shiftを押しながらドラッグ
- </floater.string>
- <floater.string name="status_modifyland">
- 土地をクリックし、ボタンを押したまま入力して修正変更
- </floater.string>
- <floater.string name="status_camera">
- クリック・ドラッグで視界を移動
- </floater.string>
- <floater.string name="status_grab">
- 移動:ドラッグ、持ち上げ:Ctrl、回転:Ctrl+Shift
- </floater.string>
- <floater.string name="status_place">
- インワールドでクリックして作成
- </floater.string>
- <floater.string name="status_selectland">
- 土地をクリックし、ドラッグして選択
- </floater.string>
- <floater.string name="grid_screen_text">
- 画面
- </floater.string>
- <floater.string name="grid_local_text">
- ローカル
- </floater.string>
- <floater.string name="grid_world_text">
- 世界
- </floater.string>
- <floater.string name="grid_reference_text">
- 参照
- </floater.string>
- <floater.string name="grid_attachment_text">
- アタッチメント
- </floater.string>
- <button label="" label_selected="" name="button focus" tool_tip="フォーカス"/>
- <button label="" label_selected="" name="button move" tool_tip="動かす"/>
- <button label="" label_selected="" name="button edit" tool_tip="編集"/>
- <button label="" label_selected="" name="button create" tool_tip="作成"/>
- <button label="" label_selected="" name="button land" tool_tip="土地"/>
- <text name="text status">
- 移動するにはドラッグ、コピーするにはShiftキーを押しながらドラッグ
- </text>
- <radio_group name="focus_radio_group">
- <radio_item label="ズーム" name="radio zoom"/>
- <radio_item label="軌跡(Ctrl)" name="radio orbit"/>
- <radio_item label="パン(Ctrl+Shift)" name="radio pan"/>
- </radio_group>
- <radio_group name="move_radio_group">
- <radio_item label="移動" name="radio move"/>
- <radio_item label="持ち上げる(Ctrl)" name="radio lift"/>
- <radio_item label="スピン(Ctrl+Shift)" name="radio spin"/>
- </radio_group>
- <radio_group name="edit_radio_group">
- <radio_item label="移動" name="radio position"/>
- <radio_item label="回転(Ctrl)" name="radio rotate"/>
- <radio_item label="引伸ばす(Ctrl+Shift)" name="radio stretch"/>
- <radio_item label="テクスチャーを選択" name="radio select face"/>
- </radio_group>
- <check_box label="リンク部分を編集" name="checkbox edit linked parts"/>
- <check_box label="両側を引伸ばす" left="116" name="checkbox uniform"/>
- <check_box initial_value="true" label="テクスチャーを引伸ばす" name="checkbox stretch textures"/>
- <check_box initial_value="true" label="グリッドポイントにスナップ" left_delta="27" name="checkbox snap to grid"/>
- <combo_box left_delta="60" name="combobox grid mode" width="76">
- <combo_box.item label="ワールドルーラ" name="World"/>
- <combo_box.item label="ローカルルーラ" name="Local"/>
- <combo_box.item label="レファレンスルーラ" name="Reference"/>
- </combo_box>
- <button label="オプション" label_selected="オプション" name="Options..." tool_tip="グリッドオプションを設定"/>
- <button label="" label_selected="" name="ToolCube" tool_tip="キューブ"/>
- <button label="" label_selected="" name="ToolPrism" tool_tip="プリズム"/>
- <button label="" label_selected="" name="ToolPyramid" tool_tip="ピラミッド"/>
- <button label="" label_selected="" name="ToolTetrahedron" tool_tip="4面体"/>
- <button label="" label_selected="" name="ToolCylinder" tool_tip="シリンダー"/>
- <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="半円柱"/>
- <button label="" label_selected="" name="ToolCone" tool_tip="円錐"/>
- <button label="" label_selected="" name="ToolHemiCone" tool_tip="半円錐"/>
- <button label="" label_selected="" name="ToolSphere" tool_tip="球形"/>
- <button label="" label_selected="" name="ToolHemiSphere" tool_tip="半球"/>
- <button label="" label_selected="" name="ToolTorus" tool_tip="トーラス"/>
- <button label="" label_selected="" name="ToolTube" tool_tip="チューブ"/>
- <button label="" label_selected="" name="ToolRing" tool_tip="リング"/>
- <button label="" label_selected="" name="ToolTree" tool_tip="樹木"/>
- <button label="" label_selected="" name="ToolGrass" tool_tip="草地"/>
- <check_box label="選択したものを保持" name="checkbox sticky"/>
- <check_box label="選択したものをコピー" name="checkbox copy selection"/>
- <check_box initial_value="true" label="中央にコピー" name="checkbox copy centers"/>
- <check_box label="回転させてコピー" name="checkbox copy rotates"/>
- <radio_group name="land_radio_group">
- <radio_item label="土地を選択" name="radio select land"/>
- <radio_item label="ならす" name="radio flatten"/>
- <radio_item label="隆起" name="radio raise"/>
- <radio_item label="低くする" name="radio lower"/>
- <radio_item label="滑らかにする" name="radio smooth"/>
- <radio_item label="凸凹にする" name="radio noise"/>
- <radio_item label="元に戻す" name="radio revert"/>
- </radio_group>
- <text name="Bulldozer:">
- ブルドーザー:
- </text>
- <text name="Dozer Size:">
- サイズ
- </text>
- <text name="Strength:">
- 強度
- </text>
- <button label="適用" label_selected="適用" name="button apply to selection" tool_tip="選択した土地を修正"/>
- <text name="obj_count">
- オブジェクト: [COUNT]
- </text>
- <text name="prim_count">
- プリム: [COUNT]
- </text>
- <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30">
- <panel label="一般" name="General">
- <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 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="Name:">
- 名前:
- </text>
- <text name="Description:">
- 説明:
- </text>
- <text name="Creator:">
- クリエーター
- </text>
- <text name="Creator Name">
- Thrax Linden
- </text>
- <text name="Owner:">
- オーナー:
- </text>
- <text name="Owner Name">
- Thrax Linden
- </text>
- <text name="Group:">
- グループ:
- </text>
- <button label="設定..." label_selected="設定..." name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択"/>
- <name_box initial_value="ローディング..." name="Group Name Proxy"/>
- <button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると次の所有者の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/>
- <check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 役割制限を有効にするには、譲渡する必要があります。"/>
- <text name="label click action">
- クリックで:
- </text>
- <combo_box name="clickaction">
- <combo_box.item label="触れる(デフォルト)" name="Touch/grab(default)"/>
- <combo_box.item label="オブジェクトに座る" name="Sitonobject"/>
- <combo_box.item label="オブジェクトを購入" name="Buyobject"/>
- <combo_box.item label="オブジェクトへの支払い" name="Payobject"/>
- <combo_box.item label="開く" name="Open"/>
- </combo_box>
- <check_box label="販売中:" name="checkbox for sale"/>
- <combo_box name="sale type">
- <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"/>
- <check_box label="検索に表示" name="search_check" tool_tip="検索結果で、このオブジェクトを人に見せる"/>
- <panel name="perms_build">
- <text name="perm_modify">
- このオブジェクトを修正できます
- </text>
- <text name="Anyone can:">
- 全員:
- </text>
- <check_box label="コピー" name="checkbox allow everyone copy"/>
- <text name="Next owner can:">
- 次の所有者:
- </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="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
- <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>
- <panel label="形状" name="Object">
- <check_box label="ロック済み" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、構築中に意図しない編集を防ぐことができます。"/>
- <check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にする"/>
- <check_box label="臨時" name="Temporary Checkbox Ctrl" tool_tip="作成1分後にオブジェクトを削除"/>
- <check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避"/>
- <text name="label position">
- 位置(メートル)
- </text>
- <spinner label="X" name="Pos X"/>
- <spinner label="Y" name="Pos Y"/>
- <spinner label="Z" name="Pos Z"/>
- <text name="label size">
- サイズ(メートル)
- </text>
- <spinner label="X" name="Scale X"/>
- <spinner label="Y" name="Scale Y"/>
- <spinner label="Z" name="Scale Z"/>
- <text name="label rotation">
- 回転(度)
- </text>
- <spinner label="X" name="Rot X"/>
- <spinner label="Y" name="Rot Y"/>
- <spinner label="Z" name="Rot Z"/>
- <combo_box name="comboBaseType">
- <combo_box.item label="ボックス" name="Box"/>
- <combo_box.item label="シリンダー" name="Cylinder"/>
- <combo_box.item label="プリズム" name="Prism"/>
- <combo_box.item label="球形" name="Sphere"/>
- <combo_box.item label="トーラス" name="Torus"/>
- <combo_box.item label="チューブ" name="Tube"/>
- <combo_box.item label="リング" name="Ring"/>
- <combo_box.item label="スカルプト" name="Sculpted"/>
- </combo_box>
- <combo_box name="material">
- <combo_box.item label="石材" name="Stone"/>
- <combo_box.item label="金属" name="Metal"/>
- <combo_box.item label="ガラス" name="Glass"/>
- <combo_box.item label="木材" name="Wood"/>
- <combo_box.item label="肌" name="Flesh"/>
- <combo_box.item label="プラスチック" name="Plastic"/>
- <combo_box.item label="ゴム" name="Rubber"/>
- </combo_box>
- <text name="text cut">
- パスカット(始点/終点)
- </text>
- <spinner label="B" name="cut begin"/>
- <spinner label="E" name="cut end"/>
- <text name="text hollow">
- 中空(空洞)
- </text>
- <text name="text skew">
- 傾斜
- </text>
- <text name="Hollow Shape">
- 中空(空洞)の形
- </text>
- <combo_box name="hole">
- <combo_box.item label="デフォルト" name="Default"/>
- <combo_box.item label="サークル" name="Circle"/>
- <combo_box.item label="正方形" name="Square"/>
- <combo_box.item label="三角形" name="Triangle"/>
- </combo_box>
- <text name="text twist">
- ひねり(始点/終点)
- </text>
- <spinner label="B" name="Twist Begin"/>
- <spinner label="E" name="Twist End"/>
- <text name="scale_taper">
- テーパー
- </text>
- <text name="scale_hole">
- 穴寸法
- </text>
- <spinner label="X" name="Taper Scale X"/>
- <spinner label="Y" name="Taper Scale Y"/>
- <text name="text topshear">
- 上部層
- </text>
- <spinner label="X" name="Shear X"/>
- <spinner label="Y" name="Shear Y"/>
- <text name="advanced_cut">
- プロフィール・カット(始点/終点)
- </text>
- <text name="advanced_dimple">
- くぼみ(始点/終点)
- </text>
- <text name="advanced_slice">
- 切り取り(始点/終点)
- </text>
- <spinner label="B" name="Path Limit Begin"/>
- <spinner label="E" name="Path Limit End"/>
- <text name="text taper2">
- テーパー
- </text>
- <spinner label="X" name="Taper X"/>
- <spinner label="Y" name="Taper Y"/>
- <text name="text radius delta">
- 半径
- </text>
- <text name="text revolutions">
- 回転体
- </text>
- <texture_picker label="スカルプトテクスチャー" name="sculpt texture control" tool_tip="クリックして写真を選択してください。"/>
- <check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトされたプリムをX軸上で反転"/>
- <check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトされたプリムのノーマルを逆転させ、裏返しに表示"/>
- <text name="label sculpt type">
- 縫い目のタイプ
- </text>
- <combo_box name="sculpt type control">
- <combo_box.item label="(なし)" name="None"/>
- <combo_box.item label="球形" name="Sphere"/>
- <combo_box.item label="トーラス" name="Torus"/>
- <combo_box.item label="平面" name="Plane"/>
- <combo_box.item label="シリンダー" name="Cylinder"/>
- </combo_box>
- </panel>
- <panel label="特徴" name="Features">
- <text name="select_single">
- プリムを1つだけ選択して編集してください
- </text>
- <text name="edit_object">
- オブジェクトの特徴を編集:
- </text>
- <check_box label="フレキシブル・パス" name="Flexible1D Checkbox Ctrl" tool_tip="Z軸を中心とするオブジェクトの折れ曲がりを有効にする (クライアント側のみ)"/>
- <spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/>
- <spinner label="重力" label_width="72" name="FlexGravity" width="135"/>
- <spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/>
- <spinner label="風" label_width="72" name="FlexWind" width="135"/>
- <spinner label="緊張" label_width="72" name="FlexTension" width="135"/>
- <spinner label="X軸方向の力" label_width="72" name="FlexForceX" width="135"/>
- <spinner label="Y軸方向の力" label_width="72" name="FlexForceY" width="135"/>
- <spinner label="Z軸方向の力" label_width="72" name="FlexForceZ" width="135"/>
- <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光"/>
- <color_swatch label="" left_delta="74" name="colorswatch" tool_tip="カラー・ピッカーをクリックして開く"/>
- <spinner label="輝度" label_width="72" name="Light Intensity" width="135"/>
- <spinner label="半径" label_width="72" name="Light Radius" width="135"/>
- <spinner label="弱まる" label_width="72" name="Light Falloff" width="135"/>
- </panel>
- <panel label="材質" name="Texture">
- <panel.string name="string repeats per meter">
- メートルごとに繰返す
- </panel.string>
- <panel.string name="string repeats per face">
- 面ごとに繰り返す
- </panel.string>
- <texture_picker label="テクスチャー" name="texture control" tool_tip="写真をクリックして選択"/>
- <color_swatch label="色" name="colorswatch" tool_tip="カラー・ピッカーをクリックして開く"/>
- <text name="color trans">
- 透過度 %
- </text>
- <text name="glow label">
- グロー
- </text>
- <check_box label="明るさ全開" name="checkbox fullbright"/>
- <text name="tex gen">
- マッピング
- </text>
- <combo_box name="combobox texgen">
- <combo_box.item label="デフォルト" name="Default"/>
- <combo_box.item label="平面" name="Planar"/>
- </combo_box>
- <text name="label shininess">
- 輝き
- </text>
- <combo_box name="combobox shininess">
- <combo_box.item label="なし" name="None"/>
- <combo_box.item label="低" name="Low"/>
- <combo_box.item label="中" name="Medium"/>
- <combo_box.item label="高" name="High"/>
- </combo_box>
- <text name="label bumpiness">
- 凹凸
- </text>
- <combo_box name="combobox bumpiness">
- <combo_box.item label="なし" name="None"/>
- <combo_box.item label="明るさ" name="Brightness"/>
- <combo_box.item label="暗さ" name="Darkness"/>
- <combo_box.item label="木目調" name="woodgrain"/>
- <combo_box.item label="木の皮" name="bark"/>
- <combo_box.item label="レンガ" name="bricks"/>
- <combo_box.item label="チェッカー" name="checker"/>
- <combo_box.item label="コンクリート" name="concrete"/>
- <combo_box.item label="クラスティ・タイル" name="crustytile"/>
- <combo_box.item label="カットストーン" name="cutstone"/>
- <combo_box.item label="ディスク" name="discs"/>
- <combo_box.item label="砂利" name="gravel"/>
- <combo_box.item label="ペトリ" name="petridish"/>
- <combo_box.item label="羽目板" name="siding"/>
- <combo_box.item label="ストーン・タイル" name="stonetile"/>
- <combo_box.item label="しっくい" name="stucco"/>
- <combo_box.item label="吸い込み" name="suction"/>
- <combo_box.item label="織目" name="weave"/>
- </combo_box>
- <text name="tex scale">
- 面ごとに繰り返す
- </text>
- <spinner label="水平(U)" name="TexScaleU"/>
- <check_box label="反転" name="checkbox flip s"/>
- <spinner label="垂直(V)" name="TexScaleV"/>
- <check_box label="反転" name="checkbox flip t"/>
- <button label="適用" label_selected="適用" name="button apply"/>
- <text name="tex offset">
- Texture Offset
- </text>
- <spinner label="水平(U)" name="TexOffsetU"/>
- <spinner label="垂直(V)" name="TexOffsetV"/>
- </panel>
- <panel label="中身" name="Contents">
- <button label="新しいスクリプト" label_selected="新しいスクリプト" name="button new script" width="120"/>
- <button label="権限" left_delta="130" name="button permissions" width="80"/>
- </panel>
- </tab_container>
- <panel name="land info panel">
- <text name="label_parcel_info">
- 区画情報
- </text>
- <text name="label_area_price" width="200">
- 価格:[AREA]平方メートルあたりL$[PRICE]
- </text>
- <text name="label_area" width="200">
- 面積:[AREA]平方メートル
- </text>
- <button label="土地情報..." label_selected="土地情報..." name="button about land"/>
- <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有権別に区画を色分けします:
-
-緑 = あなたの土地
-アクア = あなたのグループ所有地
-赤 = 他人が所有する土地
-黄色 = 売り出し中
-紫 = オークション
-グレー = パブリック"/>
- <text name="label_parcel_modify">
- 区画の編集
- </text>
- <button label="再分割" label_selected="再分割" name="button subdivide land"/>
- <button label="統合する" label_selected="統合する" name="button join land"/>
- <text name="label_parcel_trans">
- 土地取引
- </text>
- <button label="土地を購入" label_selected="土地を購入" name="button buy land"/>
- <button label="土地を放棄" label_selected="土地を放棄" name="button abandon land"/>
- </panel>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="制作ツール" title="">
+ <floater.string name="status_rotate">
+ 色の付いたバンドをドラッグしてオブジェクトを回転
+ </floater.string>
+ <floater.string name="status_scale">
+ 選択した側をクリックし、ドラッグして引き伸ばす
+ </floater.string>
+ <floater.string name="status_move">
+ 移動:ドラッグ、コピー:Shiftを押しながらドラッグ
+ </floater.string>
+ <floater.string name="status_modifyland">
+ 土地をクリックし、ボタンを押したまま入力して修正変更
+ </floater.string>
+ <floater.string name="status_camera">
+ クリック・ドラッグで視界を移動
+ </floater.string>
+ <floater.string name="status_grab">
+ 移動:ドラッグ、持ち上げ:Ctrl、回転:Ctrl+Shift
+ </floater.string>
+ <floater.string name="status_place">
+ インワールドでクリックして作成
+ </floater.string>
+ <floater.string name="status_selectland">
+ 土地をクリックし、ドラッグして選択
+ </floater.string>
+ <floater.string name="grid_screen_text">
+ 画面
+ </floater.string>
+ <floater.string name="grid_local_text">
+ ローカル
+ </floater.string>
+ <floater.string name="grid_world_text">
+ 世界
+ </floater.string>
+ <floater.string name="grid_reference_text">
+ 参照
+ </floater.string>
+ <floater.string name="grid_attachment_text">
+ アタッチメント
+ </floater.string>
+ <button label="" label_selected="" name="button focus" tool_tip="フォーカス"/>
+ <button label="" label_selected="" name="button move" tool_tip="動かす"/>
+ <button label="" label_selected="" name="button edit" tool_tip="編集"/>
+ <button label="" label_selected="" name="button create" tool_tip="作成"/>
+ <button label="" label_selected="" name="button land" tool_tip="土地"/>
+ <text name="text status">
+ 移動するにはドラッグ、コピーするにはShiftキーを押しながらドラッグ
+ </text>
+ <radio_group name="focus_radio_group">
+ <radio_item label="ズーム" name="radio zoom"/>
+ <radio_item label="軌跡(Ctrl)" name="radio orbit"/>
+ <radio_item label="パン(Ctrl+Shift)" name="radio pan"/>
+ </radio_group>
+ <radio_group name="move_radio_group">
+ <radio_item label="移動" name="radio move"/>
+ <radio_item label="持ち上げる(Ctrl)" name="radio lift"/>
+ <radio_item label="スピン(Ctrl+Shift)" name="radio spin"/>
+ </radio_group>
+ <radio_group name="edit_radio_group">
+ <radio_item label="移動" name="radio position"/>
+ <radio_item label="回転(Ctrl)" name="radio rotate"/>
+ <radio_item label="引伸ばす(Ctrl+Shift)" name="radio stretch"/>
+ <radio_item label="テクスチャーを選択" name="radio select face"/>
+ </radio_group>
+ <check_box label="リンク部分を編集" name="checkbox edit linked parts"/>
+ <check_box label="両側を引伸ばす" left="116" name="checkbox uniform"/>
+ <check_box initial_value="true" label="テクスチャーを引伸ばす" name="checkbox stretch textures"/>
+ <check_box initial_value="true" label="グリッドポイントにスナップ" left_delta="27" name="checkbox snap to grid"/>
+ <combo_box left_delta="60" name="combobox grid mode" width="76">
+ <combo_box.item label="ワールドルーラ" name="World"/>
+ <combo_box.item label="ローカルルーラ" name="Local"/>
+ <combo_box.item label="レファレンスルーラ" name="Reference"/>
+ </combo_box>
+ <button label="オプション" label_selected="オプション" name="Options..." tool_tip="グリッドオプションを設定"/>
+ <button label="" label_selected="" name="ToolCube" tool_tip="キューブ"/>
+ <button label="" label_selected="" name="ToolPrism" tool_tip="プリズム"/>
+ <button label="" label_selected="" name="ToolPyramid" tool_tip="ピラミッド"/>
+ <button label="" label_selected="" name="ToolTetrahedron" tool_tip="4面体"/>
+ <button label="" label_selected="" name="ToolCylinder" tool_tip="シリンダー"/>
+ <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="半円柱"/>
+ <button label="" label_selected="" name="ToolCone" tool_tip="円錐"/>
+ <button label="" label_selected="" name="ToolHemiCone" tool_tip="半円錐"/>
+ <button label="" label_selected="" name="ToolSphere" tool_tip="球形"/>
+ <button label="" label_selected="" name="ToolHemiSphere" tool_tip="半球"/>
+ <button label="" label_selected="" name="ToolTorus" tool_tip="トーラス"/>
+ <button label="" label_selected="" name="ToolTube" tool_tip="チューブ"/>
+ <button label="" label_selected="" name="ToolRing" tool_tip="リング"/>
+ <button label="" label_selected="" name="ToolTree" tool_tip="樹木"/>
+ <button label="" label_selected="" name="ToolGrass" tool_tip="草地"/>
+ <check_box label="選択したものを保持" name="checkbox sticky"/>
+ <check_box label="選択したものをコピー" name="checkbox copy selection"/>
+ <check_box initial_value="true" label="中央にコピー" name="checkbox copy centers"/>
+ <check_box label="回転させてコピー" name="checkbox copy rotates"/>
+ <radio_group name="land_radio_group">
+ <radio_item label="土地を選択" name="radio select land"/>
+ <radio_item label="ならす" name="radio flatten"/>
+ <radio_item label="隆起" name="radio raise"/>
+ <radio_item label="低くする" name="radio lower"/>
+ <radio_item label="滑らかにする" name="radio smooth"/>
+ <radio_item label="凸凹にする" name="radio noise"/>
+ <radio_item label="元に戻す" name="radio revert"/>
+ </radio_group>
+ <text name="Bulldozer:">
+ ブルドーザー:
+ </text>
+ <text name="Dozer Size:">
+ サイズ
+ </text>
+ <text name="Strength:">
+ 強度
+ </text>
+ <button label="適用" label_selected="適用" name="button apply to selection" tool_tip="選択した土地を修正"/>
+ <text name="obj_count">
+ オブジェクト: [COUNT]
+ </text>
+ <text name="prim_count">
+ プリム: [COUNT]
+ </text>
+ <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30">
+ <panel label="一般" name="General">
+ <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 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="Name:">
+ 名前:
+ </text>
+ <text name="Description:">
+ 説明:
+ </text>
+ <text name="Creator:">
+ クリエーター
+ </text>
+ <text name="Creator Name">
+ Thrax Linden
+ </text>
+ <text name="Owner:">
+ オーナー:
+ </text>
+ <text name="Owner Name">
+ Thrax Linden
+ </text>
+ <text name="Group:">
+ グループ:
+ </text>
+ <button label="設定..." label_selected="設定..." name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択"/>
+ <name_box initial_value="ローディング..." name="Group Name Proxy"/>
+ <button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると次の所有者の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/>
+ <check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 役割制限を有効にするには、譲渡する必要があります。"/>
+ <text name="label click action">
+ クリックで:
+ </text>
+ <combo_box name="clickaction">
+ <combo_box.item label="触れる(デフォルト)" name="Touch/grab(default)"/>
+ <combo_box.item label="オブジェクトに座る" name="Sitonobject"/>
+ <combo_box.item label="オブジェクトを購入" name="Buyobject"/>
+ <combo_box.item label="オブジェクトへの支払い" name="Payobject"/>
+ <combo_box.item label="開く" name="Open"/>
+ </combo_box>
+ <check_box label="販売中:" name="checkbox for sale"/>
+ <combo_box name="sale type">
+ <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"/>
+ <check_box label="検索に表示" name="search_check" tool_tip="検索結果で、このオブジェクトを人に見せる"/>
+ <panel name="perms_build">
+ <text name="perm_modify">
+ このオブジェクトを修正できます
+ </text>
+ <text name="Anyone can:">
+ 全員:
+ </text>
+ <check_box label="コピー" name="checkbox allow everyone copy"/>
+ <text name="Next owner can:">
+ 次の所有者:
+ </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="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/>
+ <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>
+ <panel label="形状" name="Object">
+ <check_box label="ロック済み" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、構築中に意図しない編集を防ぐことができます。"/>
+ <check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にする"/>
+ <check_box label="臨時" name="Temporary Checkbox Ctrl" tool_tip="作成1分後にオブジェクトを削除"/>
+ <check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避"/>
+ <text name="label position">
+ 位置(メートル)
+ </text>
+ <spinner label="X" name="Pos X"/>
+ <spinner label="Y" name="Pos Y"/>
+ <spinner label="Z" name="Pos Z"/>
+ <text name="label size">
+ サイズ(メートル)
+ </text>
+ <spinner label="X" name="Scale X"/>
+ <spinner label="Y" name="Scale Y"/>
+ <spinner label="Z" name="Scale Z"/>
+ <text name="label rotation">
+ 回転(度)
+ </text>
+ <spinner label="X" name="Rot X"/>
+ <spinner label="Y" name="Rot Y"/>
+ <spinner label="Z" name="Rot Z"/>
+ <combo_box name="comboBaseType">
+ <combo_box.item label="ボックス" name="Box"/>
+ <combo_box.item label="シリンダー" name="Cylinder"/>
+ <combo_box.item label="プリズム" name="Prism"/>
+ <combo_box.item label="球形" name="Sphere"/>
+ <combo_box.item label="トーラス" name="Torus"/>
+ <combo_box.item label="チューブ" name="Tube"/>
+ <combo_box.item label="リング" name="Ring"/>
+ <combo_box.item label="スカルプト" name="Sculpted"/>
+ </combo_box>
+ <combo_box name="material">
+ <combo_box.item label="石材" name="Stone"/>
+ <combo_box.item label="金属" name="Metal"/>
+ <combo_box.item label="ガラス" name="Glass"/>
+ <combo_box.item label="木材" name="Wood"/>
+ <combo_box.item label="肌" name="Flesh"/>
+ <combo_box.item label="プラスチック" name="Plastic"/>
+ <combo_box.item label="ゴム" name="Rubber"/>
+ </combo_box>
+ <text name="text cut">
+ パスカット(始点/終点)
+ </text>
+ <spinner label="B" name="cut begin"/>
+ <spinner label="E" name="cut end"/>
+ <text name="text hollow">
+ 中空(空洞)
+ </text>
+ <text name="text skew">
+ 傾斜
+ </text>
+ <text name="Hollow Shape">
+ 中空(空洞)の形
+ </text>
+ <combo_box name="hole">
+ <combo_box.item label="デフォルト" name="Default"/>
+ <combo_box.item label="サークル" name="Circle"/>
+ <combo_box.item label="正方形" name="Square"/>
+ <combo_box.item label="三角形" name="Triangle"/>
+ </combo_box>
+ <text name="text twist">
+ ひねり(始点/終点)
+ </text>
+ <spinner label="B" name="Twist Begin"/>
+ <spinner label="E" name="Twist End"/>
+ <text name="scale_taper">
+ テーパー
+ </text>
+ <text name="scale_hole">
+ 穴寸法
+ </text>
+ <spinner label="X" name="Taper Scale X"/>
+ <spinner label="Y" name="Taper Scale Y"/>
+ <text name="text topshear">
+ 上部層
+ </text>
+ <spinner label="X" name="Shear X"/>
+ <spinner label="Y" name="Shear Y"/>
+ <text name="advanced_cut">
+ プロフィール・カット(始点/終点)
+ </text>
+ <text name="advanced_dimple">
+ くぼみ(始点/終点)
+ </text>
+ <text name="advanced_slice">
+ 切り取り(始点/終点)
+ </text>
+ <spinner label="B" name="Path Limit Begin"/>
+ <spinner label="E" name="Path Limit End"/>
+ <text name="text taper2">
+ テーパー
+ </text>
+ <spinner label="X" name="Taper X"/>
+ <spinner label="Y" name="Taper Y"/>
+ <text name="text radius delta">
+ 半径
+ </text>
+ <text name="text revolutions">
+ 回転体
+ </text>
+ <texture_picker label="スカルプトテクスチャー" name="sculpt texture control" tool_tip="クリックして写真を選択してください。"/>
+ <check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトされたプリムをX軸上で反転"/>
+ <check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトされたプリムのノーマルを逆転させ、裏返しに表示"/>
+ <text name="label sculpt type">
+ 縫い目のタイプ
+ </text>
+ <combo_box name="sculpt type control">
+ <combo_box.item label="(なし)" name="None"/>
+ <combo_box.item label="球形" name="Sphere"/>
+ <combo_box.item label="トーラス" name="Torus"/>
+ <combo_box.item label="平面" name="Plane"/>
+ <combo_box.item label="シリンダー" name="Cylinder"/>
+ </combo_box>
+ </panel>
+ <panel label="特徴" name="Features">
+ <text name="select_single">
+ プリムを1つだけ選択して編集してください
+ </text>
+ <text name="edit_object">
+ オブジェクトの特徴を編集:
+ </text>
+ <check_box label="フレキシブル・パス" name="Flexible1D Checkbox Ctrl" tool_tip="Z軸を中心とするオブジェクトの折れ曲がりを有効にする (クライアント側のみ)"/>
+ <spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/>
+ <spinner label="重力" label_width="72" name="FlexGravity" width="135"/>
+ <spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/>
+ <spinner label="風" label_width="72" name="FlexWind" width="135"/>
+ <spinner label="緊張" label_width="72" name="FlexTension" width="135"/>
+ <spinner label="X軸方向の力" label_width="72" name="FlexForceX" width="135"/>
+ <spinner label="Y軸方向の力" label_width="72" name="FlexForceY" width="135"/>
+ <spinner label="Z軸方向の力" label_width="72" name="FlexForceZ" width="135"/>
+ <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光"/>
+ <color_swatch label="" left_delta="74" name="colorswatch" tool_tip="カラー・ピッカーをクリックして開く"/>
+ <spinner label="輝度" label_width="72" name="Light Intensity" width="135"/>
+ <spinner label="半径" label_width="72" name="Light Radius" width="135"/>
+ <spinner label="弱まる" label_width="72" name="Light Falloff" width="135"/>
+ </panel>
+ <panel label="材質" name="Texture">
+ <panel.string name="string repeats per meter">
+ メートルごとに繰返す
+ </panel.string>
+ <panel.string name="string repeats per face">
+ 面ごとに繰り返す
+ </panel.string>
+ <texture_picker label="テクスチャー" name="texture control" tool_tip="写真をクリックして選択"/>
+ <color_swatch label="色" name="colorswatch" tool_tip="カラー・ピッカーをクリックして開く"/>
+ <text name="color trans">
+ 透過度 %
+ </text>
+ <text name="glow label">
+ グロー
+ </text>
+ <check_box label="明るさ全開" name="checkbox fullbright"/>
+ <text name="tex gen">
+ マッピング
+ </text>
+ <combo_box name="combobox texgen">
+ <combo_box.item label="デフォルト" name="Default"/>
+ <combo_box.item label="平面" name="Planar"/>
+ </combo_box>
+ <text name="label shininess">
+ 輝き
+ </text>
+ <combo_box name="combobox shininess">
+ <combo_box.item label="なし" name="None"/>
+ <combo_box.item label="低" name="Low"/>
+ <combo_box.item label="中" name="Medium"/>
+ <combo_box.item label="高" name="High"/>
+ </combo_box>
+ <text name="label bumpiness">
+ 凹凸
+ </text>
+ <combo_box name="combobox bumpiness">
+ <combo_box.item label="なし" name="None"/>
+ <combo_box.item label="明るさ" name="Brightness"/>
+ <combo_box.item label="暗さ" name="Darkness"/>
+ <combo_box.item label="木目調" name="woodgrain"/>
+ <combo_box.item label="木の皮" name="bark"/>
+ <combo_box.item label="レンガ" name="bricks"/>
+ <combo_box.item label="チェッカー" name="checker"/>
+ <combo_box.item label="コンクリート" name="concrete"/>
+ <combo_box.item label="クラスティ・タイル" name="crustytile"/>
+ <combo_box.item label="カットストーン" name="cutstone"/>
+ <combo_box.item label="ディスク" name="discs"/>
+ <combo_box.item label="砂利" name="gravel"/>
+ <combo_box.item label="ペトリ" name="petridish"/>
+ <combo_box.item label="羽目板" name="siding"/>
+ <combo_box.item label="ストーン・タイル" name="stonetile"/>
+ <combo_box.item label="しっくい" name="stucco"/>
+ <combo_box.item label="吸い込み" name="suction"/>
+ <combo_box.item label="織目" name="weave"/>
+ </combo_box>
+ <text name="tex scale">
+ 面ごとに繰り返す
+ </text>
+ <spinner label="水平(U)" name="TexScaleU"/>
+ <check_box label="反転" name="checkbox flip s"/>
+ <spinner label="垂直(V)" name="TexScaleV"/>
+ <check_box label="反転" name="checkbox flip t"/>
+ <button label="適用" label_selected="適用" name="button apply"/>
+ <text name="tex offset">
+ Texture Offset
+ </text>
+ <spinner label="水平(U)" name="TexOffsetU"/>
+ <spinner label="垂直(V)" name="TexOffsetV"/>
+ </panel>
+ <panel label="中身" name="Contents">
+ <button label="新しいスクリプト" label_selected="新しいスクリプト" name="button new script" width="120"/>
+ <button label="権限" left_delta="130" name="button permissions" width="80"/>
+ </panel>
+ </tab_container>
+ <panel name="land info panel">
+ <text name="label_parcel_info">
+ 区画情報
+ </text>
+ <text name="label_area_price" width="200">
+ 価格:[AREA]平方メートルあたりL$[PRICE]
+ </text>
+ <text name="label_area" width="200">
+ 面積:[AREA]平方メートル
+ </text>
+ <button label="土地情報..." label_selected="土地情報..." name="button about land"/>
+ <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有権別に区画を色分けします:
+
+緑 = あなたの土地
+アクア = あなたのグループ所有地
+赤 = 他人が所有する土地
+黄色 = 売り出し中
+紫 = オークション
+グレー = パブリック"/>
+ <text name="label_parcel_modify">
+ 区画の編集
+ </text>
+ <button label="再分割" label_selected="再分割" name="button subdivide land"/>
+ <button label="統合する" label_selected="統合する" name="button join land"/>
+ <text name="label_parcel_trans">
+ 土地取引
+ </text>
+ <button label="土地を購入" label_selected="土地を購入" name="button buy land"/>
+ <button label="土地を放棄" label_selected="土地を放棄" name="button abandon land"/>
+ </panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
index c7d2cbee04..e5b2a44521 100644
--- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!--
- Not can_close / no title to avoid window chrome
- Single instance - only have one at a time, recycle it each spawn
--->
-<floater name="inspect_avatar">
- <string name="Subtitle">
- [AGE]
- </string>
- <string name="Details">
- [ACCTTYPE]、[PAYMENTINFO]
-プロフィール: [SL_PROFILE]
- </string>
- <slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
- <button label="フレンドを追加" name="add_friend_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+ Not can_close / no title to avoid window chrome
+ Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_avatar">
+ <string name="Subtitle">
+ [AGE]
+ </string>
+ <string name="Details">
+ [ACCTTYPE]、[PAYMENTINFO]
+プロフィール: [SL_PROFILE]
+ </string>
+ <slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
+ <button label="フレンドを追加" name="add_friend_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
index b3287a1a35..ef63f3f4e0 100644
--- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
- <menu_item_call label="プロフィールを表示..." name="Show Profile"/>
- <menu_item_call label="IMを送信..." name="Send IM"/>
- <menu_item_call label="フレンドを追加..." name="Add Friend"/>
- <menu_item_call label="フレンドを削除..." name="Remove Friend"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+ <menu_item_call label="プロフィールを表示..." name="Show Profile"/>
+ <menu_item_call label="IMを送信..." name="Send IM"/>
+ <menu_item_call label="フレンドを追加..." name="Add Friend"/>
+ <menu_item_call label="フレンドを削除..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_favorites.xml b/indra/newview/skins/default/xui/ja/menu_favorites.xml
index fbaa33035f..4708b1446c 100644
--- a/indra/newview/skins/default/xui/ja/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/ja/menu_favorites.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="テレポート" name="Teleport To Landmark"/>
- <menu_item_call label="ランドマークを表示・編集" name="Landmark Open"/>
- <menu_item_call label="SLurl をコピー" name="Copy slurl"/>
- <menu_item_call label="地図に表示" name="Show On Map"/>
- <menu_item_call label="コピー" name="Landmark Copy"/>
- <menu_item_call label="貼り付け" name="Landmark Paste"/>
- <menu_item_call label="削除" name="Delete"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="テレポート" name="Teleport To Landmark"/>
+ <menu_item_call label="ランドマークを表示・編集" name="Landmark Open"/>
+ <menu_item_call label="SLurl をコピー" name="Copy slurl"/>
+ <menu_item_call label="地図に表示" name="Show On Map"/>
+ <menu_item_call label="コピー" name="Landmark Copy"/>
+ <menu_item_call label="貼り付け" name="Landmark Paste"/>
+ <menu_item_call label="削除" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_group_plus.xml b/indra/newview/skins/default/xui/ja/menu_group_plus.xml
index 762f9f616d..3787f7d645 100644
--- a/indra/newview/skins/default/xui/ja/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/ja/menu_group_plus.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
- <menu_item_call label="グループに参加..." name="item_join"/>
- <menu_item_call label="新しいグループ..." name="item_new"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+ <menu_item_call label="グループに参加..." name="item_join"/>
+ <menu_item_call label="新しいグループ..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
index e3420c0c15..3162477c5c 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml
@@ -1,76 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="購入" name="Task Buy"/>
- <menu_item_call label="開く" name="Task Open"/>
- <menu_item_call label="再生" name="Task Play"/>
- <menu_item_call label="プロパティ" name="Task Properties"/>
- <menu_item_call label="名前の変更" name="Task Rename"/>
- <menu_item_call label="削除" name="Task Remove"/>
- <menu_item_call label="ゴミ箱を空にする" name="Empty Trash"/>
- <menu_item_call label="遺失物フォルダを空にする" name="Empty Lost And Found"/>
- <menu_item_call label="新しいフォルダ" name="New Folder"/>
- <menu_item_call label="新しいスクリプト" name="New Script"/>
- <menu_item_call label="新しいノート" name="New Note"/>
- <menu_item_call label="新しいジェスチャー" name="New Gesture"/>
- <menu label="新規衣類" name="New Clothes">
- <menu_item_call label="新しいシャツ" name="New Shirt"/>
- <menu_item_call label="新しいズボン" name="New Pants"/>
- <menu_item_call label="新しい靴" name="New Shoes"/>
- <menu_item_call label="新しい靴下" name="New Socks"/>
- <menu_item_call label="新しいジャケット" name="New Jacket"/>
- <menu_item_call label="新しいスカート" name="New Skirt"/>
- <menu_item_call label="新しい手袋" name="New Gloves"/>
- <menu_item_call label="新しい下着" name="New Undershirt"/>
- <menu_item_call label="新しいパンツ" name="New Underpants"/>
- </menu>
- <menu label="新規身体部位" name="New Body Parts">
- <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
- <menu_item_call label="新しいスキン" name="New Skin"/>
- <menu_item_call label="新しい髪" name="New Hair"/>
- <menu_item_call label="新しい眼" name="New Eyes"/>
- </menu>
- <menu label="種類を変更" name="Change Type">
- <menu_item_call label="デフォルト" name="Default"/>
- <menu_item_call label="手袋" name="Gloves"/>
- <menu_item_call label="ジャケット" name="Jacket"/>
- <menu_item_call label="パンツ" name="Pants"/>
- <menu_item_call label="シェイプ" name="Shape"/>
- <menu_item_call label="靴" name="Shoes"/>
- <menu_item_call label="シャツ" name="Shirt"/>
- <menu_item_call label="スカート" name="Skirt"/>
- <menu_item_call label="下着パンツ" name="Underpants"/>
- <menu_item_call label="下着シャツ" name="Undershirt"/>
- </menu>
- <menu_item_call label="テレポート" name="Landmark Open"/>
- <menu_item_call label="開く" name="Animation Open"/>
- <menu_item_call label="開く" name="Sound Open"/>
- <menu_item_call label="アイテムを除外" name="Purge Item"/>
- <menu_item_call label="アイテムを復元" name="Restore Item"/>
- <menu_item_call label="開く" name="Open"/>
- <menu_item_call label="プロパティ" name="Properties"/>
- <menu_item_call label="名前の変更" name="Rename"/>
- <menu_item_call label="UUIDをコピー" name="Copy Asset UUID"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="アイテムを取り外す" name="Take Off Items"/>
- <menu_item_call label="服装に追加" name="Add To Outfit"/>
- <menu_item_call label="服装を置換" name="Replace Outfit"/>
- <menu_item_call label="会議チャット開始" name="Conference Chat Folder"/>
- <menu_item_call label="再生" name="Sound Play"/>
- <menu_item_call label="世界で再生" name="Animation Play"/>
- <menu_item_call label="ローカルに再生" name="Animation Audition"/>
- <menu_item_call label="インスタント・メッセージを送信" name="Send Instant Message"/>
- <menu_item_call label="テレポートを贈る..." name="Offer Teleport..."/>
- <menu_item_call label="会議チャット開始" name="Conference Chat"/>
- <menu_item_call label="アクティブ" name="Activate"/>
- <menu_item_call label="非アクティブ" name="Deactivate"/>
- <menu_item_call label="自分から取り外す" name="Detach From Yourself"/>
- <menu_item_call label="装着" name="Object Wear"/>
- <menu label="装着先" name="Attach To"/>
- <menu label="HUD装着先" name="Attach To HUD"/>
- <menu_item_call label="編集" name="Wearable Edit"/>
- <menu_item_call label="装着" name="Wearable Wear"/>
- <menu_item_call label="取り外す" name="Take Off"/>
- <menu_item_call label="--オプションなし--" name="--no options--"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="購入" name="Task Buy"/>
+ <menu_item_call label="開く" name="Task Open"/>
+ <menu_item_call label="再生" name="Task Play"/>
+ <menu_item_call label="プロパティ" name="Task Properties"/>
+ <menu_item_call label="名前の変更" name="Task Rename"/>
+ <menu_item_call label="削除" name="Task Remove"/>
+ <menu_item_call label="ゴミ箱を空にする" name="Empty Trash"/>
+ <menu_item_call label="遺失物フォルダを空にする" name="Empty Lost And Found"/>
+ <menu_item_call label="新しいフォルダ" name="New Folder"/>
+ <menu_item_call label="新しいスクリプト" name="New Script"/>
+ <menu_item_call label="新しいノート" name="New Note"/>
+ <menu_item_call label="新しいジェスチャー" name="New Gesture"/>
+ <menu label="新規衣類" name="New Clothes">
+ <menu_item_call label="新しいシャツ" name="New Shirt"/>
+ <menu_item_call label="新しいズボン" name="New Pants"/>
+ <menu_item_call label="新しい靴" name="New Shoes"/>
+ <menu_item_call label="新しい靴下" name="New Socks"/>
+ <menu_item_call label="新しいジャケット" name="New Jacket"/>
+ <menu_item_call label="新しいスカート" name="New Skirt"/>
+ <menu_item_call label="新しい手袋" name="New Gloves"/>
+ <menu_item_call label="新しい下着" name="New Undershirt"/>
+ <menu_item_call label="新しいパンツ" name="New Underpants"/>
+ </menu>
+ <menu label="新規身体部位" name="New Body Parts">
+ <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
+ <menu_item_call label="新しいスキン" name="New Skin"/>
+ <menu_item_call label="新しい髪" name="New Hair"/>
+ <menu_item_call label="新しい眼" name="New Eyes"/>
+ </menu>
+ <menu label="種類を変更" name="Change Type">
+ <menu_item_call label="デフォルト" name="Default"/>
+ <menu_item_call label="手袋" name="Gloves"/>
+ <menu_item_call label="ジャケット" name="Jacket"/>
+ <menu_item_call label="パンツ" name="Pants"/>
+ <menu_item_call label="シェイプ" name="Shape"/>
+ <menu_item_call label="靴" name="Shoes"/>
+ <menu_item_call label="シャツ" name="Shirt"/>
+ <menu_item_call label="スカート" name="Skirt"/>
+ <menu_item_call label="下着パンツ" name="Underpants"/>
+ <menu_item_call label="下着シャツ" name="Undershirt"/>
+ </menu>
+ <menu_item_call label="テレポート" name="Landmark Open"/>
+ <menu_item_call label="開く" name="Animation Open"/>
+ <menu_item_call label="開く" name="Sound Open"/>
+ <menu_item_call label="アイテムを除外" name="Purge Item"/>
+ <menu_item_call label="アイテムを復元" name="Restore Item"/>
+ <menu_item_call label="開く" name="Open"/>
+ <menu_item_call label="プロパティ" name="Properties"/>
+ <menu_item_call label="名前の変更" name="Rename"/>
+ <menu_item_call label="UUIDをコピー" name="Copy Asset UUID"/>
+ <menu_item_call label="コピー" name="Copy"/>
+ <menu_item_call label="貼り付け" name="Paste"/>
+ <menu_item_call label="削除" name="Delete"/>
+ <menu_item_call label="アイテムを取り外す" name="Take Off Items"/>
+ <menu_item_call label="服装に追加" name="Add To Outfit"/>
+ <menu_item_call label="服装を置換" name="Replace Outfit"/>
+ <menu_item_call label="会議チャット開始" name="Conference Chat Folder"/>
+ <menu_item_call label="再生" name="Sound Play"/>
+ <menu_item_call label="世界で再生" name="Animation Play"/>
+ <menu_item_call label="ローカルに再生" name="Animation Audition"/>
+ <menu_item_call label="インスタント・メッセージを送信" name="Send Instant Message"/>
+ <menu_item_call label="テレポートを贈る..." name="Offer Teleport..."/>
+ <menu_item_call label="会議チャット開始" name="Conference Chat"/>
+ <menu_item_call label="アクティブ" name="Activate"/>
+ <menu_item_call label="非アクティブ" name="Deactivate"/>
+ <menu_item_call label="自分から取り外す" name="Detach From Yourself"/>
+ <menu_item_call label="装着" name="Object Wear"/>
+ <menu label="装着先" name="Attach To"/>
+ <menu label="HUD装着先" name="Attach To HUD"/>
+ <menu_item_call label="編集" name="Wearable Edit"/>
+ <menu_item_call label="装着" name="Wearable Wear"/>
+ <menu_item_call label="取り外す" name="Take Off"/>
+ <menu_item_call label="--オプションなし--" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml
index 778eb72e70..de35bf2401 100644
--- a/indra/newview/skins/default/xui/ja/menu_landmark.xml
+++ b/indra/newview/skins/default/xui/ja/menu_landmark.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
- <menu_item_call label="SLurl をコピー" name="copy"/>
- <menu_item_call label="削除" name="delete"/>
- <menu_item_call label="ピックを作成" name="pick"/>
-</toggleable_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+ <menu_item_call label="SLurl をコピー" name="copy"/>
+ <menu_item_call label="削除" name="delete"/>
+ <menu_item_call label="ピックを作成" name="pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml
index f080647be2..e1bddd872d 100644
--- a/indra/newview/skins/default/xui/ja/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="popup">
- <menu_item_call label="ズーム(近)" name="Zoom Close"/>
- <menu_item_call label="ズーム(中)" name="Zoom Medium"/>
- <menu_item_call label="ズーム(遠)" name="Zoom Far"/>
- <menu_item_call label="追跡をやめる" name="Stop Tracking"/>
- <menu_item_call label="世界地図" name="World Map"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="popup">
+ <menu_item_call label="ズーム(近)" name="Zoom Close"/>
+ <menu_item_call label="ズーム(中)" name="Zoom Medium"/>
+ <menu_item_call label="ズーム(遠)" name="Zoom Far"/>
+ <menu_item_call label="追跡をやめる" name="Stop Tracking"/>
+ <menu_item_call label="世界地図" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml
index e10c436208..4c9874c645 100644
--- a/indra/newview/skins/default/xui/ja/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/ja/menu_navbar.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
- <menu_item_check label="座標を表示" name="Show Coordinates"/>
- <menu_item_call label="ランドマーク" name="Landmark"/>
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="削除" name="Delete"/>
- <menu_item_call label="すべて選択" name="Select All"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+ <menu_item_check label="座標を表示" name="Show Coordinates"/>
+ <menu_item_call label="ランドマーク" name="Landmark"/>
+ <menu_item_call label="切り取り" name="Cut"/>
+ <menu_item_call label="コピー" name="Copy"/>
+ <menu_item_call label="貼り付け" name="Paste"/>
+ <menu_item_call label="削除" name="Delete"/>
+ <menu_item_call label="すべて選択" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_picks.xml b/indra/newview/skins/default/xui/ja/menu_picks.xml
index a0880bd555..011d3d2526 100644
--- a/indra/newview/skins/default/xui/ja/menu_picks.xml
+++ b/indra/newview/skins/default/xui/ja/menu_picks.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
- <menu_item_call label="情報" name="pick_info"/>
- <menu_item_call label="編集" name="pick_edit"/>
- <menu_item_call label="テレポート" name="pick_teleport"/>
- <menu_item_call label="地図" name="pick_map"/>
- <menu_item_call label="削除" name="pick_delete"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+ <menu_item_call label="情報" name="pick_info"/>
+ <menu_item_call label="編集" name="pick_edit"/>
+ <menu_item_call label="テレポート" name="pick_teleport"/>
+ <menu_item_call label="地図" name="pick_map"/>
+ <menu_item_call label="削除" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_place.xml b/indra/newview/skins/default/xui/ja/menu_place.xml
index 01095387b4..a9f05e126d 100644
--- a/indra/newview/skins/default/xui/ja/menu_place.xml
+++ b/indra/newview/skins/default/xui/ja/menu_place.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
- <menu_item_call label="ランドマークを作成" name="landmark"/>
- <menu_item_call label="ピックを作成" name="pick"/>
- <menu_item_call label="入場許可を購入" name="pass"/>
- <menu_item_call label="編集" name="edit"/>
-</toggleable_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+ <menu_item_call label="ランドマークを作成" name="landmark"/>
+ <menu_item_call label="ピックを作成" name="pick"/>
+ <menu_item_call label="入場許可を購入" name="pass"/>
+ <menu_item_call label="編集" name="edit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml
index 1be2954f3f..2e06c53494 100644
--- a/indra/newview/skins/default/xui/ja/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="URLについて" name="about_url"/>
- <menu_item_call label="URLへテレポートする" name="teleport_to_url"/>
- <menu_item_call label="地図" name="show_on_map"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+ <menu_item_call label="URLについて" name="about_url"/>
+ <menu_item_call label="URLへテレポートする" name="teleport_to_url"/>
+ <menu_item_call label="地図" name="show_on_map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
index 57e7931ce6..9c5eb64cb8 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
- <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="住人のプロフィールを表示" name="show_agent"/>
+ <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
+ <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml
index 2970256cfe..2c453922d0 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_group.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_group.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="グループ情報を表示" name="show_group"/>
- <menu_item_call label="グループをクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="グループ情報を表示" name="show_group"/>
+ <menu_item_call label="グループをクリップボードにコピー" name="url_copy_label"/>
+ <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml
index 8abb5cead6..c2f4f24db6 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_http.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="Web ページを開く" name="url_open"/>
- <menu_item_call label="インターネットブラウザで開く" name="url_open_internal"/>
- <menu_item_call label="外部ブラウザで開く" name="url_open_external"/>
- <menu_item_call label="URLをクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="Web ページを開く" name="url_open"/>
+ <menu_item_call label="インターネットブラウザで開く" name="url_open_internal"/>
+ <menu_item_call label="外部ブラウザで開く" name="url_open_external"/>
+ <menu_item_call label="URLをクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
index 1746e163b6..b478d9d6c0 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
- <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
- <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
- <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="オブジェクトの情報を表示" name="show_object"/>
+ <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
+ <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
+ <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml
index 05639f086e..38e31de3f7 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="区画情報を表示" name="show_parcel"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="区画情報を表示" name="show_parcel"/>
+ <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml
index e66da8e9b9..d280ecf689 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="場所の情報を表示" name="show_place"/>
- <menu_item_call label="現地にテレポート" name="teleport_to_location"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="場所の情報を表示" name="show_place"/>
+ <menu_item_call label="現地にテレポート" name="teleport_to_location"/>
+ <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml
index 0239e0e0e6..355f6eb018 100644
--- a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml
+++ b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
- <menu_item_call label="この場所にテレポート" name="teleport"/>
- <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+ <menu_item_call label="この場所にテレポート" name="teleport"/>
+ <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index ce50a33f1c..9962bedaf2 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -1,2685 +1,2685 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
- <global name="skipnexttime">
- 今後は表示しない
- </global>
- <global name="alwayschoose">
- 常にこのオプションを選択
- </global>
- <global name="implicitclosebutton">
- 閉じる
- </global>
- <template name="okbutton">
- <form>
- <button name="OK" text="$yestext"/>
- </form>
- </template>
- <template name="okignore"/>
- <template name="okcancelbuttons">
- <form>
- <button name="Cancel" text="$notext"/>
- </form>
- </template>
- <template name="okcancelignore"/>
- <template name="okhelpbuttons">
- <form>
- <button name="Help" text="$helptext"/>
- </form>
- </template>
- <template name="yesnocancelbuttons">
- <form>
- <button name="Yes" text="$yestext"/>
- <button name="No" text="$notext"/>
- </form>
- </template>
- <notification functor="GenericAcknowledge" label="不明な警告メッセージ" name="MissingAlert">
- あなたの [APP_NAME] のバージョンでは今受け取った警告メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。
-
-エラー詳細: 「[_NAME]」という警告は notifications.xml にありませんでした。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="FloaterNotFound">
- フロータ・エラー:下記のコントロールが見つかりませんでした:
-[CONTROLS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="TutorialNotFound">
- 現在利用可能なチュートリアルはありません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="GenericAlert">
- [MESSAGE]
- </notification>
- <notification name="GenericAlertYesCancel">
- [MESSAGE]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/>
- </notification>
- <notification name="BadInstallation">
- [APP_NAME] をアップデート中にエラーが発生しました。 最新バージョンをダウンロードしてください。 http://get.secondlife.com
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LoginFailedNoNetwork">
- [SECOND_LIFE_GRID] に接続できませんでした。
-「[DIAGNOSTIC]」
-インターネット接続が正常かご確認ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MessageTemplateNotFound">
- メッセージテンプレート [PATH] がありませんでした。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="WearableSave">
- 現在の衣服/ボディーパーツの変更を保存しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="CompileQueueSaveText">
- 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。 [REASON] 後でもう一度試してください。
- </notification>
- <notification name="CompileQueueSaveBytecode">
- 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。 [REASON]後でもう一度試してください。
- </notification>
- <notification name="WriteAnimationFail">
- アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
- </notification>
- <notification name="UploadAuctionSnapshotFail">
- 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 [REASON]
- </notification>
- <notification name="UnableToViewContentsMoreThanOne">
- 一度に複数のアイテムのコンテンツは表示できません。
-選択するアイテムを1つだけにして、もう一度試してください。
- </notification>
- <notification name="SaveClothingBodyChanges">
- 衣服/身体部位に対する変更をすべて保存しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
- </notification>
- <notification name="GrantModifyRights">
- 他の住人に変更権限を与えると、その人はあなたが所有している
-すべてのオブジェクトを変更、削除、または取得することができるようになります。この許可を与えるときは細心の注意を払ってください。
-[FIRST_NAME] [LAST_NAME]に対して変更権限を与えますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="GrantModifyRightsMultiple">
- 変更権限を与えると、その人はあなたが作成した全てのオブジェクトを変更することができます。
-この許可を与えるときには細心の注意を払ってください。
-選択した住人に変更権限を与えますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="RevokeModifyRights">
- [FIRST_NAME] [LAST_NAME]に対して変更権限を取り消しますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="RevokeModifyRightsMultiple">
- 選択した住人から変更権限を取り下げますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="UnableToCreateGroup">
- グループを作成できません。
-[MESSAGE]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PanelGroupApply">
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="変更を無視" yestext="変更を適用"/>
- </notification>
- <notification name="MustSpecifyGroupNoticeSubject">
- グループ通知の送信には、件名の記入が必要です。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AddGroupOwnerWarning">
- あなたは [ROLE_NAME]の役割にメンバーを与えようとしています。
-任命されたメンバーが自ら退任しない限り、
-彼らを役柄から削除できません。
-操作を続行しますか?
- <usetemplate ignoretext="グループオーナーを新しく追加する前に確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AssignDangerousActionWarning">
- あなたは[ROLE_NAME]に [ACTION_NAME]の能力を
-与えようとしています。
-
- *警告*
-この能力を持つ役割のメンバーは、
-自分と他のメンバーに現在より強力な権限を割り当て、
-自分をオーナーとほぼ同様の立場に
-任命することもできるようになります。 この行為の意味をよく理解してから
-実行してください。
-
-この能力を[ROLE_NAME]に割り当てますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="AssignDangerousAbilityWarning">
- あなたは[ROLE_NAME]に [ACTION_NAME]の能力を
-与えようとしています。
-
- *警告*
-この能力をもつ役割のメンバーは、
-自分と他のメンバーにすべての能力を割り当て、
-自分をオーナーとほぼ同様の立場に任命できます。
-
-この能力を[ROLE_NAME]に割り当てますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="JoinGroupCanAfford">
- このグループに参加するには、L$[COST]かかります。
-続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/>
- </notification>
- <notification name="JoinGroupCannotAfford">
- このグループに加入するには、L$[COST]必要です。
-L$が不足しているのでこのグループに参加することができません。
- </notification>
- <notification name="CreateGroupCost">
- このグループを作るには L$100 かかります。
-一人ではグループにならないので、永久に削除されてしまいます。
-48時間以内にメンバーを勧誘し入会してもらってください。
- <usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/>
- </notification>
- <notification name="LandBuyPass">
- L$[COST]で [TIME]時間この土地[PARCEL_NAME]に入ることができます。
-入場許可を購入しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SalePriceRestriction">
- 不特定の人に売却する場合には、
-売却価格はL$0以上に設定する必要があります。
-売却価格をL$0に設定する場合は、
-売却する個人を選択してください。
- </notification>
- <notification name="ConfirmLandSaleChange">
- 選択された[LAND_SIZE]平方メートルの土地は、売り出し中に設定されています。
-売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmLandSaleToAnyoneChange">
- 注:「誰にでも売却する」をクリックすると、
-あなたの土地は[SECOND_LIFE] のコミュニティのどこからでも
-(この地域にないコミュニティを含む)購入できるようになります。
-
-選択された[LAND_SIZE]平方メートルの土地は、
-売り出し中に設定されています。
-売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsDeededToGroup">
- この区画のグループ[NAME]共有のすべてのオブジェクトを、以前のオーナーの持ち物に戻そうとしています。
-操作を続行しますか?
-
-*警告* これにより、
-グループに譲渡された譲渡不可能なオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedByUser">
- この区画で、
-住人[NAME]が所有する全てのオブジェクトを
-彼らの持ち物に本当に返却してもよいですか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsOwnedBySelf">
- この土地区画内にある、あなたが所有するすべてのオブジェクトを、
-あなたの持ち物に戻そうとしています。操作を続行しますか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedBySelf">
- この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、
-それぞれのオーナーの持ち物に戻そうとしています。
-操作を続行しますか?
-グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。
-
-*警告* これにより、
-グループに譲渡された譲渡不可能なオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByUser">
- この土地区画内にある、
-[NAME]以外による所有のオブジェクトをすべてそれぞれのオーナーの持ち物に返却しようとしています。
-操作を続行しますか?グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。
-
-*警告* これにより、
-グループに譲渡された譲渡不可能なオブジェクトは削除されます!
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnAllTopObjects">
- 全てのリストされたオブジェクトを所有者に本当に返却しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DisableAllTopObjects">
- この地域内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ReturnObjectsNotOwnedByGroup">
- この土地の区画上のオブジェクトのうち、グループ[NAME]
-との間で共有していないオブジェクトをオーナーに返却しますか?
-
-オブジェクト: [N]
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="UnableToDisableOutsideScripts">
- スクリプトを無効にできません。
-この地域全体が「ダメージ有効」に設定されています。
-武器を使用するにはスクリプトの実行を許可する必要があります。
- </notification>
- <notification name="MustBeInParcel">
- 着地点を設定するには、この区画の内側に
-立ってください。
- </notification>
- <notification name="PromptRecipientEmail">
- 受信者の有効なEメールアドレスを入力してください。
- </notification>
- <notification name="PromptSelfEmail">
- あなたのEメール・アドレスを入力してください。
- </notification>
- <notification name="PromptMissingSubjMsg">
- デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ErrorProcessingSnapshot">
- スナップショット・データの処理エラー
- </notification>
- <notification name="ErrorEncodingSnapshot">
- スナップショットのエンコード化でエラーが出ました!
- </notification>
- <notification name="ErrorUploadingPostcard">
- 次の理由で、スナップショットの送信時に問題が起こりました: [REASON]
- </notification>
- <notification name="ErrorUploadingReportScreenshot">
- 次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON]
- </notification>
- <notification name="MustAgreeToLogIn">
- [SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。
- </notification>
- <notification name="CouldNotPutOnOutfit">
- 服装を装着できません。
-服装フォルダに衣服、身体部位、付属品がありません。
- </notification>
- <notification name="CannotWearTrash">
- ゴミ箱にある服やボディーパーツの着用はできません。
- </notification>
- <notification name="CannotWearInfoNotComplete">
- まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。
- </notification>
- <notification name="MustHaveAccountToLogIn">
- おっと! 記入漏れがありますよ。
-アバターのファーストネームとラストネームの両方を入力する必要があります。
-
-[SECOND_LIFE]に入るには、アカウントが必要です。 アカウントを作成しますか?
- <url name="url">
- https://join.secondlife.com/index.php?lang=ja-JP
- </url>
- <usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/>
- </notification>
- <notification name="AddClassified">
- 検索ディレクトリの「クラシファイド」セクションに、
-クラシファイド広告が1週間掲載されます。
-広告を記入後、「公開」をクリックし、ディレクトリに
-追加します。
-「公開」をクリックすると、支払金額を尋ねられます。
-多く払うほど、広告がクラシファイド・リストとキーワード検索
-の上位に表示されます。
- <usetemplate ignoretext="新規クラシファイド広告作成方法" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeleteClassified">
- クラシファイド広告[NAME]の削除をしますか?
-支払い済みの料金は返金されません。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ClassifiedSave">
- クラシファイド広告[NAME]への変更を保存しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="DeleteAvatarPick">
- ピック[PICK]を削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="PromptGoToEventsPage">
- [SECOND_LIFE]イベント・ウェブ・ページに移動しますか?
- <url name="url">
- http://jp.secondlife.com/events/
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SelectProposalToView">
- 表示する提案を選択してください。
- </notification>
- <notification name="SelectHistoryItemToView">
- 表示する履歴アイテムを選択してください。
- </notification>
- <notification name="ResetShowNextTimeDialogs">
- これらのポップアップ全てを再度有効化しますか?(以前「今後は表示しない」と指定しています)
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SkipShowNextTimeDialogs">
- スキップ可能なポップアップ全てを無効化しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CacheWillClear">
- [APP_NAME]の再起動後にキャッシュがクリアされます。
- </notification>
- <notification name="CacheWillBeMoved">
- [APP_NAME]の再起動後にキャッシュが移動されます。
-注意:これによりキャッシュがクリアされます。
- </notification>
- <notification name="ChangeConnectionPort">
- ポートの設定は、[APP_NAME]の再起動後に有効になります。
- </notification>
- <notification name="ChangeSkin">
- 新しいスキンは[APP_NAME]を再起動すると現れます
- </notification>
- <notification name="GoToAuctionPage">
- [SECOND_LIFE]ウェブ・ページに移動し、 入札あるいはオークションの詳細を確認しますか?
- <url name="url">
- http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SaveChanges">
- 変更を保存しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
- </notification>
- <notification name="GestureSaveFailedTooManySteps">
- ジェスチャーの保存に失敗しました。
-ステップが多すぎます。
-ステップをいくつか削除してから再保存してください
- </notification>
- <notification name="GestureSaveFailedTryAgain">
- ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。
- </notification>
- <notification name="GestureSaveFailedObjectNotFound">
- ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="GestureSaveFailedReason">
- 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="SaveNotecardFailObjectNotFound">
- ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="SaveNotecardFailReason">
- 次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="ScriptCannotUndo">
- あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。
-サーバーの最新保存バージョンをロードしますか?
-(**警告**:この操作後元に戻すことはできません)
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="SaveScriptFailReason">
- 次の理由で、スクリプトの保存に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="SaveScriptFailObjectNotFound">
- スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。
-オブジェクトは範囲外か、または削除されているかもしれません。
- </notification>
- <notification name="SaveBytecodeFailReason">
- 次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
- </notification>
- <notification name="StartRegionEmpty">
- ログイン位置が不明です。
-ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CouldNotStartStopScript">
- スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
- </notification>
- <notification name="CannotDownloadFile">
- ファイルをダウンロードできません。
- </notification>
- <notification name="CannotWriteFile">
- ファイル[[FILE]]を書き込めません。
- </notification>
- <notification name="UnsupportedHardware">
- 警告: お使いのシステムは [APP_NAME] の必要最低限の動作環境を満たしていません。 このまま [APP_NAME] を使用すると、パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
-
-最低動作環境
-[_URL] で詳しい情報を確認しますか?
- <url name="url" option="0">
- http://secondlife.com/support/sysreqs.php?lang=ja
- </url>
- <usetemplate ignoretext="使用しているコンピューターのハードウェアがサポートされていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="UnknownGPU">
- お使いのシステムには、現在 [APP_NAME] が認識できないグラフィックカードが搭載されています。
-[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 [APP_NAME] は正常に実行される可能性が高いですが、表示設定を調整する必要があるかもしれません。
-(環境設定 &gt; 表示)
- <form name="form">
- <ignore name="ignore" text="使用中のグラフックカードが認識されませんでした"/>
- </form>
- </notification>
- <notification name="DisplaySettingsNoShaders">
- [APP_NAME] は、
-グラフィック・ドライバの初期化中にクラッシュしました。
-一般的なドライバ・エラーを回避するため、「品質およびパフォーマンス」は「低」に設定されます。
-これにより、いくつかのグラフィックス機能は無効になります。
-グラフィックカード・ドライバのアップデートをお勧めします。
-「グラフィックの品質」は「環境設定」>「表示」から上げることができます。
- </notification>
- <notification name="RegionNoTerraforming">
- この地域[REGION] は、テラフォーミングができません。
- </notification>
- <notification name="CannotCopyWarning">
- あなたはこのアイテムのコピーを
-許されていないので、人にあげると
-持ち物から失われます。 本当に
-これをあげたいですか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CannotGiveItem">
- 持ち物のアイテムを渡せません。
- </notification>
- <notification name="TransactionCancelled">
- 取引がキャンセルされました。
- </notification>
- <notification name="TooManyItems">
- 一度のインベントリ交換で、42以上のアイテムは送れません。
- </notification>
- <notification name="NoItems">
- 選択したアイテムを譲渡できる権限がありません。
- </notification>
- <notification name="CannotCopyCountItems">
- あなたは選択したアイテムの[COUNT]のコピーを
-許されていません。
-これらのアイテムはあなたの持ち物から失われます。
-本当にアイテムをあげたいですか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CannotGiveCategory">
- 選択したフォルダを譲渡できる権限がありません
- </notification>
- <notification name="FreezeAvatar">
- このアバターをフリーズしますか?
-アバターは一時的に動けなくなり、
-チャットなど、この世界に対する関わりを持つことができなくなります。
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/>
- </notification>
- <notification name="FreezeAvatarFullname">
- [AVATAR_NAME]をフリーズしますか?
-フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/>
- </notification>
- <notification name="EjectAvatarFullname">
- あなたの土地から[AVATAR_NAME]を追放しますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarNoBan">
- このアバターをあなたの土地から追放しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
- </notification>
- <notification name="EjectAvatarFullnameNoBan">
- [AVATAR_NAME] をあなたの土地から追放しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
- </notification>
- <notification name="AcquireErrorTooManyObjects">
- 取得エラー:選択したオブジェクトの数が多すぎます。
- </notification>
- <notification name="AcquireErrorObjectSpan">
- 取得エラー:
-オブジェクトが複数の地域にまたがって存在しています。
-取得するオブジェクトは、
-すべて同じ地域内に移動させてください。
- </notification>
- <notification name="PromptGoToCurrencyPage">
- [EXTRA]
-
-[_URL] でリンデンドル購入に関する情報を確認しますか?
- <url name="url">
- http://jp.secondlife.com/currency/
- </url>
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="UnableToLinkObjects">
- これらの[COUNT]オブジェクトをリンクできません。
-最大[MAX]オブジェクトをリンクすることができます。
- </notification>
- <notification name="CannotLinkIncompleteSet">
- セットとして揃っているオブジェクトのみリンクできます。複数の
-オブジェクトを選択してください。
- </notification>
- <notification name="CannotLinkModify">
- すべてのオブジェクトに対する修正許可があなたにないため、
-リンクできません。
-
-オブジェクトがすべてロックされておらず、あなたのものであることを確認してください。
- </notification>
- <notification name="CannotLinkDifferentOwners">
- 所有者が異なるため、すべてのオブジェクトを
-リンクできません。
-
-自分が所有しているオブジェクトだけを選択してください。
- </notification>
- <notification name="NoFileExtension">
- ファイル「[FILE]」の拡張子が無効です。
-
-このファイルの拡張子が正しいかどうかを確認してください。
- </notification>
- <notification name="InvalidFileExtension">
- ファイル拡張子[EXTENSION]は無効です
-正しい拡張子:[VALIDS]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotUploadSoundFile">
- 読み込みのためにアップロードされたサウンドファイルを開けません:
-[FILE]
- </notification>
- <notification name="SoundFileNotRIFF">
- ファイルがRIFF WAVEファイルとして認識されません:
-[FILE]
- </notification>
- <notification name="SoundFileNotPCM">
- ファイルがPCM WAVEオーディオ・ファイルとして認識されません:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidChannelCount">
- ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidSampleRate">
- ファイルのサンプル・レートがサポート外です(44.1kを指定する必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidWordSize">
- ファイルのワード・サイズがサポート外です(8または16ビットを指定する必要があります):
-[FILE]
- </notification>
- <notification name="SoundFileInvalidHeader">
- WAVヘッダーにデータ・チャンクが見つかりません:
-[FILE]
- </notification>
- <notification name="SoundFileInvalidTooLong">
- オーディオ・ファイルが長すぎます。(最大10秒):
-[FILE]
- </notification>
- <notification name="ProblemWithFile">
- ファイル[FILE]にエラーがあります。
-
-[ERROR]
- </notification>
- <notification name="CannotOpenTemporarySoundFile">
- 書き込み用の一時圧縮サウンド・ファイルを開くことができません:[FILE]
- </notification>
- <notification name="UnknownVorbisEncodeFailure">
- 未知のVorbis 暗号化に失敗: [FILE]
- </notification>
- <notification name="CannotEncodeFile">
- 次のファイルのエンコードができません: [FILE]
- </notification>
- <notification name="CorruptResourceFile">
- 破損したリソースファイル: [FILE]
- </notification>
- <notification name="UnknownResourceFileVersion">
- 未知のlindenリソースファイルのバージョン: [FILE]
- </notification>
- <notification name="UnableToCreateOutputFile">
- 服装ファイルを作成できません: [FILE]
- </notification>
- <notification name="DoNotSupportBulkAnimationUpload">
- 現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。
- </notification>
- <notification name="CannotUploadReason">
- 次の理由で、[FILE] をアップロードできません: [REASON]
-あとでもう一度試してください。
- </notification>
- <notification name="LandmarkCreated">
- 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。
- </notification>
- <notification name="CannotCreateLandmarkNotOwner">
- 土地の所有者が許可していないため、
-ランドマークを作成することはできません。
- </notification>
- <notification name="CannotRecompileSelectObjectsNoScripts">
- 再編集は不可能です。
-スクリプト化されたオブジェクトを選択してください。
- </notification>
- <notification name="CannotRecompileSelectObjectsNoPermission">
- 「再編集」は不可能です。
-
-変更修正権限のある
-スクリプト化されたオブジェクトを選択してください。
- </notification>
- <notification name="CannotResetSelectObjectsNoScripts">
- 「再設定」を行うことができません。
-
-スクリプト化されたオブジェクトを選択してください。
- </notification>
- <notification name="CannotResetSelectObjectsNoPermission">
- 「再設定」を行うことができません。
-
-変更修正権限のある
-スクリプト化されたオブジェクトを選択してください。
- </notification>
- <notification name="CannotSetRunningSelectObjectsNoScripts">
- スクリプトの「実行」の設定ができません。
-
-スクリプト化されたオブジェクトを選択してください。
- </notification>
- <notification name="CannotSetRunningNotSelectObjectsNoScripts">
- スクリプトを「実行しない」に設定できません。
-
-スクリプト化されたオブジェクトを選択してください。
- </notification>
- <notification name="NoFrontmostFloater">
- 保存すべきfrontmostフロータがありません。
- </notification>
- <notification name="SeachFilteredOnShortWords">
- 指定した検索クエリは変更され、短すぎる語句は取り除かれています。
-
-検索語句: [FINALQUERY]
- </notification>
- <notification name="SeachFilteredOnShortWordsEmpty">
- 指定した検索語句が短すぎたため、検索は行われませんでした。
- </notification>
- <notification name="CouldNotTeleportReason">
- テレポートに失敗しました。
-[REASON]
- </notification>
- <notification name="invalid_tport">
- テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
- </notification>
- <notification name="invalid_region_handoff">
- リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
- </notification>
- <notification name="blocked_tport">
- 申し訳ございません。テレポートは現在、ブロックされています。もう少し後でやり直してください。
-やり直してもテレポートできない場合は、いったんログアウトし、再度ログインして問題を解決してください。
- </notification>
- <notification name="nolandmark_tport">
- 残念ながら、システムはランドマーク目的地を探せませんでした。
- </notification>
- <notification name="timeout_tport">
- 申し訳ございません。システムはテレポート接続を完了できませんでした。
-もう少し後でやり直してください。
- </notification>
- <notification name="noaccess_tport">
- 残念ながら、そのテレポート目的地へのアクセスがありません。
- </notification>
- <notification name="missing_attach_tport">
- 添付物は、まだ到着していません。あと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてからテレポートをやり直してださい。
- </notification>
- <notification name="too_many_uploads_tport">
- この地域の資産キューが現在込み合っているため、テレポート・リクエストを時間通りに処理することが難しい状況です。
-数分後にやり直すか、または混雑していない他の地域をお試しください。
- </notification>
- <notification name="expired_tport">
- 申し訳ございません。システムはテレポート・リクエストを時間どおりに完了できませんでした。数分後にやり直してください。
- </notification>
- <notification name="expired_region_handoff">
- 申し訳ございません。システムは地域間の移動を時間どおりに完了できませんでした。
-数分後にやり直してください。
- </notification>
- <notification name="no_host">
- テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。
- </notification>
- <notification name="no_inventory_host">
- 持ち物システムは現在利用できません。
- </notification>
- <notification name="CannotSetLandOwnerNothingSelected">
- 土地所有者設定ができません:
-区画が選定されていません。
- </notification>
- <notification name="CannotSetLandOwnerMultipleRegions">
- 複数の地域が選択されたため、
-土地の所有権を取得できません。
-選択する面積を小さくして、もう一度試してください。
- </notification>
- <notification name="ForceOwnerAuctionWarning">
- この区画はオークションに出品されています。
-区画の所有権を取得するとオークションが無効になり、
-入札が開始していたら不満に思う住人が出てくるかもしれません。
-所有権を取得しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotContentifyNothingSelected">
- コンテンツ化は不可能です:
-区画が選定されていません。
- </notification>
- <notification name="CannotContentifyNoRegion">
- コンテンツ化は不可能です:
-土地が選択されていません。
- </notification>
- <notification name="CannotReleaseLandNothingSelected">
- 土地を破棄することができません:
-区画が選定されていません。
- </notification>
- <notification name="CannotReleaseLandNoRegion">
- 土地を破棄できません:
-地域が見つかりません。
- </notification>
- <notification name="CannotBuyLandNothingSelected">
- 土地を購入できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotBuyLandNoRegion">
- 土地を購入できません:
-この土地がある地域を見つけることができません
- </notification>
- <notification name="CannotCloseFloaterBuyLand">
- [APP_NAME]による、
-この取引の見積りが完了するまで「土地を購入」ウィンドウを閉じることはできません。
- </notification>
- <notification name="CannotDeedLandNothingSelected">
- 土地を譲渡できません:
-区画が選定されていません。
- </notification>
- <notification name="CannotDeedLandNoGroup">
- 土地を譲渡できません:
-グループが選択されていません。
- </notification>
- <notification name="CannotDeedLandNoRegion">
- 土地を譲渡できません:
-この土地がある地域が見つかりません。
- </notification>
- <notification name="CannotDeedLandMultipleSelected">
- 土地を譲渡できません:
-複数の区画が選択されています。
-
-これより1つの区画を選択してください。
- </notification>
- <notification name="ParcelCanPlayMedia">
- ここではストリーミング・メディア再生が可能です。
-メディアのストリーミングには、高速なインターネット接続環境が必要です。
-
-利用可能になったら再生しますか?
-(このオプションは、「環境設定」>「音声とビデオ」で後からでも変更できます)
- <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアを再生"/>
- </notification>
- <notification name="CannotDeedLandWaitingForServer">
- 土地を譲渡できません:
-サーバーからの所有権情報を待っています。
-
-再度、試みてください。
- </notification>
- <notification name="CannotDeedLandNoTransfer">
- 土地を譲渡できません:
-この地域 [REGION] では土地の譲渡が許されていません。
- </notification>
- <notification name="CannotReleaseLandWatingForServer">
- 土地を破棄できません:
-サーバーが区画情報を更新するのを待っています。
-
-もう少し後でやり直してください。
- </notification>
- <notification name="CannotReleaseLandSelected">
- 土地を破棄できません:
-あなたは、選択したすべての区画を所有していません。
-
-1つの区画を選択してください。
- </notification>
- <notification name="CannotReleaseLandDontOwn">
- 土地を破棄できません:
-あなたはこの土地を手放すことを許可されていません。
-あなたの区画は緑色で表示されています。
- </notification>
- <notification name="CannotReleaseLandRegionNotFound">
- 土地を破棄できません:
-この土地がある地域が見つかりません。
- </notification>
- <notification name="CannotReleaseLandNoTransfer">
- 土地を破棄できません:
-この [REGION] では土地の譲渡が許されていません。
- </notification>
- <notification name="CannotReleaseLandPartialSelection">
- 土地を破棄できません:
-区画全体を選択して破棄する必要があります。
-
-区画全体を選択するか、または、まず最初に区画を分割してください。
- </notification>
- <notification name="ReleaseLandWarning">
- あなたは、[AREA]平方メートルの土地を破棄しようとしています。
-この区画を破棄するとあなたの土地ではなくなりますが、
-L$は返金されません。
-
-土地を破棄しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNothingSelected">
- 土地を分割できません:
-
-区画が選定されていません。
- </notification>
- <notification name="CannotDivideLandPartialSelection">
- 土地を分割できません:
-
-区画全体が選択されています。
-区画の一部を選択してください。
- </notification>
- <notification name="LandDivideWarning">
- この土地を分割すると、2つの区画に別れます。
-区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。
-
-土地の分割操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="CannotDivideLandNoRegion">
- 土地を分割できません:
-この土地がある地域が見つかりません。
- </notification>
- <notification name="CannotJoinLandNoRegion">
- 土地を統合できません:
-この土地がある地域が見つかりません。
- </notification>
- <notification name="CannotJoinLandNothingSelected">
- 土地を統合できませんでした:
-区画が選定されていません。
- </notification>
- <notification name="CannotJoinLandEntireParcelSelected">
- 土地を統合できません:
-1つの区画しか選択されていません。
-
-両方の区画をまたいで土地を選択してください。
- </notification>
- <notification name="CannotJoinLandSelection">
- 土地を統合できません:
-1つ以上の区画を選択する必要があります。
-
-両方の区画をまたいで土地を選択してください。
- </notification>
- <notification name="JoinLandWarning">
- この土地を統合すると、選択された長方形に交差する
-全ての区画を基にして1つの大きな区画が作成されます。
-新しい区画の名前とオプションを再設定する必要があります。
-
-土地を統合しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmNotecardSave">
- このアイテムをコピー、表示する前に、ノートカードの保存が必要です。 保存しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmItemCopy">
- このアイテムをあなたの持ち物にコピーしますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/>
- </notification>
- <notification name="ResolutionSwitchFail">
- 解像度を [RESX]x[RESY]に切り替えることができませんでした。
- </notification>
- <notification name="ErrorUndefinedGrasses">
- エラー:未定義の植物:[SPECIES]
- </notification>
- <notification name="ErrorUndefinedTrees">
- エラー:未定義の樹木:[SPECIES]
- </notification>
- <notification name="CannotSaveWearableOutOfSpace">
- 「[NAME]」を服のファイルに保存できません。 コンピューターの
-ディスクスペースを少し増やしてから、もう一度
-保存してみてください。
- </notification>
- <notification name="CannotSaveToAssetStore">
- [NAME]を中央資産格納庫に保存できません。
-これは一時的な不具合です。
-服飾品などをカスタマイズし、数分後にもう一度保存してください。
- </notification>
- <notification name="YouHaveBeenLoggedOut">
- あなたは[SECOND_LIFE]からログアウトされました。
- [MESSAGE]
-「IMとチャットを表示」をクリックすると、
-現在あるIMとチャットを確認できます。
-確認しない場合は「終了」をクリックし、
-すぐに[APP_NAME]を終了してください。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/>
- </notification>
- <notification name="OnlyOfficerCanBuyLand">
- グループ用の土地の購入ができません:
-あなたにはアクティブなグループのために土地を購入する権限がありません。
- </notification>
- <notification label="フレンドを追加" name="AddFriend">
- フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。
-
-[NAME] にフレンドシップを送りますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="フレンドを追加" name="AddFriendWithMessage">
- フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。
-
-[NAME] にフレンドシップのオファーをしますか?
- <form name="form">
- <input name="message">
- フレンドとして登録してくれますか?
- </input>
- <button name="Offer" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="RemoveFromFriends">
- [FIRST_NAME] [LAST_NAME]をフレンドリストから削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="RemoveMultipleFromFriends">
- フレンドリストから複数のフレンドを削除しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedPublicObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのスクリプト・オブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllScriptedObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのスクリプト・オブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GodDeleteAllObjectsByUser">
- **[AVATAR_NAME]**
-所有のすべてのオブジェクト(スクリプト・オブジェクトと非スクリプト・オブジェクト)を
-このシム内のすべての土地から削除しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BlankClassifiedName">
- クラシファイドに名前を指定してください。
- </notification>
- <notification name="MinClassifiedPrice">
- 広告料の支払い金額は、Lと[MIN_PRICE]が下限です。
-
-金額を増やしてください。
- </notification>
- <notification name="ConfirmObjectDeleteLock">
- 選択したアイテムの1つ以上がロックされています。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopy">
- 選択したアイテムの1つ以上がコピーできません。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoOwn">
- 選択したアイテムの1つ以上を、あなたは所有していません。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopy">
- 一つ以上のオブジェクトがロックされています。
-一つ以上のオブジェクトがコピーできません。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoOwn">
- 一つ以上のオブジェクトがロックされています。
-1つ以上のオブジェクトを、あなたは所有していません。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteNoCopyNoOwn">
- 一つ以上のオブジェクトがコピーできません。
-1つ以上のオブジェクトを、あなたは所有していません。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
- 一つ以上のオブジェクトがロックされています。
-一つ以上のオブジェクトがコピーできません。
-1つ以上のオブジェクトを、あなたは所有していません。
-
-本当にこれらのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLock">
- 一つ以上のオブジェクトがロックされています。
-
-これらのアイテムの取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeNoOwn">
- 取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。
-そのため、将来、変更やコピーの能力が制限される可能性があります。
-
-これらのアイテムの取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmObjectTakeLockNoOwn">
- 1つ以上のオブジェクトがロックされています。
-取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。
-そのため、将来、変更やコピーの能力が制限される可能性があります。
-この選択内容のままで続行することは可能ですが、
-
-これらのアイテムの取得を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CantBuyLandAcrossMultipleRegions">
- 複数の地域が選択されたため、土地を購入できません。
-
-選択する面積を小さくしてもう一度試してください。
- </notification>
- <notification name="DeedLandToGroup">
- この区画の譲渡に際しては、
-このグループが十分な土地クレジットを保有および維持していることが必要です。
-土地の購入価格は、オーナーに返金されません。譲渡された区画が売れると、販売価格はグループ・メンバーに均等に分配されます。
-
-この[AREA]平方メートルの土地を、グループ
-「[GROUP_NAME]」に譲渡しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DeedLandToGroupWithContribution">
- この区画の譲渡に際しては、このグループが
-十分な土地クレジットを保有および維持していることが必要です。
-この譲渡により、
-「[FIRST_NAME] [LAST_NAME]」から
-グループに対して土地が同時に提供されます。
-土地の購入価格は、オーナーに返金されません。
-譲渡された区画が売れると、販売料金はグループ・メンバーに均等に分配されます。
-
-この[AREA]平方メートルの土地を、グループ「[GROUP_NAME]」に譲渡しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="DisplaySetToSafe">
- -safeオプションを指定したので、
-表示設定はセーフ・レベルに設定されています。
- </notification>
- <notification name="DisplaySetToRecommended">
- 表示設定は、あなたのシステム構成に
-基づいて推奨されたレベルに設定されています。
- </notification>
- <notification name="ErrorMessage">
- [ERROR_MESSAGE]
- </notification>
- <notification name="AvatarMovedDesired">
- 目的地は現在ご利用いただけません。
-近くのリージョンに移動しました。
- </notification>
- <notification name="AvatarMovedLast">
- 前回いた場所は現在ご利用いただけません。
-近くのリージョンに移動しました。
- </notification>
- <notification name="AvatarMovedHome">
- ホームロケーションは現在ご利用いただけません。
-近くのリージョンに移動しました。
-新たにホームを設定しなおすといいかもしれません。
- </notification>
- <notification name="ClothingLoading">
- 現在衣類をダウンロード中です。
-このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。
- <form name="form">
- <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっています"/>
- </form>
- </notification>
- <notification name="FirstRun">
- [APP_NAME]のインストールが完了しました。
-
-[SECOND_LIFE] の使用が初めての方は、
-ログイン前にアカウントの作成が必要です。
-www.secondlife.comに移動し、新規アカウントの作成を行いますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="新規アカウント..."/>
- </notification>
- <notification name="LoginPacketNeverReceived">
- 接続がなかなかできません。 お使いのインターネット接続か、[SECOND_LIFE_GRID] の問題と考えられます。
-
-インターネット接続を確認してから数分後に再接続するか、ヘルプをクリックして [SUPPORT_SITE] をご覧になるか、テレポートをクリックしてホームに移動してみてください。
- <url name="url">
- http://jp.secondlife.com/support/
- </url>
- <form name="form">
- <button name="OK" text="OK"/>
- <button name="Help" text="ヘルプ"/>
- <button name="Teleport" text="テレポート"/>
- </form>
- </notification>
- <notification name="WelcomeChooseSex">
- まもなくあなたのアバターが表示されます。
-
-矢印キーを使用して歩きます。
-ヘルプが必要なときや[SECOND_LIFE]について知りたいときは、
-F1キーを押してください。
-男性あるいは女性のアバターを選択してください。
-あなたの決定は後で変更できます。
- <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
- </notification>
- <notification name="NotEnoughCurrency">
- [NAME] L$[PRICE] 残高不足のため実行不可です。
- </notification>
- <notification name="GrantedModifyRights">
- [FIRST_NAME] [LAST_NAME] のオブジェクトの編集権限を得ました。
- </notification>
- <notification name="RevokedModifyRights">
- [FIRST_NAME] [LAST_NAME]
-のオブジェクトを修正する権限が取り消されました。
- </notification>
- <notification name="FlushMapVisibilityCaches">
- この手順は、この地域の地図のキャッシュを消去します。
-これが便利なのはデバッグ時のみです。
-(作成中は5分間経つと、全員の地図が再度ログイン後に
-更新されます)
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyOneObjectOnly">
- 一度に一つ以上のオブジェクトをと買うことはできません。 オブジェクトを一つだけ選んでもう一度お試しください。
- </notification>
- <notification name="OnlyCopyContentsOfSingleItem">
- 一度に複数のアイテムのコンテンツはコピーできません。
-選択するオブジェクトを1つだけにして、もう一度試してください。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="KickUsersFromRegion">
- この地域の全ての住人をホームにテレポートしますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="EstateObjectReturn">
- [USER_NAME]が所有しているオブジェクトを返却しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="InvalidTerrainBitDepth">
- 地域テクスチャを設定できませんでした:
-地形テクスチャ[TEXTURE_NUM]は、無効のビット深度[TEXTURE_BIT_DEPTH]です。
-
-テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
- </notification>
- <notification name="InvalidTerrainSize">
- 地域テクスチャを設定できませんでした:
-地形テクスチャ[TEXTURE_NUM]は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]では大きすぎます。
-
-テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
- </notification>
- <notification name="RawUploadStarted">
- アップロード開始。 接続速度によっては、
-最大2分間かかります。
- </notification>
- <notification name="ConfirmBakeTerrain">
- 現在の地形を構築しようとしています。
-この操作を行うと、現在の地形が上昇/下降の制限範囲の中心になり、「復帰」ツールのデフォルトになります。
-操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="MaxAllowedAgentOnRegion">
- 許可住人は [MAX_AGENTS] 人までです。
- </notification>
- <notification name="MaxBannedAgentsOnRegion">
- 禁止住人は[MAX_BANNED]人までです。
- </notification>
- <notification name="MaxAgentOnRegionBatch">
- [NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。
- </notification>
- <notification name="MaxAllowedGroupsOnRegion">
- 許可グループは[MAX_GROUPS]グループまでです。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/>
- </notification>
- <notification name="MaxManagersOnRegion">
- 不動産マネージャーは[MAX_MANAGER]人までです。
- </notification>
- <notification name="OwnerCanNotBeDenied">
- 不動産オーナーを不動産「禁止住人」リストに追加できません。
- </notification>
- <notification name="CanNotChangeAppearanceUntilLoaded">
- 服および形がロードされるまで、容姿の変更はできません。
- </notification>
- <notification name="ClassifiedMustBeAlphanumeric">
- クラシファイド広告の名前は、アルファベットか
-数字で始めます。 句読点では始められません。
- </notification>
- <notification name="CantSetBuyObject">
- オブジェクトが販売対象ではないため、オブジェクトの購入が設定できません。
-販売対象のオブジェクトを設定し、もう一度試してください。
- </notification>
- <notification name="FinishedRawDownload">
- 未加工の地形ファイルを次へとダウンロードしました:
-[DOWNLOAD_PATH]。
- </notification>
- <notification name="DownloadWindowsMandatory">
- [APP_NAME]の新しいバージョンが利用可能です。
-[MESSAGE]
-[APP_NAME]を使用するためには、
-このアップデートをダウンロードする必要があります。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadWindows">
- [APP_NAME]のアップデート・バージョンが利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadWindowsReleaseForDownload">
- [APP_NAME]のアップデート・バージョンが利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinuxMandatory">
- [APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinux">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadLinuxReleaseForDownload">
- [APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
- <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMacMandatory">
- [APP_NAME]の新しいバージョンが利用可能です。
-[MESSAGE]
-[APP_NAME]を使用するために、
-このアップデートをダウンロードする必要があります。
-
-アプリケーションがあるフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMac">
- [APP_NAME]のアップデート・バージョンが利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
-
-アプリケーションがあるフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DownloadMacReleaseForDownload">
- [APP_NAME]のアップデート・バージョンが利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
-
-アプリケーションがあるフォルダにダウンロードしますか?
- <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
- </notification>
- <notification name="DeedObjectToGroup">
- このオブジェクトを譲渡するとグループは以下のことが可能です:
-* オブジェクトに支払われたL$を受領します。
- <usetemplate ignoretext="オブジェクトをグループに譲渡する前に確認する" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
- </notification>
- <notification name="WebLaunchExternalTarget">
- Web ブラウザを開いてこのコンテンツを表示しますか?
- <usetemplate ignoretext="ブラウザを起動して Web ページを見る" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchJoinNow">
- secondlife.com でアカウントの管理をしますか?
- <usetemplate ignoretext="ブラウザを起動してアカウントを管理する" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchSecurityIssues">
- [SECOND_LIFE] Wikiで、
-セキュリティ問題を報告する方法をご覧ください。
- <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchQAWiki">
- [SECOND_LIFE] 品質保証関連Wikiをご覧ください。
- <usetemplate ignoretext="ブラウザを起動して QA Wiki を見る" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="WebLaunchPublicIssue">
- [SECOND_LIFE]のパブリック問題トラッカーで、
-バグやその他の問題を報告できます。
- <usetemplate ignoretext="ブラウザを確認してパブリック問題トラッカーを使用する" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
- </notification>
- <notification name="WebLaunchSupportWiki">
- Linden公式ブログで、最新のニュースや情報を入手してください。
- <usetemplate ignoretext="ブラウザを起動して公式ブログを見る" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLGuide">
- スクリプトガイドを開きますか?
- <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見る" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="WebLaunchLSLWiki">
- LSL ポータルでスクリプトに関する情報を確認しますか?
- <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
- </notification>
- <notification name="ReturnToOwner">
- 選択したオブジェクトを、所有者に返却しますか?
-譲渡可能なオブジェクトは
-以前の所有者に返却されます。
-
-*警告* 移転が不可能の譲渡されたオブジェクトは削除されます!
- <usetemplate ignoretext="オブジェクトを所有者に返却する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="GroupLeaveConfirmMember">
- 現在あなたは [GROUP]のメンバーです。
-ここから抜けますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmKick">
- すべてのユーザーをグリッド外にキックしようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="全てのユーザを追い出す"/>
- </notification>
- <notification name="MuteLinden">
- 残念ながらLindenを無視設定に入れることはできません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CannotStartAuctionAlreadyForSale">
- 既に売り出し中の区画なのでオークションにかけることはできません。 オークションにかけたい場合は売り出し設定を解除してから行ってください。
- </notification>
- <notification label="オブジェクトを名前でミュートできませんでした" name="MuteByNameFailed">
- あなたはすでにこの名前をミュートしています。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RemoveItemWarn">
- コンテンツを削除すると、許可があっても、オブジェクトにダメージを与えることがあります。
-そのアイテムの削除を続けますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="CantOfferCallingCard">
- 現在コーリングカードを送れません。数分後にもう一度試してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="CantOfferFriendship">
- 現在フレンドシップを送れません。数分後に試してください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="BusyModeSet">
- 取り込み中モードになりました。
-チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてゴミ箱に入ります。
- <usetemplate ignoretext="ログイン状態を取り込み中モードに変更する" name="okignore" yestext="OK"/>
- </notification>
- <notification name="JoinedTooManyGroupsMember">
- 加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
-[NAME] があなたをグループのメンバーとして勧誘しています。
-[INVITE]
- <usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
- </notification>
- <notification name="KickUser">
- どんなメッセージを表示して、このユーザーを追い出しますか?
- <form name="form">
- <input name="message">
- あなたは管理者によりログオフされました。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="KickAllUsers">
- どんなメッセージを表示して、グリッドにいる全員を追い出しますか?
- <form name="form">
- <input name="message">
- あなたは管理者によりログオフされました。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="FreezeUser">
- どんなメッセージを表示して、このユーザーをフリーズしますか?
- <form name="form">
- <input name="message">
- あなたはフリーズされています。 動くこともチャットすることもできません。 管理者がIMを通じてあなたに連絡します。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="UnFreezeUser">
- どんなメッセージを表示して、このユーザーのフリーズを解除しますか?
- <form name="form">
- <input name="message">
- もうフリーズされていません。
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="OfferTeleport">
- 次のメッセージを添えてあなたが今いる場所へのテレポートを送りますか?
- <form name="form">
- <input name="message">
- [REGION]に来ませんか?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="OfferTeleportFromGod">
- ユーザーをゴッド・コールで呼び寄せますか?
- <form name="form">
- <input name="message">
- [REGION]に来ませんか?
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TeleportFromLandmark">
- 本当にテレポートしますか?
- <usetemplate ignoretext="ランドマークにテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification name="TeleportToPick">
- [PICK] にテレポートしますか?
- <usetemplate ignoretext="ピックの場所にテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
- </notification>
- <notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate">
- 今あなたの不動産にいる人全員に送る
-短いメッセージを入力してください。
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
- あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
-
-これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数の地域が変更され、スペースサーバーに悪影響が生じます。
-
-操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
- あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
-
-この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。
-これにより多数の地域が変更され、スペースサーバーに悪影響が生じます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedAgentAdd">
- この不動産の許可リストだけに追加しますか? それとも[ALL_ESTATES]のすべての許可リストに追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedAgentRemove">
- 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedGroupAdd">
- この不動産のグループ許可リストだけに追加しますか? それとも[ALL_ESTATES]のグループ許可リストに追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateAllowedGroupRemove">
- 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateBannedAgentAdd">
- この不動産についてのみアクセスを拒否しますか? それとも[ALL_ESTATE]へのアクセスを拒否しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateBannedAgentRemove">
- この住人を、この不動産のみ、または[ALL_ESTATES]へとアクセスできるように、禁止リストから削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateManagerAdd">
- この不動産のみ、または[ALL_ESTATES]に対して、不動産マネージャーを追加しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="不動産を選択" name="EstateManagerRemove">
- 不動産マネージャーを、この不動産のみ、または[ALL_ESTATES]から、削除しますか?
- <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
- </notification>
- <notification label="キックを確認" name="EstateKickUser">
- この不動産から[EVIL_USER]を追い出しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="EstateChangeCovenant">
- 不動産約款を変更しようとしています。操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked">
- あなたのレーティング区分により、その地域(リージョン)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_KB">
- あなたのレーティング区分により、その地域(リージョン)へは入ることができません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/レーティング区分概要_(KB)
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、このリージョンに入ることができません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="RegionEntryAccessBlocked_Notify">
- あなたのレーティング区分により、その地域(リージョン)へは入ることができません。
- </notification>
- <notification name="RegionEntryAccessBlocked_Change">
- あなたのレーティング区分設定により、その地域(リージョン)へは入ることができません。
-
-「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。
-あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。
- <form name="form">
- <button name="OK" text="設定の変更"/>
- <button default="true" name="Cancel" text="閉じる"/>
- <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入ることができません"/>
- </form>
- </notification>
- <notification name="LandClaimAccessBlocked">
- あなたのレーティング区分により、この土地を取得することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandClaimAccessBlocked_KB">
- あなたのレーティング区分により、この土地を取得することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/レーティング区分概要_(KB)
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、この土地を取得できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="LandClaimAccessBlocked_Notify">
- あなたのレーティング区分により、この土地を取得することはできません。
- </notification>
- <notification name="LandClaimAccessBlocked_Change">
- あなたのレーティング区分設定により、この土地を取得することはできません。
-
-「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。
-あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
- </notification>
- <notification name="LandBuyAccessBlocked">
- あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="LandBuyAccessBlocked_KB">
- あなたのレーティング区分により、この土地を購入することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
- <url name="url">
- http://wiki.secondlife.com/wiki/レーティング区分概要_(KB)
- </url>
- <usetemplate ignoretext="レーティング区分の制限のため、この土地を購入できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
- </notification>
- <notification name="LandBuyAccessBlocked_Notify">
- あなたのレーティング区分により、この土地を購入することはできません。
- </notification>
- <notification name="LandBuyAccessBlocked_Change">
- あなたのレーティング区分設定により、この土地を購入することができません。
-
-「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。
-あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。
- <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
- </notification>
- <notification name="TooManyPrimsSelected">
- 選択したプリムが多すぎます。
-[MAX_PRIM_COUNT] を選択するか、
-プリム数を減らしてもう一度お試しください。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemImportingEstateCovenant">
- 不動産約款のインポート時に問題発生。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ProblemAddingEstateManager">
- 新しい不動産マネージャーの追加に関する問題:
-1つ以上の不動産で、マネージャーリストが満杯になっています。
- </notification>
- <notification name="ProblemAddingEstateGeneric">
- 不動産リストの追加に関する問題:
-1つ以上の不動産で、リストが満杯になっています。
- </notification>
- <notification name="UnableToLoadNotecardAsset">
- 現在ノートカードの資産IDを読み込むことができません。
- </notification>
- <notification name="NotAllowedToViewNotecard">
- 要求された資産IDに関するノートカードを閲覧するには権限が不十分です。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MissingNotecardAssetID">
- ノートカード用資産IDがデータベースに登録されていません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="PublishClassified">
- 注意:クラシファイド広告の料金は払い戻しされません。
-
-L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="SetClassifiedMature">
- この広告にMatureコンテンツは含まれていますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="SetGroupMature">
- この広告にMatureコンテンツは含まれていますか?
- <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification label="再起動を確認" name="ConfirmRestart">
- この地域を2分後に再起動しようとしています。
-操作を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification label="この地域内の全員にメッセージを送信" name="MessageRegion">
- この地域にいる人全員に送る
-短いメッセージを入力してください。
- <form name="form">
- <input name="message"/>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
- この地域のレーティング区分指定がアップデートされました。
-この変更が地図に反映されるまでにはしばらく時間がかかります。
- </notification>
- <notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch">
- このバージョンの [APP_NAME] は、
-この地域のボイスチャット機能に対応していません。
-ボイスチャットを正しく使用するには、
-[APP_NAME] のアップデートが必要です。
- </notification>
- <notification label="オブジェクトを購入できません" name="BuyObjectOneOwner">
- 複数のオーナーから同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
- </notification>
- <notification label="コンテンツを購入できません" name="BuyContentsOneOnly">
- 一度に複数のオブジェクトのコンテンツは購入できません。
-選択するオブジェクトを1つだけにして、もう一度試してください。
- </notification>
- <notification label="コンテンツを購入できません" name="BuyContentsOneOwner">
- 複数のオーナーから同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
- </notification>
- <notification name="BuyOriginal">
- オリジナルのオブジェクトを[OWNER]からL$[PRICE]で購入しますか?
-これにより、あなたがオブジェクトのオーナーになります。
-可能な操作は、
-変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyOriginalNoOwner">
- L$[PRICE]でオリジナルのオブジェクトを購入しますか?
-これにより、あなたがオブジェクトのオーナーになります。
-可能な操作は、
-変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyCopy">
- コピーを[OWNER]からL$[PRICE]で購入しますか?
-購入したオブジェクトは、あなたの持ち物にコピーされます。
-可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyCopyNoOwner">
- L$[PRICE]でコピーを購入しますか?
-購入したオブジェクトは、あなたの持ち物にコピーされます。
-可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、
-再販/プレゼント[RESELLPERM]です。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyContents">
- コンテンツを[OWNER]からL$[PRICE]で購入しますか?
-購入したコンテンツは、あなたの持ち物にコピーされます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="BuyContentsNoOwner">
- L$[PRICE]でコンテンツを購入しますか?
-購入したコンテンツは、あなたの持ち物にコピーされます。
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchase">
- この取引は以下のとおり行われます:
-[ACTION]
-
-この購入を続行しますか?
- <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
- </notification>
- <notification name="ConfirmPurchasePassword">
- この取引は以下のとおり行われます:
-[ACTION]
-
-この購入を続行しますか?
-パスワードを再入力し、「OK」をクリックしてください。
- <form name="form">
- <input name="message"/>
- <button name="ConfirmPurchase" text="OK"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="SetPickLocation">
- メモ:
-本ピックのロケーションを更新しましたが、
-他の詳細は元の値のままになります。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromObject">
- 「コピー禁止」の持ち物アイテムが選択されました。
-これらのアイテムはコピーされないまま、あなたの持ち物に移動されます。
-
-
-アイテムを動かしますか?
- <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="MoveInventoryFromScriptedObject">
- 「コピー禁止」の持ち物アイテムが選択されました。
-これらのアイテムはコピーされるのではなく、あなたの持ち物に移動されます。
-このオブジェクトはスクリプト付きなので、持ち物に移動させると
-スクリプトに誤動作が起きる可能性があります。
-
-持ち物アイテムを移動しますか?
- <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ClickActionNotPayable">
- 警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。
- <form name="form">
- <ignore name="ignore" text="money() スクリプトを入れずにオブジェクトを制作中に、「オブジェクトに支払う」アクションを設定"/>
- </form>
- </notification>
- <notification name="OpenObjectCannotCopy">
- このオブジェクトには、あなたがコピーできるアイテムはありません。
- </notification>
- <notification name="WebLaunchAccountHistory">
- secondlife.com でアカウント履歴を確認しますか?
- <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
- </notification>
- <notification name="ConfirmQuit">
- 終了しようとしています。操作を続行しますか?
- <usetemplate ignoretext="終了時に確認する" name="okcancelignore" notext="終了しない" yestext="終了"/>
- </notification>
- <notification name="HelpReportAbuseEmailLL">
- 利用規約違反とコミュニティースタンダード違反の報告にこのツールをご使用ください。 参照:
-
-http://secondlife.com/corporate/tos.php
-http://secondlife.com/corporate/cs.php
-
-利用規約違反とコミュニティースタンダード違反に関する全てのレポートは、調査され、解決されます。
-以下のリンク先の被害報告にてその確認をすることができます。
-
-http://secondlife.com/support/incidentreport.php
- </notification>
- <notification name="HelpReportAbuseEmailEO">
- 重要: このレポートはLinden Lab 社ではなく、
-あなたが現在いる地域のオーナーに送られます。
--
-あなたが今いる地域のオーナーは、
-住人と訪問者へのサービスの一環として、この地域からのレポートをすべて受け付け、解決することに同意しています。
-よってLinden Lab 社が、
-あなたがここから提出するレポートを調査することはありません。
-地域のオーナーは、不動産約款で指定している地元の規則を基に、報告された問題を解決します。
-(「世界」のメニューから「土地情報」を選ぶと、約款を閲覧できます)
--
-このレポートに関する解決策は、この地域にだけ当てはまります。
-住人が[SECOND_LIFE] の他の地域へアクセスする際、
-このレポートの結果に影響されることはありません。
-Linden Lab 社だけが[SECOND_LIFE] 全域における
-アクセス制限権を持っています。
- </notification>
- <notification name="HelpReportAbuseSelectCategory">
- 嫌がらせ報告のカテゴリを選択してください。
-カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseAbuserNameEmpty">
- 嫌がらせ行為をした人の名前を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseAbuserLocationEmpty">
- 嫌がらせがあった場所を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseSummaryEmpty">
- 嫌がらせの概要を入力してください。
-正確な概要の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseDetailsEmpty">
- 嫌がらせの詳細な説明を入力してください。
-名前や嫌がらせの詳細を、できるだけ具体的に入力してください。
-
-正確な説明の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
- </notification>
- <notification name="HelpReportAbuseContainsCopyright">
- 住人の皆様へ、
-
-知的財産の侵害に関する報告を行う際には、以下の点に注意してください。
-
-(1) 嫌がらせの報告のプロセス
-[SECOND_LIFE] の権限システムを悪用している住人を見つけたら、
-嫌がらせの報告を行ってください。
-例えばコピーBotの使用、それに似たツールの使用による知的財産権の侵害があります。
-アビューズチームは調査に基づき、
-[SECOND_LIFE] のコミュニティースタンダードや
-利用規約に違反する行為と判断された場合には適切な処置を行っています。
-ただし、コンテンツを[SECOND_LIFE] から撤去してほしい、
-といった要望にはアビューズチームは応えることができません。
-
-(2) DMCA(デジタルミレニアム著作権法)及びコンテンツ撤去プロセス
-[SECOND_LIFE] からのコンテンツの撤去をリクエストするには、
-著作権侵害通知の提出を行う必要があります。
-参照: http://secondlife.com/corporate/dmca.php
-
-この件に関する嫌がらせの報告を続ける際は、このウィンドウを閉じてください。選択すべきカテゴリは「知的財産の侵害>コピーBot及び権限の悪用」のほうが適しているかもしれませんのでご確認ください。
-
-よろしくお願いします。
-
-Linden Lab
- </notification>
- <notification name="FailedRequirementsCheck">
- 以下の必要なコンポーネントが、[FLOATER]から抜け落ちています
-[COMPONENTS]
- </notification>
- <notification label="既存の付属品を置換" name="ReplaceAttachment">
- 体のこの部位にはオブジェクトが装着されています。
-選択されたオブジェクトと置き換えますか?
- <form name="form">
- <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替える"/>
- <button ignore="自動的に交換" name="Yes" text="OK"/>
- <button ignore="交換しない" name="No" text="キャンセル"/>
- </form>
- </notification>
- <notification label="取り込み中の警告" name="BusyModePay">
- 現在、取り込み中のため、この支払いと
-引き換えのアイテムを受け取ることが
-できません。
-
-この取引を完了する前に、取り込み中の設定を解除しますか?
- <form name="form">
- <ignore name="ignore" save_option="true" text="取り込み中モードの時に支払をする"/>
- <button ignore="常に取り込み中の設定" name="Yes" text="OK"/>
- <button ignore="取り込み中の設定にしない" name="No" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ConfirmEmptyTrash">
- ゴミ箱の項目をすべて削除しますか?
- <usetemplate ignoretext="持ち物のゴミ箱フォルダを空にする前に確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
- </notification>
- <notification name="ConfirmClearBrowserCache">
- トラベル、Web、検索の履歴をすべて削除しますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmClearCookies">
- 本当にクッキーをクリアしますか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmClearMediaUrlList">
- 保存された URL のリストを消去します。よろしいですか?
- <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
- </notification>
- <notification name="ConfirmEmptyLostAndFound">
- 紛失物の項目をすべて削除しますか?
- <usetemplate ignoretext="紛失物フォルダを空にする前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="CopySLURL">
- 次の SLurl がクリップボードにコピーされました:
- [SLURL]
-
-Webページにこれをリンクすると、他人がこの場所に簡単にアクセスできます。Webブラウザのアドレスバーに貼り付けて試してみてください。
- <form name="form">
- <ignore name="ignore" text="クリップボードに SLurl がコピーされる"/>
- </form>
- </notification>
- <notification name="WLSavePresetAlert">
- 保存された事前設定を上書きしますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="WLDeletePresetAlert">
- [SKY] を削除しますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="WLNoEditDefault">
- デフォルトの設定を編集したり削除したりすることはできません。
- </notification>
- <notification name="WLMissingSky">
- このデイ・サイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
- </notification>
- <notification name="PPSaveEffectAlert">
- ポストプロセス効果が存在します。 上書きしますか?
- <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="NewSkyPreset">
- 新しい空の名前を指定してください。
- <form name="form">
- <input name="message">
- 新しい事前設定
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ExistsSkyPresetAlert">
- 事前設定がすでに存在します!
- </notification>
- <notification name="NewWaterPreset">
- 新しい水の事前設定の名前を指定してください。
- <form name="form">
- <input name="message">
- 新しい事前設定
- </input>
- <button name="OK" text="OK"/>
- <button name="Cancel" text="キャンセル"/>
- </form>
- </notification>
- <notification name="ExistsWaterPresetAlert">
- 事前設定がすでに存在します!
- </notification>
- <notification name="WaterNoEditDefault">
- デフォルトの設定を編集したり削除したりすることはできません。
- </notification>
- <notification name="ChatterBoxSessionStartError">
- [RECIPIENT]との新しいチャットを開始することができません
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ChatterBoxSessionEventError">
- [EVENT]
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="ForceCloseChatterBoxSession">
- [NAME]とのチャットセッションを閉じます。
-[REASON]
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="Cannot_Purchase_an_Attachment">
- オブジェクトが取り付けられているときは購入することができません。
- </notification>
- <notification label="デビット許可のリクエストについて" name="DebitPermissionDetails">
- この要求を許可すると、スクリプトからあなたのアカウントにリンデンドルを課金できるようになります。
-この許可を取り消すには、オブジェクトのオーナーはオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
- <usetemplate name="okbutton" yestext="OK"/>
- </notification>
- <notification name="AutoWearNewClothing">
- 作成しようとしている衣類を自動的に装着しますか?
- <usetemplate ignoretext="容姿編集画面で作成する衣類を装着する" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="NotAgeVerified">
- 年齢確認を済ませていないとこの区画を訪れることができません。 [SECOND_LIFE] サイトで年齢の確認を行いますか?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/verification.php?lang=ja
- </url>
- <usetemplate ignoretext="年齢の確認を済ませていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="Cannot enter parcel: no payment info on file">
- 支払情報が登録されていないとこのエリアを訪れることができません。 [SECOND_LIFE] サイトで登録を行いますか?
-
-[_URL]
- <url name="url" option="0">
- https://secondlife.com/account/index.php?lang=ja
- </url>
- <usetemplate ignoretext="支払情報が登録されていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
- </notification>
- <notification name="MissingString">
- 文字列[STRING_NAME]がstrings.xmlに含まれていません
- </notification>
- <notification name="SystemMessageTip">
- [MESSAGE]
- </notification>
- <notification name="Cancelled">
- 取り消されました
- </notification>
- <notification name="CancelledSit">
- 座るのを取り消されました
- </notification>
- <notification name="CancelledAttach">
- 添付は取り消されました
- </notification>
- <notification name="ReplacedMissingWearable">
- 欠落している服/身体部位をデフォルトに置換します。
- </notification>
- <notification name="GroupNotice">
- 件名: [SUBJECT], メッセージ: [MESSAGE]
- </notification>
- <notification name="FriendOnline">
- [FIRST] [LAST] はオンラインです。
- </notification>
- <notification name="FriendOffline">
- [FIRST] [LAST] はオフラインです。
- </notification>
- <notification name="AddSelfFriend">
- 残念ながら自分自身をフレンドに追加することはできません。
- </notification>
- <notification name="UploadingAuctionSnapshot">
- インワールドとウェブ・サイトのスナップショットをアップロード中です...
-(所要時間:約5分)
- </notification>
- <notification name="UploadPayment">
- アップロードに L$[AMOUNT] 支払いました。
- </notification>
- <notification name="UploadWebSnapshotDone">
- Webサイトのスナップショットがアップロードされました。
- </notification>
- <notification name="UploadSnapshotDone">
- インワールドでのスナップショットのアップロードが完了しました。
- </notification>
- <notification name="TerrainDownloaded">
- raw地形がダウンロードされました
- </notification>
- <notification name="GestureMissing">
- ジェスチャー[NAME] がデータベースにありません。
- </notification>
- <notification name="UnableToLoadGesture">
- ジェスチャー[NAME] を読み込むことができません。
-再度、試みてください。
- </notification>
- <notification name="LandmarkMissing">
- データベースにランドマークがありません。
- </notification>
- <notification name="UnableToLoadLandmark">
- ランドマークをロードできません。 もう一度試してください。
- </notification>
- <notification name="CapsKeyOn">
- CapsLock キーが有効になっています。
-パスワードに影響があるかもしれません。
- </notification>
- <notification name="NotecardMissing">
- ノートカードがデータベースにありません。
- </notification>
- <notification name="NotecardNoPermissions">
- このノートカードを見る権限がありません。
- </notification>
- <notification name="RezItemNoPermissions">
- オブジェクトをrezするにはパーミッション(承認)が不足してます。
- </notification>
- <notification name="UnableToLoadNotecard">
- 現在ノートカードの資産をロードできません。
- </notification>
- <notification name="ScriptMissing">
- データベースにスクリプトがありません。
- </notification>
- <notification name="ScriptNoPermissions">
- スクリプトを閲覧するには権限が不十分です。
- </notification>
- <notification name="UnableToLoadScript">
- スクリプトをロードできません。 もう一度試してください。
- </notification>
- <notification name="IncompleteInventory">
- あなたの提供するコンテンツは、この場所ではまだ全部揃いません。
-少ししてからもう一度試してください。
- </notification>
- <notification name="CannotModifyProtectedCategories">
- 保護されたカテゴリーは修正できません。
- </notification>
- <notification name="CannotRemoveProtectedCategories">
- 保護されたカテゴリーは削除できません。
- </notification>
- <notification name="OfferedCard">
- あなたは[FIRST] [LAST] に
-コーリング・カードを送りました。
- </notification>
- <notification name="UnableToBuyWhileDownloading">
- オブジェクトデータのダウンロード中は購入できません。
-もう一度試してください。
- </notification>
- <notification name="UnableToLinkWhileDownloading">
- オブジェクトデータのウンロード中はリンクできません。
-もう一度試してください。
- </notification>
- <notification name="CannotBuyObjectsFromDifferentOwners">
- オブジェクトは一度につき一人の所有者から購入できます。
-オブジェクトを 1 つだけ選んでください。
- </notification>
- <notification name="ObjectNotForSale">
- このオブジェクトは販売対象ではありません。
- </notification>
- <notification name="EnteringGodMode">
- レベル[LEVEL]のゴッド・モードに入ります
- </notification>
- <notification name="LeavingGodMode">
- レベル [LEVEL] のゴッドモードを解除します
- </notification>
- <notification name="CopyFailed">
- これをコピーする権限がありません。
- </notification>
- <notification name="InventoryAccepted">
- [NAME]は、持ち物の提供を受け入れました。
- </notification>
- <notification name="InventoryDeclined">
- [NAME]は、持ち物の提供を断りました。
- </notification>
- <notification name="ObjectMessage">
- [NAME]: [MESSAGE]
- </notification>
- <notification name="CallingCardAccepted">
- コーリング・カードが受理されました。
- </notification>
- <notification name="CallingCardDeclined">
- コーリング・カードが拒否されました。
- </notification>
- <notification name="TeleportToLandmark">
- 本土に到達しました。
-[NAME]などの場所にテレポートするには、画面右下にある「持ち物」ボタンをクリックし、ランドマーク(Landmarks)フォルダを選択してください。
-ランドマークをダブルクリックした後「テレポート」をクリックするとその場所へ移動します。
- </notification>
- <notification name="TeleportToPerson">
- 本土に到達しました。
-住人の[NAME]と接触するには、画面右下にある「持ち物」ボタンをクリックし、コーリングカード(Calling Cards)フォルダを選択してください。
-カードをダブルクリックし、「IMを送る」をクリックし、メッセージを送信してください。
- </notification>
- <notification name="CantSelectLandFromMultipleRegions">
- サーバーの境界を越えて土地を選択することできません。
-もっと小さな土地を選択してください。
- </notification>
- <notification name="SearchWordBanned">
- コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。
- </notification>
- <notification name="NoContentToSearch">
- 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(PG, Mature, Adult)
- </notification>
- <notification name="GroupVote">
- [NAME] は投票の申請をしています:
-[MESSAGE]
- <form name="form">
- <button name="VoteNow" text="今すぐ投票する"/>
- <button name="Later" text="あとで"/>
- </form>
- </notification>
- <notification name="SystemMessage">
- [MESSAGE]
- </notification>
- <notification name="EventNotification">
- イベント通知:
-
-[NAME]
-[DATE]
- <form name="form">
- <button name="Teleport" text="テレポート"/>
- <button name="Description" text="説明"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="TransferObjectsHighlighted">
- この区画上に存在するオブジェクトのうち、この区画の購入者に譲渡されるオブジェクトがすべて強調表示されます。
-
-
-*譲渡される樹木や植物は、強調表示されません。
- <form name="form">
- <button name="Done" text="完了"/>
- </form>
- </notification>
- <notification name="DeactivatedGesturesTrigger">
- 同じトリガーでアクティブにしないジェスチャー:
-[NAMES]
- </notification>
- <notification name="NoQuickTime">
- Apple社のQuickTimeがシステムにインストールされていないと思われます。
-ストリーミング・メディアの再生を行いたい場合は、QuickTimeのサイト(http://www.apple.com/quicktime)にアクセスして、QuickTime Player をインストールしてください。
- </notification>
- <notification name="NoPlugin">
- 「 [MIME_TYPE] 」の MIME タイプを扱うメディアプラグインが見つかりませんでした。 このタイプのメディアはご利用いただけません。
- </notification>
- <notification name="MediaPluginFailed">
- 次のメディアプラグインが実行できませんでした:
- [PLUGIN]
-
-プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。
- <form name="form">
- <ignore name="ignore" text="メディアプラグインの実行に失敗"/>
- </form>
- </notification>
- <notification name="OwnedObjectsReturned">
- 選択した土地の区画上にあったあなたのオブジェクトは、あなたの持ち物に返却されました。
- </notification>
- <notification name="OtherObjectsReturned">
- 選択されている土地の区画上にあった
- [FIRST] [LAST]
- が所有するオブジェクトは、オーナーの持ち物に返却されました。
- </notification>
- <notification name="OtherObjectsReturned2">
- 選択された土地の区画上にあり、
-住人の[NAME]の所有だったオブジェクトはオーナーに返却されました。
- </notification>
- <notification name="GroupObjectsReturned">
- 選択されている区画上にあり、[GROUPNAME] というグループと共有だったオブジェクトは、オーナーの持ち物に返却されました。
-譲渡されていた譲渡可能なオブジェクトは、前のオーナーに返却されました。
-グループに譲渡されていた譲渡不可能なオブジェクトは、削除されました。
- </notification>
- <notification name="UnOwnedObjectsReturned">
- 選択された土地の区画上にあり、あなたの所有で「なかった」オブジェクトは、本来のオーナーに返却されました。
- </notification>
- <notification name="NotSafe">
- この土地ではダメージが有効です。
-ケガをするかもしれません。 死んでしまった場合はホームにテレポートされます。
- </notification>
- <notification name="NoFly">
- このエリアでは飛行が禁止されています。
-ここでは飛べません。
- </notification>
- <notification name="PushRestricted">
- このエリアではプッシュが制限されています。
-土地所有者以外は他人をプッシュすることはできません。
- </notification>
- <notification name="NoVoice">
- このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。
- </notification>
- <notification name="NoBuild">
- このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。
- </notification>
- <notification name="ScriptsStopped">
- 管理者がこの地域内のスクリプトを一時停止させました。
- </notification>
- <notification name="ScriptsNotRunning">
- この地域ではスクリプトの使用が禁止されています
- </notification>
- <notification name="NoOutsideScripts">
- この土地では、外部のスクリプトが禁止されています。
-
-土地所有者のもの以外はスクリプトは実行されません。
- </notification>
- <notification name="ClaimPublicLand">
- そのリージョンにいないと公共の土地を取得することはできません。
- </notification>
- <notification name="RegionTPAccessBlocked">
- あなたのレーティング区分によりその地域(リージョン)へは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。
-
-現在のレーティング区分でアクセス可能なエリアに関する詳細はナレッジベースを参照してください。
- </notification>
- <notification name="URBannedFromRegion">
- あなたは地域(リージョン)への立入が禁止されています。
- </notification>
- <notification name="NoTeenGridAccess">
- あなたのアカウントではティーングリッドに接続できません。
- </notification>
- <notification name="ImproperPaymentStatus">
- この地域(リージョン)に入るために適した支払いステータスがありません。
- </notification>
- <notification name="MustGetAgeParcel">
- この区画に入るには年齢確認済みである必要があります。
- </notification>
- <notification name="NoDestRegion">
- 目的地の地域(リージョン)が見つかりませんでした。
- </notification>
- <notification name="NotAllowedInDest">
- 目的地に入る許可がありません。
- </notification>
- <notification name="RegionParcelBan">
- 立入禁止された区画を横断することはできません。 別の方法をお試しください。
- </notification>
- <notification name="TelehubRedirect">
- テレハブに転送されました。
- </notification>
- <notification name="CouldntTPCloser">
- これ以上目的地に近い場所にテレポートができませんでした。
- </notification>
- <notification name="TPCancelled">
- テレポートがキャンセルされました。
- </notification>
- <notification name="FullRegionTryAgain">
- 入ろうとしている地域(リージョン)は現在満員です。
-しばらくしてから再度お試しください。
- </notification>
- <notification name="GeneralFailure">
- よくある失敗
- </notification>
- <notification name="RoutedWrongRegion">
- 異なる地域(リージョン)に迂回されました。 もう一度お試しください。
- </notification>
- <notification name="NoValidAgentID">
- エージェントIDが無効です。
- </notification>
- <notification name="NoValidSession">
- セッションIDが無効です。
- </notification>
- <notification name="NoValidCircuit">
- 回路コードが無効です。
- </notification>
- <notification name="NoValidTimestamp">
- タイムスタンプが無効です。
- </notification>
- <notification name="NoPendingConnection">
- 接続を生成できません。
- </notification>
- <notification name="InternalUsherError">
- 内部エラーが発生しました。
- </notification>
- <notification name="NoGoodTPDestination">
- この地域(リージョン)では適切なテレポート目的地が見つかりませんでした。
- </notification>
- <notification name="InternalErrorRegionResolver">
- 内部エラーが発生しました。
- </notification>
- <notification name="NoValidLanding">
- 有効な着地点が見つかりませんでした。
- </notification>
- <notification name="NoValidParcel">
- 有効な区画が見つかりませんでした。
- </notification>
- <notification name="ObjectGiveItem">
- [FIRST] [LAST]所有の、
-[OBJECTFROMNAME]から、
-[OBJECTNAME]という[OBJECTTYPE]が送られてきました。
- <form name="form">
- <button name="Keep" text="受け取る"/>
- <button name="Discard" text="破棄"/>
- <button name="Mute" text="無視リストへ"/>
- </form>
- </notification>
- <notification name="ObjectGiveItemUnknownUser">
- (未知のユーザー) 所有の[OBJECTFROMNAME]から、
-あなたに[OBJECTNAME]という[OBJECTTYPE]が送られてきました。
- <form name="form">
- <button name="Keep" text="受け取る"/>
- <button name="Discard" text="破棄"/>
- <button name="Mute" text="無視リストへ"/>
- </form>
- </notification>
- <notification name="UserGiveItem">
- [NAME]は、あなたに[OBJECTNAME]という名前の[OBJECTTYPE]を渡しました。
- <form name="form">
- <button name="Keep" text="受け取る"/>
- <button name="Discard" text="破棄"/>
- </form>
- </notification>
- <notification name="GodMessage">
- [NAME]
-[MESSAGE]
- </notification>
- <notification name="JoinGroup">
- [MESSAGE]
- <form name="form">
- <button name="Join" text="参加"/>
- <button name="Decline" text="辞退"/>
- <button name="Info" text="情報"/>
- </form>
- </notification>
- <notification name="TeleportOffered">
- [NAME]はあなたをテレポートで呼び寄せようとしています:
-
-[MESSAGE]
- <form name="form">
- <button name="Teleport" text="テレポート"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="GotoURL">
- [MESSAGE]
-[URL]
- <form name="form">
- <button name="Later" text="あとで"/>
- <button name="GoNow..." text="今すぐ行く"/>
- </form>
- </notification>
- <notification name="OfferFriendship">
- [NAME]は、
-フレンド登録を申し込んでいます。
-
-[MESSAGE]
-
-(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="辞退"/>
- </form>
- </notification>
- <notification name="OfferFriendshipNoMessage">
- [NAME]は、
-フレンド登録を申し込んでいます。
-
-(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- </form>
- </notification>
- <notification name="FriendshipAccepted">
- [NAME]は、フレンド 登録を受け入れました。
- </notification>
- <notification name="FriendshipDeclined">
- [NAME]は、フレンド 登録を断りました。
- </notification>
- <notification name="OfferCallingCard">
- [FIRST] [LAST]が
-あなたにコーリングカードを送ってきました。
-これにより、あなたの持ち物にブックマークが追加され、この住人にすばやくIMすることができます。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="辞退"/>
- </form>
- </notification>
- <notification name="RegionRestartMinutes">
- この地域は[MINUTES]分後に再起動されます。
-強制ログアウトとなりますので、この地域の外に出てください。
- </notification>
- <notification name="RegionRestartSeconds">
- このリージョンは [SECONDS] 秒後に再起動されます。.
-このままここにいるとログアウトされます。
- </notification>
- <notification name="LoadWebPage">
- ウェブ・ページ[URL]をロードしますか?
-
-[MESSAGE]
-
-ロード元のオブジェクト:[OBJECTNAME]、オーナー:[NAME]?
- <form name="form">
- <button name="Gotopage" text="移動"/>
- <button name="Cancel" text="取り消し"/>
- </form>
- </notification>
- <notification name="FailedToFindWearableUnnamed">
- データベースに[TYPE]が見つかりませんでした
- </notification>
- <notification name="FailedToFindWearable">
- データベースに[DESC]という名前の[TYPE]が見つかりませんでした。
- </notification>
- <notification name="InvalidWearable">
- 着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME]ビューワを最新のものにアップグレードしてからこのアイテムを着用してください。
- </notification>
- <notification name="ScriptQuestion">
- 「[NAME]」が所有するオブジェクト「[OBJECTNAME]」を:
-
-[QUESTIONS]
-よろしいですか?
- <form name="form">
- <button name="Yes" text="はい"/>
- <button name="No" text="いいえ"/>
- <button name="Mute" text="無視リストに追加"/>
- </form>
- </notification>
- <notification name="ScriptQuestionCaution">
- [NAME] 所有の「 [OBJECTNAME] 」 というオブジェクトが次のことをしようとしています:
-
-[QUESTIONS]
-このオブジェクトや制作者を信用できない場合は、このリクエストを拒否してください。
-
-リクエストを受けますか?
- <form name="form">
- <button name="Grant" text="許可"/>
- <button name="Deny" text="拒否"/>
- <button name="Details" text="詳細..."/>
- </form>
- </notification>
- <notification name="ScriptDialog">
- [FIRST] [LAST]の「[TITLE]」
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="無視する"/>
- </form>
- </notification>
- <notification name="ScriptDialogGroup">
- [GROUPNAME]の「[TITLE]」
-[MESSAGE]
- <form name="form">
- <button name="Ignore" text="無視する"/>
- </form>
- </notification>
- <notification name="FirstBalanceIncrease">
- L$[AMOUNT] を受け取りました。
-あなたの L$ 残高は画面右上に表示されています。
- </notification>
- <notification name="FirstBalanceDecrease">
- L$[AMOUNT] を支払いました。
-あなたの L$ 残高は画面右上に表示されています。
- </notification>
- <notification name="FirstSit">
- 着席中です。
-周囲を見るには矢印キーか AWSD キーを使ってください。
-立つときには「立ち上がる」ボタンをクリックしてください。
- </notification>
- <notification name="FirstMap">
- 地図をクリック・ドラッグして周囲を見てください。
-ダブルクリックするとテレポートします。
-右側のコントロールで場所を探したり背景を変更してください。
- </notification>
- <notification name="FirstBuild">
- 制作ツールを開きました。 見るものすべてがこのツールで作成されたものです。
- </notification>
- <notification name="FirstTeleport">
- このリージョンでは特定のエリアにのみテレポートできます。 矢印が目的地を指しています。 矢印をクリックすると消えます。
- </notification>
- <notification name="FirstOverrideKeys">
- あなたの移動キーをオブジェクトが操作しています。
-矢印かAWSDのキーで動作を確認してください。
-銃などのオブジェクトだと、一人称視点(マウスルック)に変更する必要があります。
-Mキーを押して変更します。
- </notification>
- <notification name="FirstAppearance">
- 容姿を編集中です。
-周囲を見るには矢印キーを使ってください。
-終わったら「すべて保存」を押してください。
- </notification>
- <notification name="FirstInventory">
- これはあなたの持ち物です。所有しているアイテムが入っています。
-
-* アイテムを自分にドラッグして装着してください。
-* アイテムを地面にドラッグして Rez してください。
-* ノートカードをダブルクリックして開いてください。
- </notification>
- <notification name="FirstSandbox">
- ここはサンドボックスエリアです。住人が制作を学ぶことができます。
-
-ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
- </notification>
- <notification name="FirstFlexible">
- このオブジェクトはフレキシブルです。 フレキシブルオブジェクトは、「物理」ではなく「ファントム」でなければなりません。
- </notification>
- <notification name="FirstDebugMenus">
- アドバンスメニューを開きました。
-
-このメニューの有効・無効設定:
- Windows: Ctrl+Alt+D
- Mac: ⌘-Opt+D
- </notification>
- <notification name="FirstSculptedPrim">
- スカルプトプリムを編集中です。 スカルプトプリムには形状の輪郭を指定するための特別なテクスチャが必要です。
- </notification>
- <notification name="MaxListSelectMessage">
- このリストから[MAX_SELECT]個までのアイテムを選択できます。
- </notification>
- <notification name="VoiceInviteP2P">
- [NAME]が、あなたをボイスチャットコールに招待しています。
-コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このコールをしている人をミュートにする場合は「ミュート」をクリックしてください。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ミュート"/>
- </form>
- </notification>
- <notification name="AutoUnmuteByIM">
- [FIRST] [LAST]に
-インスタント・メッセージが送信され、無視設定は自動的に解除されました。
- </notification>
- <notification name="AutoUnmuteByMoney">
- [FIRST] [LAST]にお金を渡したため、 無視設定が自動的に解除されました。
- </notification>
- <notification name="AutoUnmuteByInventory">
- [FIRST] [LAST]に持ち物を渡したため、 無視設定が自動的に解除されました。
- </notification>
- <notification name="VoiceInviteGroup">
- [NAME]が、 グループ[GROUP]とのボイスチャットコールに参加しました。
-コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このコールをしている人をミュートにする場合は「ミュート」をクリックしてください。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ミュート"/>
- </form>
- </notification>
- <notification name="VoiceInviteAdHoc">
- [NAME]が、 会議チャットでボイスチャットコールに参加しました。
-コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。 このユーザーをミュート(消声)する場合は「ミュート」をクリックしてください。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ミュート"/>
- </form>
- </notification>
- <notification name="InviteAdHoc">
- [NAME]が、 あなたを会議チャットに招待しています。
-チャットに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このユーザーをミュート(消声)する場合は「ミュート」をクリックしてください。
- <form name="form">
- <button name="Accept" text="受け入れる"/>
- <button name="Decline" text="拒否"/>
- <button name="Mute" text="ミュート"/>
- </form>
- </notification>
- <notification name="VoiceChannelFull">
- あなたが参加しようとしているボイスコール[VOICE_CHANNEL_NAME]は、参加者が最大限に達しました。後でもう一度お試しください。
- </notification>
- <notification name="ProximalVoiceChannelFull">
- このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。
- </notification>
- <notification name="VoiceChannelDisconnected">
- [VOICE_CHANNEL_NAME]への接続が切断されました。空間ボイスチャットに再接続されます。
- </notification>
- <notification name="VoiceChannelDisconnectedP2P">
- [VOICE_CHANNEL_NAME]は、コールを終了しました。空間ボイスチャットに再接続されます。
- </notification>
- <notification name="P2PCallDeclined">
- [VOICE_CHANNEL_NAME]は、あなたのコールを拒否しました。空間ボイスチャットに再接続されます。
- </notification>
- <notification name="P2PCallNoAnswer">
- [VOICE_CHANNEL_NAME]は、あなたのコールを受け取れません。空間ボイスチャットに再接続されます。
- </notification>
- <notification name="VoiceChannelJoinFailed">
- [VOICE_CHANNEL_NAME]への接続に失敗しました。時間をおいて、再度、試みてください。空間ボイスチャットに再接続されます。
- </notification>
- <notification name="VoiceLoginRetry">
- あなた用のボイスチャンネルを作成しています。1分ほどかかります。
- </notification>
- <notification name="Cannot enter parcel: not a group member">
- 特定のグループメンバーのみこのエリアを訪問することができます。
- </notification>
- <notification name="Cannot enter parcel: banned">
- 立入禁止されているため、区画に入ることができません。
- </notification>
- <notification name="Cannot enter parcel: not on access list">
- アクセス・リストに含まれていないため、区画に入ることができません。
- </notification>
- <notification name="VoiceNotAllowed">
- あなたには[VOICE_CHANNEL_NAME]のボイス・チャットに接続する権限がありません。
- </notification>
- <notification name="VoiceCallGenericError">
- [VOICE_CHANNEL_NAME]のボイス・チャットに接続中に、エラーが発生しました。後でもう一度お試しください。
- </notification>
- <notification name="ServerVersionChanged">
- 異なるサーバーバージョンのリージョンに来ました。パフォーマンスに影響があるかもしれません。 クリックしてリリースノートを確認してみてください。
- </notification>
- <notification name="UnsupportedCommandSLURL">
- クリックした SLurl はサポートされていません。
- </notification>
- <notification name="IMToast">
- <form name="form">
- <button name="respondbutton" text="返答"/>
- </form>
- </notification>
- <notification name="AttachmentSaved">
- 付属物(アタッチメント)が保存されました。
- </notification>
- <notification name="UnableToFindHelpTopic">
- ヘルプトピックが見つかりませんでした。
- </notification>
- <global name="UnsupportedCPU">
- - あなたの CPU の速度は必須動作環境の条件を満たしていません。
- </global>
- <global name="UnsupportedGLRequirements">
- [APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
-
-この問題が何度も起きる場合は、[SUPPORT_SITE] へご連絡ください。
- </global>
- <global name="UnsupportedCPUAmount">
- 796
- </global>
- <global name="UnsupportedRAMAmount">
- 510
- </global>
- <global name="UnsupportedGPU">
- - あなたのグラフィック・カードは必須動作環境の条件を満たしていません。
- </global>
- <global name="UnsupportedRAM">
- - あなたのシステム・メモリは必須動作環境の条件を満たしていません。
- </global>
- <global name="PermYes">
- はい
- </global>
- <global name="PermNo">
- いいえ
- </global>
- <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
- 自分の土地をお持ちの場合、ホームロケーションに設定できます。
-お持ちでない場合は、地図で「インフォハブ」を探してください。
- </global>
-</notifications>
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+ <global name="skipnexttime">
+ 今後は表示しない
+ </global>
+ <global name="alwayschoose">
+ 常にこのオプションを選択
+ </global>
+ <global name="implicitclosebutton">
+ 閉じる
+ </global>
+ <template name="okbutton">
+ <form>
+ <button name="OK" text="$yestext"/>
+ </form>
+ </template>
+ <template name="okignore"/>
+ <template name="okcancelbuttons">
+ <form>
+ <button name="Cancel" text="$notext"/>
+ </form>
+ </template>
+ <template name="okcancelignore"/>
+ <template name="okhelpbuttons">
+ <form>
+ <button name="Help" text="$helptext"/>
+ </form>
+ </template>
+ <template name="yesnocancelbuttons">
+ <form>
+ <button name="Yes" text="$yestext"/>
+ <button name="No" text="$notext"/>
+ </form>
+ </template>
+ <notification functor="GenericAcknowledge" label="不明な警告メッセージ" name="MissingAlert">
+ あなたの [APP_NAME] のバージョンでは今受け取った警告メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。
+
+エラー詳細: 「[_NAME]」という警告は notifications.xml にありませんでした。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="FloaterNotFound">
+ フロータ・エラー:下記のコントロールが見つかりませんでした:
+[CONTROLS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="TutorialNotFound">
+ 現在利用可能なチュートリアルはありません。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="GenericAlert">
+ [MESSAGE]
+ </notification>
+ <notification name="GenericAlertYesCancel">
+ [MESSAGE]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/>
+ </notification>
+ <notification name="BadInstallation">
+ [APP_NAME] をアップデート中にエラーが発生しました。 最新バージョンをダウンロードしてください。 http://get.secondlife.com
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LoginFailedNoNetwork">
+ [SECOND_LIFE_GRID] に接続できませんでした。
+「[DIAGNOSTIC]」
+インターネット接続が正常かご確認ください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MessageTemplateNotFound">
+ メッセージテンプレート [PATH] がありませんでした。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="WearableSave">
+ 現在の衣服/ボディーパーツの変更を保存しますか?
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
+ </notification>
+ <notification name="CompileQueueSaveText">
+ 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。 [REASON] 後でもう一度試してください。
+ </notification>
+ <notification name="CompileQueueSaveBytecode">
+ 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。 [REASON]後でもう一度試してください。
+ </notification>
+ <notification name="WriteAnimationFail">
+ アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
+ </notification>
+ <notification name="UploadAuctionSnapshotFail">
+ 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 [REASON]
+ </notification>
+ <notification name="UnableToViewContentsMoreThanOne">
+ 一度に複数のアイテムのコンテンツは表示できません。
+選択するアイテムを1つだけにして、もう一度試してください。
+ </notification>
+ <notification name="SaveClothingBodyChanges">
+ 衣服/身体部位に対する変更をすべて保存しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
+ </notification>
+ <notification name="GrantModifyRights">
+ 他の住人に変更権限を与えると、その人はあなたが所有している
+すべてのオブジェクトを変更、削除、または取得することができるようになります。この許可を与えるときは細心の注意を払ってください。
+[FIRST_NAME] [LAST_NAME]に対して変更権限を与えますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="GrantModifyRightsMultiple">
+ 変更権限を与えると、その人はあなたが作成した全てのオブジェクトを変更することができます。
+この許可を与えるときには細心の注意を払ってください。
+選択した住人に変更権限を与えますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="RevokeModifyRights">
+ [FIRST_NAME] [LAST_NAME]に対して変更権限を取り消しますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="RevokeModifyRightsMultiple">
+ 選択した住人から変更権限を取り下げますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="UnableToCreateGroup">
+ グループを作成できません。
+[MESSAGE]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PanelGroupApply">
+ [NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="変更を無視" yestext="変更を適用"/>
+ </notification>
+ <notification name="MustSpecifyGroupNoticeSubject">
+ グループ通知の送信には、件名の記入が必要です。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AddGroupOwnerWarning">
+ あなたは [ROLE_NAME]の役割にメンバーを与えようとしています。
+任命されたメンバーが自ら退任しない限り、
+彼らを役柄から削除できません。
+操作を続行しますか?
+ <usetemplate ignoretext="グループオーナーを新しく追加する前に確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="AssignDangerousActionWarning">
+ あなたは[ROLE_NAME]に [ACTION_NAME]の能力を
+与えようとしています。
+
+ *警告*
+この能力を持つ役割のメンバーは、
+自分と他のメンバーに現在より強力な権限を割り当て、
+自分をオーナーとほぼ同様の立場に
+任命することもできるようになります。 この行為の意味をよく理解してから
+実行してください。
+
+この能力を[ROLE_NAME]に割り当てますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="AssignDangerousAbilityWarning">
+ あなたは[ROLE_NAME]に [ACTION_NAME]の能力を
+与えようとしています。
+
+ *警告*
+この能力をもつ役割のメンバーは、
+自分と他のメンバーにすべての能力を割り当て、
+自分をオーナーとほぼ同様の立場に任命できます。
+
+この能力を[ROLE_NAME]に割り当てますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="JoinGroupCanAfford">
+ このグループに参加するには、L$[COST]かかります。
+続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/>
+ </notification>
+ <notification name="JoinGroupCannotAfford">
+ このグループに加入するには、L$[COST]必要です。
+L$が不足しているのでこのグループに参加することができません。
+ </notification>
+ <notification name="CreateGroupCost">
+ このグループを作るには L$100 かかります。
+一人ではグループにならないので、永久に削除されてしまいます。
+48時間以内にメンバーを勧誘し入会してもらってください。
+ <usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/>
+ </notification>
+ <notification name="LandBuyPass">
+ L$[COST]で [TIME]時間この土地[PARCEL_NAME]に入ることができます。
+入場許可を購入しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="SalePriceRestriction">
+ 不特定の人に売却する場合には、
+売却価格はL$0以上に設定する必要があります。
+売却価格をL$0に設定する場合は、
+売却する個人を選択してください。
+ </notification>
+ <notification name="ConfirmLandSaleChange">
+ 選択された[LAND_SIZE]平方メートルの土地は、売り出し中に設定されています。
+売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmLandSaleToAnyoneChange">
+ 注:「誰にでも売却する」をクリックすると、
+あなたの土地は[SECOND_LIFE] のコミュニティのどこからでも
+(この地域にないコミュニティを含む)購入できるようになります。
+
+選択された[LAND_SIZE]平方メートルの土地は、
+売り出し中に設定されています。
+売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsDeededToGroup">
+ この区画のグループ[NAME]共有のすべてのオブジェクトを、以前のオーナーの持ち物に戻そうとしています。
+操作を続行しますか?
+
+*警告* これにより、
+グループに譲渡された譲渡不可能なオブジェクトは削除されます!
+オブジェクト: [N]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedByUser">
+ この区画で、
+住人[NAME]が所有する全てのオブジェクトを
+彼らの持ち物に本当に返却してもよいですか?
+
+オブジェクト: [N]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsOwnedBySelf">
+ この土地区画内にある、あなたが所有するすべてのオブジェクトを、
+あなたの持ち物に戻そうとしています。操作を続行しますか?
+
+オブジェクト: [N]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedBySelf">
+ この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、
+それぞれのオーナーの持ち物に戻そうとしています。
+操作を続行しますか?
+グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。
+
+*警告* これにより、
+グループに譲渡された譲渡不可能なオブジェクトは削除されます!
+オブジェクト: [N]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByUser">
+ この土地区画内にある、
+[NAME]以外による所有のオブジェクトをすべてそれぞれのオーナーの持ち物に返却しようとしています。
+操作を続行しますか?グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。
+
+*警告* これにより、
+グループに譲渡された譲渡不可能なオブジェクトは削除されます!
+オブジェクト: [N]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ReturnAllTopObjects">
+ 全てのリストされたオブジェクトを所有者に本当に返却しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="DisableAllTopObjects">
+ この地域内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ReturnObjectsNotOwnedByGroup">
+ この土地の区画上のオブジェクトのうち、グループ[NAME]
+との間で共有していないオブジェクトをオーナーに返却しますか?
+
+オブジェクト: [N]
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="UnableToDisableOutsideScripts">
+ スクリプトを無効にできません。
+この地域全体が「ダメージ有効」に設定されています。
+武器を使用するにはスクリプトの実行を許可する必要があります。
+ </notification>
+ <notification name="MustBeInParcel">
+ 着地点を設定するには、この区画の内側に
+立ってください。
+ </notification>
+ <notification name="PromptRecipientEmail">
+ 受信者の有効なEメールアドレスを入力してください。
+ </notification>
+ <notification name="PromptSelfEmail">
+ あなたのEメール・アドレスを入力してください。
+ </notification>
+ <notification name="PromptMissingSubjMsg">
+ デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ErrorProcessingSnapshot">
+ スナップショット・データの処理エラー
+ </notification>
+ <notification name="ErrorEncodingSnapshot">
+ スナップショットのエンコード化でエラーが出ました!
+ </notification>
+ <notification name="ErrorUploadingPostcard">
+ 次の理由で、スナップショットの送信時に問題が起こりました: [REASON]
+ </notification>
+ <notification name="ErrorUploadingReportScreenshot">
+ 次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON]
+ </notification>
+ <notification name="MustAgreeToLogIn">
+ [SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。
+ </notification>
+ <notification name="CouldNotPutOnOutfit">
+ 服装を装着できません。
+服装フォルダに衣服、身体部位、付属品がありません。
+ </notification>
+ <notification name="CannotWearTrash">
+ ゴミ箱にある服やボディーパーツの着用はできません。
+ </notification>
+ <notification name="CannotWearInfoNotComplete">
+ まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。
+ </notification>
+ <notification name="MustHaveAccountToLogIn">
+ おっと! 記入漏れがありますよ。
+アバターのファーストネームとラストネームの両方を入力する必要があります。
+
+[SECOND_LIFE]に入るには、アカウントが必要です。 アカウントを作成しますか?
+ <url name="url">
+ https://join.secondlife.com/index.php?lang=ja-JP
+ </url>
+ <usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/>
+ </notification>
+ <notification name="AddClassified">
+ 検索ディレクトリの「クラシファイド」セクションに、
+クラシファイド広告が1週間掲載されます。
+広告を記入後、「公開」をクリックし、ディレクトリに
+追加します。
+「公開」をクリックすると、支払金額を尋ねられます。
+多く払うほど、広告がクラシファイド・リストとキーワード検索
+の上位に表示されます。
+ <usetemplate ignoretext="新規クラシファイド広告作成方法" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="DeleteClassified">
+ クラシファイド広告[NAME]の削除をしますか?
+支払い済みの料金は返金されません。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ClassifiedSave">
+ クラシファイド広告[NAME]への変更を保存しますか?
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
+ </notification>
+ <notification name="DeleteAvatarPick">
+ ピック[PICK]を削除しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="PromptGoToEventsPage">
+ [SECOND_LIFE]イベント・ウェブ・ページに移動しますか?
+ <url name="url">
+ http://jp.secondlife.com/events/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="SelectProposalToView">
+ 表示する提案を選択してください。
+ </notification>
+ <notification name="SelectHistoryItemToView">
+ 表示する履歴アイテムを選択してください。
+ </notification>
+ <notification name="ResetShowNextTimeDialogs">
+ これらのポップアップ全てを再度有効化しますか?(以前「今後は表示しない」と指定しています)
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="SkipShowNextTimeDialogs">
+ スキップ可能なポップアップ全てを無効化しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="CacheWillClear">
+ [APP_NAME]の再起動後にキャッシュがクリアされます。
+ </notification>
+ <notification name="CacheWillBeMoved">
+ [APP_NAME]の再起動後にキャッシュが移動されます。
+注意:これによりキャッシュがクリアされます。
+ </notification>
+ <notification name="ChangeConnectionPort">
+ ポートの設定は、[APP_NAME]の再起動後に有効になります。
+ </notification>
+ <notification name="ChangeSkin">
+ 新しいスキンは[APP_NAME]を再起動すると現れます
+ </notification>
+ <notification name="GoToAuctionPage">
+ [SECOND_LIFE]ウェブ・ページに移動し、 入札あるいはオークションの詳細を確認しますか?
+ <url name="url">
+ http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+ </url>
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="SaveChanges">
+ 変更を保存しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
+ </notification>
+ <notification name="GestureSaveFailedTooManySteps">
+ ジェスチャーの保存に失敗しました。
+ステップが多すぎます。
+ステップをいくつか削除してから再保存してください
+ </notification>
+ <notification name="GestureSaveFailedTryAgain">
+ ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。
+ </notification>
+ <notification name="GestureSaveFailedObjectNotFound">
+ ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
+オブジェクトが範囲内に存在しないか、または削除された可能性があります。
+ </notification>
+ <notification name="GestureSaveFailedReason">
+ 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
+ </notification>
+ <notification name="SaveNotecardFailObjectNotFound">
+ ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
+オブジェクトが範囲内に存在しないか、または削除された可能性があります。
+ </notification>
+ <notification name="SaveNotecardFailReason">
+ 次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
+ </notification>
+ <notification name="ScriptCannotUndo">
+ あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。
+サーバーの最新保存バージョンをロードしますか?
+(**警告**:この操作後元に戻すことはできません)
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="SaveScriptFailReason">
+ 次の理由で、スクリプトの保存に問題が起こりました。 [REASON]。 後でもう一度試してください。
+ </notification>
+ <notification name="SaveScriptFailObjectNotFound">
+ スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。
+オブジェクトは範囲外か、または削除されているかもしれません。
+ </notification>
+ <notification name="SaveBytecodeFailReason">
+ 次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
+ </notification>
+ <notification name="StartRegionEmpty">
+ ログイン位置が不明です。
+ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CouldNotStartStopScript">
+ スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。
+オブジェクトが範囲内に存在しないか、または削除された可能性があります。
+ </notification>
+ <notification name="CannotDownloadFile">
+ ファイルをダウンロードできません。
+ </notification>
+ <notification name="CannotWriteFile">
+ ファイル[[FILE]]を書き込めません。
+ </notification>
+ <notification name="UnsupportedHardware">
+ 警告: お使いのシステムは [APP_NAME] の必要最低限の動作環境を満たしていません。 このまま [APP_NAME] を使用すると、パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
+
+最低動作環境
+[_URL] で詳しい情報を確認しますか?
+ <url name="url" option="0">
+ http://secondlife.com/support/sysreqs.php?lang=ja
+ </url>
+ <usetemplate ignoretext="使用しているコンピューターのハードウェアがサポートされていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="UnknownGPU">
+ お使いのシステムには、現在 [APP_NAME] が認識できないグラフィックカードが搭載されています。
+[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 [APP_NAME] は正常に実行される可能性が高いですが、表示設定を調整する必要があるかもしれません。
+(環境設定 &gt; 表示)
+ <form name="form">
+ <ignore name="ignore" text="使用中のグラフックカードが認識されませんでした"/>
+ </form>
+ </notification>
+ <notification name="DisplaySettingsNoShaders">
+ [APP_NAME] は、
+グラフィック・ドライバの初期化中にクラッシュしました。
+一般的なドライバ・エラーを回避するため、「品質およびパフォーマンス」は「低」に設定されます。
+これにより、いくつかのグラフィックス機能は無効になります。
+グラフィックカード・ドライバのアップデートをお勧めします。
+「グラフィックの品質」は「環境設定」>「表示」から上げることができます。
+ </notification>
+ <notification name="RegionNoTerraforming">
+ この地域[REGION] は、テラフォーミングができません。
+ </notification>
+ <notification name="CannotCopyWarning">
+ あなたはこのアイテムのコピーを
+許されていないので、人にあげると
+持ち物から失われます。 本当に
+これをあげたいですか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="CannotGiveItem">
+ 持ち物のアイテムを渡せません。
+ </notification>
+ <notification name="TransactionCancelled">
+ 取引がキャンセルされました。
+ </notification>
+ <notification name="TooManyItems">
+ 一度のインベントリ交換で、42以上のアイテムは送れません。
+ </notification>
+ <notification name="NoItems">
+ 選択したアイテムを譲渡できる権限がありません。
+ </notification>
+ <notification name="CannotCopyCountItems">
+ あなたは選択したアイテムの[COUNT]のコピーを
+許されていません。
+これらのアイテムはあなたの持ち物から失われます。
+本当にアイテムをあげたいですか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="CannotGiveCategory">
+ 選択したフォルダを譲渡できる権限がありません
+ </notification>
+ <notification name="FreezeAvatar">
+ このアバターをフリーズしますか?
+アバターは一時的に動けなくなり、
+チャットなど、この世界に対する関わりを持つことができなくなります。
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/>
+ </notification>
+ <notification name="FreezeAvatarFullname">
+ [AVATAR_NAME]をフリーズしますか?
+フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/>
+ </notification>
+ <notification name="EjectAvatarFullname">
+ あなたの土地から[AVATAR_NAME]を追放しますか?
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/>
+ </notification>
+ <notification name="EjectAvatarNoBan">
+ このアバターをあなたの土地から追放しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
+ </notification>
+ <notification name="EjectAvatarFullnameNoBan">
+ [AVATAR_NAME] をあなたの土地から追放しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
+ </notification>
+ <notification name="AcquireErrorTooManyObjects">
+ 取得エラー:選択したオブジェクトの数が多すぎます。
+ </notification>
+ <notification name="AcquireErrorObjectSpan">
+ 取得エラー:
+オブジェクトが複数の地域にまたがって存在しています。
+取得するオブジェクトは、
+すべて同じ地域内に移動させてください。
+ </notification>
+ <notification name="PromptGoToCurrencyPage">
+ [EXTRA]
+
+[_URL] でリンデンドル購入に関する情報を確認しますか?
+ <url name="url">
+ http://jp.secondlife.com/currency/
+ </url>
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="UnableToLinkObjects">
+ これらの[COUNT]オブジェクトをリンクできません。
+最大[MAX]オブジェクトをリンクすることができます。
+ </notification>
+ <notification name="CannotLinkIncompleteSet">
+ セットとして揃っているオブジェクトのみリンクできます。複数の
+オブジェクトを選択してください。
+ </notification>
+ <notification name="CannotLinkModify">
+ すべてのオブジェクトに対する修正許可があなたにないため、
+リンクできません。
+
+オブジェクトがすべてロックされておらず、あなたのものであることを確認してください。
+ </notification>
+ <notification name="CannotLinkDifferentOwners">
+ 所有者が異なるため、すべてのオブジェクトを
+リンクできません。
+
+自分が所有しているオブジェクトだけを選択してください。
+ </notification>
+ <notification name="NoFileExtension">
+ ファイル「[FILE]」の拡張子が無効です。
+
+このファイルの拡張子が正しいかどうかを確認してください。
+ </notification>
+ <notification name="InvalidFileExtension">
+ ファイル拡張子[EXTENSION]は無効です
+正しい拡張子:[VALIDS]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotUploadSoundFile">
+ 読み込みのためにアップロードされたサウンドファイルを開けません:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotRIFF">
+ ファイルがRIFF WAVEファイルとして認識されません:
+[FILE]
+ </notification>
+ <notification name="SoundFileNotPCM">
+ ファイルがPCM WAVEオーディオ・ファイルとして認識されません:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidChannelCount">
+ ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidSampleRate">
+ ファイルのサンプル・レートがサポート外です(44.1kを指定する必要があります):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidWordSize">
+ ファイルのワード・サイズがサポート外です(8または16ビットを指定する必要があります):
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidHeader">
+ WAVヘッダーにデータ・チャンクが見つかりません:
+[FILE]
+ </notification>
+ <notification name="SoundFileInvalidTooLong">
+ オーディオ・ファイルが長すぎます。(最大10秒):
+[FILE]
+ </notification>
+ <notification name="ProblemWithFile">
+ ファイル[FILE]にエラーがあります。
+
+[ERROR]
+ </notification>
+ <notification name="CannotOpenTemporarySoundFile">
+ 書き込み用の一時圧縮サウンド・ファイルを開くことができません:[FILE]
+ </notification>
+ <notification name="UnknownVorbisEncodeFailure">
+ 未知のVorbis 暗号化に失敗: [FILE]
+ </notification>
+ <notification name="CannotEncodeFile">
+ 次のファイルのエンコードができません: [FILE]
+ </notification>
+ <notification name="CorruptResourceFile">
+ 破損したリソースファイル: [FILE]
+ </notification>
+ <notification name="UnknownResourceFileVersion">
+ 未知のlindenリソースファイルのバージョン: [FILE]
+ </notification>
+ <notification name="UnableToCreateOutputFile">
+ 服装ファイルを作成できません: [FILE]
+ </notification>
+ <notification name="DoNotSupportBulkAnimationUpload">
+ 現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。
+ </notification>
+ <notification name="CannotUploadReason">
+ 次の理由で、[FILE] をアップロードできません: [REASON]
+あとでもう一度試してください。
+ </notification>
+ <notification name="LandmarkCreated">
+ 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。
+ </notification>
+ <notification name="CannotCreateLandmarkNotOwner">
+ 土地の所有者が許可していないため、
+ランドマークを作成することはできません。
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoScripts">
+ 再編集は不可能です。
+スクリプト化されたオブジェクトを選択してください。
+ </notification>
+ <notification name="CannotRecompileSelectObjectsNoPermission">
+ 「再編集」は不可能です。
+
+変更修正権限のある
+スクリプト化されたオブジェクトを選択してください。
+ </notification>
+ <notification name="CannotResetSelectObjectsNoScripts">
+ 「再設定」を行うことができません。
+
+スクリプト化されたオブジェクトを選択してください。
+ </notification>
+ <notification name="CannotResetSelectObjectsNoPermission">
+ 「再設定」を行うことができません。
+
+変更修正権限のある
+スクリプト化されたオブジェクトを選択してください。
+ </notification>
+ <notification name="CannotSetRunningSelectObjectsNoScripts">
+ スクリプトの「実行」の設定ができません。
+
+スクリプト化されたオブジェクトを選択してください。
+ </notification>
+ <notification name="CannotSetRunningNotSelectObjectsNoScripts">
+ スクリプトを「実行しない」に設定できません。
+
+スクリプト化されたオブジェクトを選択してください。
+ </notification>
+ <notification name="NoFrontmostFloater">
+ 保存すべきfrontmostフロータがありません。
+ </notification>
+ <notification name="SeachFilteredOnShortWords">
+ 指定した検索クエリは変更され、短すぎる語句は取り除かれています。
+
+検索語句: [FINALQUERY]
+ </notification>
+ <notification name="SeachFilteredOnShortWordsEmpty">
+ 指定した検索語句が短すぎたため、検索は行われませんでした。
+ </notification>
+ <notification name="CouldNotTeleportReason">
+ テレポートに失敗しました。
+[REASON]
+ </notification>
+ <notification name="invalid_tport">
+ テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
+このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
+ </notification>
+ <notification name="invalid_region_handoff">
+ リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
+このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
+ </notification>
+ <notification name="blocked_tport">
+ 申し訳ございません。テレポートは現在、ブロックされています。もう少し後でやり直してください。
+やり直してもテレポートできない場合は、いったんログアウトし、再度ログインして問題を解決してください。
+ </notification>
+ <notification name="nolandmark_tport">
+ 残念ながら、システムはランドマーク目的地を探せませんでした。
+ </notification>
+ <notification name="timeout_tport">
+ 申し訳ございません。システムはテレポート接続を完了できませんでした。
+もう少し後でやり直してください。
+ </notification>
+ <notification name="noaccess_tport">
+ 残念ながら、そのテレポート目的地へのアクセスがありません。
+ </notification>
+ <notification name="missing_attach_tport">
+ 添付物は、まだ到着していません。あと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてからテレポートをやり直してださい。
+ </notification>
+ <notification name="too_many_uploads_tport">
+ この地域の資産キューが現在込み合っているため、テレポート・リクエストを時間通りに処理することが難しい状況です。
+数分後にやり直すか、または混雑していない他の地域をお試しください。
+ </notification>
+ <notification name="expired_tport">
+ 申し訳ございません。システムはテレポート・リクエストを時間どおりに完了できませんでした。数分後にやり直してください。
+ </notification>
+ <notification name="expired_region_handoff">
+ 申し訳ございません。システムは地域間の移動を時間どおりに完了できませんでした。
+数分後にやり直してください。
+ </notification>
+ <notification name="no_host">
+ テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。
+ </notification>
+ <notification name="no_inventory_host">
+ 持ち物システムは現在利用できません。
+ </notification>
+ <notification name="CannotSetLandOwnerNothingSelected">
+ 土地所有者設定ができません:
+区画が選定されていません。
+ </notification>
+ <notification name="CannotSetLandOwnerMultipleRegions">
+ 複数の地域が選択されたため、
+土地の所有権を取得できません。
+選択する面積を小さくして、もう一度試してください。
+ </notification>
+ <notification name="ForceOwnerAuctionWarning">
+ この区画はオークションに出品されています。
+区画の所有権を取得するとオークションが無効になり、
+入札が開始していたら不満に思う住人が出てくるかもしれません。
+所有権を取得しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="CannotContentifyNothingSelected">
+ コンテンツ化は不可能です:
+区画が選定されていません。
+ </notification>
+ <notification name="CannotContentifyNoRegion">
+ コンテンツ化は不可能です:
+土地が選択されていません。
+ </notification>
+ <notification name="CannotReleaseLandNothingSelected">
+ 土地を破棄することができません:
+区画が選定されていません。
+ </notification>
+ <notification name="CannotReleaseLandNoRegion">
+ 土地を破棄できません:
+地域が見つかりません。
+ </notification>
+ <notification name="CannotBuyLandNothingSelected">
+ 土地を購入できません:
+区画が選定されていません。
+ </notification>
+ <notification name="CannotBuyLandNoRegion">
+ 土地を購入できません:
+この土地がある地域を見つけることができません
+ </notification>
+ <notification name="CannotCloseFloaterBuyLand">
+ [APP_NAME]による、
+この取引の見積りが完了するまで「土地を購入」ウィンドウを閉じることはできません。
+ </notification>
+ <notification name="CannotDeedLandNothingSelected">
+ 土地を譲渡できません:
+区画が選定されていません。
+ </notification>
+ <notification name="CannotDeedLandNoGroup">
+ 土地を譲渡できません:
+グループが選択されていません。
+ </notification>
+ <notification name="CannotDeedLandNoRegion">
+ 土地を譲渡できません:
+この土地がある地域が見つかりません。
+ </notification>
+ <notification name="CannotDeedLandMultipleSelected">
+ 土地を譲渡できません:
+複数の区画が選択されています。
+
+これより1つの区画を選択してください。
+ </notification>
+ <notification name="ParcelCanPlayMedia">
+ ここではストリーミング・メディア再生が可能です。
+メディアのストリーミングには、高速なインターネット接続環境が必要です。
+
+利用可能になったら再生しますか?
+(このオプションは、「環境設定」>「音声とビデオ」で後からでも変更できます)
+ <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアを再生"/>
+ </notification>
+ <notification name="CannotDeedLandWaitingForServer">
+ 土地を譲渡できません:
+サーバーからの所有権情報を待っています。
+
+再度、試みてください。
+ </notification>
+ <notification name="CannotDeedLandNoTransfer">
+ 土地を譲渡できません:
+この地域 [REGION] では土地の譲渡が許されていません。
+ </notification>
+ <notification name="CannotReleaseLandWatingForServer">
+ 土地を破棄できません:
+サーバーが区画情報を更新するのを待っています。
+
+もう少し後でやり直してください。
+ </notification>
+ <notification name="CannotReleaseLandSelected">
+ 土地を破棄できません:
+あなたは、選択したすべての区画を所有していません。
+
+1つの区画を選択してください。
+ </notification>
+ <notification name="CannotReleaseLandDontOwn">
+ 土地を破棄できません:
+あなたはこの土地を手放すことを許可されていません。
+あなたの区画は緑色で表示されています。
+ </notification>
+ <notification name="CannotReleaseLandRegionNotFound">
+ 土地を破棄できません:
+この土地がある地域が見つかりません。
+ </notification>
+ <notification name="CannotReleaseLandNoTransfer">
+ 土地を破棄できません:
+この [REGION] では土地の譲渡が許されていません。
+ </notification>
+ <notification name="CannotReleaseLandPartialSelection">
+ 土地を破棄できません:
+区画全体を選択して破棄する必要があります。
+
+区画全体を選択するか、または、まず最初に区画を分割してください。
+ </notification>
+ <notification name="ReleaseLandWarning">
+ あなたは、[AREA]平方メートルの土地を破棄しようとしています。
+この区画を破棄するとあなたの土地ではなくなりますが、
+L$は返金されません。
+
+土地を破棄しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNothingSelected">
+ 土地を分割できません:
+
+区画が選定されていません。
+ </notification>
+ <notification name="CannotDivideLandPartialSelection">
+ 土地を分割できません:
+
+区画全体が選択されています。
+区画の一部を選択してください。
+ </notification>
+ <notification name="LandDivideWarning">
+ この土地を分割すると、2つの区画に別れます。
+区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。
+
+土地の分割操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="CannotDivideLandNoRegion">
+ 土地を分割できません:
+この土地がある地域が見つかりません。
+ </notification>
+ <notification name="CannotJoinLandNoRegion">
+ 土地を統合できません:
+この土地がある地域が見つかりません。
+ </notification>
+ <notification name="CannotJoinLandNothingSelected">
+ 土地を統合できませんでした:
+区画が選定されていません。
+ </notification>
+ <notification name="CannotJoinLandEntireParcelSelected">
+ 土地を統合できません:
+1つの区画しか選択されていません。
+
+両方の区画をまたいで土地を選択してください。
+ </notification>
+ <notification name="CannotJoinLandSelection">
+ 土地を統合できません:
+1つ以上の区画を選択する必要があります。
+
+両方の区画をまたいで土地を選択してください。
+ </notification>
+ <notification name="JoinLandWarning">
+ この土地を統合すると、選択された長方形に交差する
+全ての区画を基にして1つの大きな区画が作成されます。
+新しい区画の名前とオプションを再設定する必要があります。
+
+土地を統合しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmNotecardSave">
+ このアイテムをコピー、表示する前に、ノートカードの保存が必要です。 保存しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmItemCopy">
+ このアイテムをあなたの持ち物にコピーしますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/>
+ </notification>
+ <notification name="ResolutionSwitchFail">
+ 解像度を [RESX]x[RESY]に切り替えることができませんでした。
+ </notification>
+ <notification name="ErrorUndefinedGrasses">
+ エラー:未定義の植物:[SPECIES]
+ </notification>
+ <notification name="ErrorUndefinedTrees">
+ エラー:未定義の樹木:[SPECIES]
+ </notification>
+ <notification name="CannotSaveWearableOutOfSpace">
+ 「[NAME]」を服のファイルに保存できません。 コンピューターの
+ディスクスペースを少し増やしてから、もう一度
+保存してみてください。
+ </notification>
+ <notification name="CannotSaveToAssetStore">
+ [NAME]を中央資産格納庫に保存できません。
+これは一時的な不具合です。
+服飾品などをカスタマイズし、数分後にもう一度保存してください。
+ </notification>
+ <notification name="YouHaveBeenLoggedOut">
+ あなたは[SECOND_LIFE]からログアウトされました。
+ [MESSAGE]
+「IMとチャットを表示」をクリックすると、
+現在あるIMとチャットを確認できます。
+確認しない場合は「終了」をクリックし、
+すぐに[APP_NAME]を終了してください。
+ <usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/>
+ </notification>
+ <notification name="OnlyOfficerCanBuyLand">
+ グループ用の土地の購入ができません:
+あなたにはアクティブなグループのために土地を購入する権限がありません。
+ </notification>
+ <notification label="フレンドを追加" name="AddFriend">
+ フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。
+
+[NAME] にフレンドシップを送りますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification label="フレンドを追加" name="AddFriendWithMessage">
+ フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。
+
+[NAME] にフレンドシップのオファーをしますか?
+ <form name="form">
+ <input name="message">
+ フレンドとして登録してくれますか?
+ </input>
+ <button name="Offer" text="OK"/>
+ <button name="Cancel" text="キャンセル"/>
+ </form>
+ </notification>
+ <notification name="RemoveFromFriends">
+ [FIRST_NAME] [LAST_NAME]をフレンドリストから削除しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="RemoveMultipleFromFriends">
+ フレンドリストから複数のフレンドを削除しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedPublicObjectsByUser">
+ **[AVATAR_NAME]**
+所有のすべてのスクリプト・オブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllScriptedObjectsByUser">
+ **[AVATAR_NAME]**
+所有のすべてのスクリプト・オブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="GodDeleteAllObjectsByUser">
+ **[AVATAR_NAME]**
+所有のすべてのオブジェクト(スクリプト・オブジェクトと非スクリプト・オブジェクト)を
+このシム内のすべての土地から削除しようとしています。操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BlankClassifiedName">
+ クラシファイドに名前を指定してください。
+ </notification>
+ <notification name="MinClassifiedPrice">
+ 広告料の支払い金額は、Lと[MIN_PRICE]が下限です。
+
+金額を増やしてください。
+ </notification>
+ <notification name="ConfirmObjectDeleteLock">
+ 選択したアイテムの1つ以上がロックされています。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopy">
+ 選択したアイテムの1つ以上がコピーできません。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoOwn">
+ 選択したアイテムの1つ以上を、あなたは所有していません。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopy">
+ 一つ以上のオブジェクトがロックされています。
+一つ以上のオブジェクトがコピーできません。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoOwn">
+ 一つ以上のオブジェクトがロックされています。
+1つ以上のオブジェクトを、あなたは所有していません。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteNoCopyNoOwn">
+ 一つ以上のオブジェクトがコピーできません。
+1つ以上のオブジェクトを、あなたは所有していません。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+ 一つ以上のオブジェクトがロックされています。
+一つ以上のオブジェクトがコピーできません。
+1つ以上のオブジェクトを、あなたは所有していません。
+
+本当にこれらのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLock">
+ 一つ以上のオブジェクトがロックされています。
+
+これらのアイテムの取得を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeNoOwn">
+ 取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。
+あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。
+そのため、将来、変更やコピーの能力が制限される可能性があります。
+
+これらのアイテムの取得を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmObjectTakeLockNoOwn">
+ 1つ以上のオブジェクトがロックされています。
+取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。
+あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。
+そのため、将来、変更やコピーの能力が制限される可能性があります。
+この選択内容のままで続行することは可能ですが、
+
+これらのアイテムの取得を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="CantBuyLandAcrossMultipleRegions">
+ 複数の地域が選択されたため、土地を購入できません。
+
+選択する面積を小さくしてもう一度試してください。
+ </notification>
+ <notification name="DeedLandToGroup">
+ この区画の譲渡に際しては、
+このグループが十分な土地クレジットを保有および維持していることが必要です。
+土地の購入価格は、オーナーに返金されません。譲渡された区画が売れると、販売価格はグループ・メンバーに均等に分配されます。
+
+この[AREA]平方メートルの土地を、グループ
+「[GROUP_NAME]」に譲渡しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="DeedLandToGroupWithContribution">
+ この区画の譲渡に際しては、このグループが
+十分な土地クレジットを保有および維持していることが必要です。
+この譲渡により、
+「[FIRST_NAME] [LAST_NAME]」から
+グループに対して土地が同時に提供されます。
+土地の購入価格は、オーナーに返金されません。
+譲渡された区画が売れると、販売料金はグループ・メンバーに均等に分配されます。
+
+この[AREA]平方メートルの土地を、グループ「[GROUP_NAME]」に譲渡しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="DisplaySetToSafe">
+ -safeオプションを指定したので、
+表示設定はセーフ・レベルに設定されています。
+ </notification>
+ <notification name="DisplaySetToRecommended">
+ 表示設定は、あなたのシステム構成に
+基づいて推奨されたレベルに設定されています。
+ </notification>
+ <notification name="ErrorMessage">
+ [ERROR_MESSAGE]
+ </notification>
+ <notification name="AvatarMovedDesired">
+ 目的地は現在ご利用いただけません。
+近くのリージョンに移動しました。
+ </notification>
+ <notification name="AvatarMovedLast">
+ 前回いた場所は現在ご利用いただけません。
+近くのリージョンに移動しました。
+ </notification>
+ <notification name="AvatarMovedHome">
+ ホームロケーションは現在ご利用いただけません。
+近くのリージョンに移動しました。
+新たにホームを設定しなおすといいかもしれません。
+ </notification>
+ <notification name="ClothingLoading">
+ 現在衣類をダウンロード中です。
+このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。
+ <form name="form">
+ <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっています"/>
+ </form>
+ </notification>
+ <notification name="FirstRun">
+ [APP_NAME]のインストールが完了しました。
+
+[SECOND_LIFE] の使用が初めての方は、
+ログイン前にアカウントの作成が必要です。
+www.secondlife.comに移動し、新規アカウントの作成を行いますか?
+ <usetemplate name="okcancelbuttons" notext="続行" yestext="新規アカウント..."/>
+ </notification>
+ <notification name="LoginPacketNeverReceived">
+ 接続がなかなかできません。 お使いのインターネット接続か、[SECOND_LIFE_GRID] の問題と考えられます。
+
+インターネット接続を確認してから数分後に再接続するか、ヘルプをクリックして [SUPPORT_SITE] をご覧になるか、テレポートをクリックしてホームに移動してみてください。
+ <url name="url">
+ http://jp.secondlife.com/support/
+ </url>
+ <form name="form">
+ <button name="OK" text="OK"/>
+ <button name="Help" text="ヘルプ"/>
+ <button name="Teleport" text="テレポート"/>
+ </form>
+ </notification>
+ <notification name="WelcomeChooseSex">
+ まもなくあなたのアバターが表示されます。
+
+矢印キーを使用して歩きます。
+ヘルプが必要なときや[SECOND_LIFE]について知りたいときは、
+F1キーを押してください。
+男性あるいは女性のアバターを選択してください。
+あなたの決定は後で変更できます。
+ <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
+ </notification>
+ <notification name="NotEnoughCurrency">
+ [NAME] L$[PRICE] 残高不足のため実行不可です。
+ </notification>
+ <notification name="GrantedModifyRights">
+ [FIRST_NAME] [LAST_NAME] のオブジェクトの編集権限を得ました。
+ </notification>
+ <notification name="RevokedModifyRights">
+ [FIRST_NAME] [LAST_NAME]
+のオブジェクトを修正する権限が取り消されました。
+ </notification>
+ <notification name="FlushMapVisibilityCaches">
+ この手順は、この地域の地図のキャッシュを消去します。
+これが便利なのはデバッグ時のみです。
+(作成中は5分間経つと、全員の地図が再度ログイン後に
+更新されます)
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BuyOneObjectOnly">
+ 一度に一つ以上のオブジェクトをと買うことはできません。 オブジェクトを一つだけ選んでもう一度お試しください。
+ </notification>
+ <notification name="OnlyCopyContentsOfSingleItem">
+ 一度に複数のアイテムのコンテンツはコピーできません。
+選択するオブジェクトを1つだけにして、もう一度試してください。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="KickUsersFromRegion">
+ この地域の全ての住人をホームにテレポートしますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="EstateObjectReturn">
+ [USER_NAME]が所有しているオブジェクトを返却しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="InvalidTerrainBitDepth">
+ 地域テクスチャを設定できませんでした:
+地形テクスチャ[TEXTURE_NUM]は、無効のビット深度[TEXTURE_BIT_DEPTH]です。
+
+テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
+ </notification>
+ <notification name="InvalidTerrainSize">
+ 地域テクスチャを設定できませんでした:
+地形テクスチャ[TEXTURE_NUM]は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]では大きすぎます。
+
+テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
+ </notification>
+ <notification name="RawUploadStarted">
+ アップロード開始。 接続速度によっては、
+最大2分間かかります。
+ </notification>
+ <notification name="ConfirmBakeTerrain">
+ 現在の地形を構築しようとしています。
+この操作を行うと、現在の地形が上昇/下降の制限範囲の中心になり、「復帰」ツールのデフォルトになります。
+操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="MaxAllowedAgentOnRegion">
+ 許可住人は [MAX_AGENTS] 人までです。
+ </notification>
+ <notification name="MaxBannedAgentsOnRegion">
+ 禁止住人は[MAX_BANNED]人までです。
+ </notification>
+ <notification name="MaxAgentOnRegionBatch">
+ [NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。
+ </notification>
+ <notification name="MaxAllowedGroupsOnRegion">
+ 許可グループは[MAX_GROUPS]グループまでです。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/>
+ </notification>
+ <notification name="MaxManagersOnRegion">
+ 不動産マネージャーは[MAX_MANAGER]人までです。
+ </notification>
+ <notification name="OwnerCanNotBeDenied">
+ 不動産オーナーを不動産「禁止住人」リストに追加できません。
+ </notification>
+ <notification name="CanNotChangeAppearanceUntilLoaded">
+ 服および形がロードされるまで、容姿の変更はできません。
+ </notification>
+ <notification name="ClassifiedMustBeAlphanumeric">
+ クラシファイド広告の名前は、アルファベットか
+数字で始めます。 句読点では始められません。
+ </notification>
+ <notification name="CantSetBuyObject">
+ オブジェクトが販売対象ではないため、オブジェクトの購入が設定できません。
+販売対象のオブジェクトを設定し、もう一度試してください。
+ </notification>
+ <notification name="FinishedRawDownload">
+ 未加工の地形ファイルを次へとダウンロードしました:
+[DOWNLOAD_PATH]。
+ </notification>
+ <notification name="DownloadWindowsMandatory">
+ [APP_NAME]の新しいバージョンが利用可能です。
+[MESSAGE]
+[APP_NAME]を使用するためには、
+このアップデートをダウンロードする必要があります。
+ <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadWindows">
+ [APP_NAME]のアップデート・バージョンが利用可能です。
+[MESSAGE]
+このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
+ <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadWindowsReleaseForDownload">
+ [APP_NAME]のアップデート・バージョンが利用可能です。
+[MESSAGE]
+このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
+ <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadLinuxMandatory">
+ [APP_NAME] の最新バージョンがご利用可能です。
+[MESSAGE]
+[APP_NAME] をご利用になるにはこのアップデートは必須です。
+ <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadLinux">
+ [APP_NAME] のアップデートバージョンがご利用可能です。
+[MESSAGE]
+このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
+ <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadLinuxReleaseForDownload">
+ [APP_NAME] のアップデートバージョンがご利用可能です。
+[MESSAGE]
+このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
+ <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadMacMandatory">
+ [APP_NAME]の新しいバージョンが利用可能です。
+[MESSAGE]
+[APP_NAME]を使用するために、
+このアップデートをダウンロードする必要があります。
+
+アプリケーションがあるフォルダにダウンロードしますか?
+ <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadMac">
+ [APP_NAME]のアップデート・バージョンが利用可能です。
+[MESSAGE]
+このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
+
+アプリケーションがあるフォルダにダウンロードしますか?
+ <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DownloadMacReleaseForDownload">
+ [APP_NAME]のアップデート・バージョンが利用可能です。
+[MESSAGE]
+このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。
+
+アプリケーションがあるフォルダにダウンロードしますか?
+ <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
+ </notification>
+ <notification name="DeedObjectToGroup">
+ このオブジェクトを譲渡するとグループは以下のことが可能です:
+* オブジェクトに支払われたL$を受領します。
+ <usetemplate ignoretext="オブジェクトをグループに譲渡する前に確認する" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
+ </notification>
+ <notification name="WebLaunchExternalTarget">
+ Web ブラウザを開いてこのコンテンツを表示しますか?
+ <usetemplate ignoretext="ブラウザを起動して Web ページを見る" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchJoinNow">
+ secondlife.com でアカウントの管理をしますか?
+ <usetemplate ignoretext="ブラウザを起動してアカウントを管理する" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchSecurityIssues">
+ [SECOND_LIFE] Wikiで、
+セキュリティ問題を報告する方法をご覧ください。
+ <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchQAWiki">
+ [SECOND_LIFE] 品質保証関連Wikiをご覧ください。
+ <usetemplate ignoretext="ブラウザを起動して QA Wiki を見る" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchPublicIssue">
+ [SECOND_LIFE]のパブリック問題トラッカーで、
+バグやその他の問題を報告できます。
+ <usetemplate ignoretext="ブラウザを確認してパブリック問題トラッカーを使用する" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
+ </notification>
+ <notification name="WebLaunchSupportWiki">
+ Linden公式ブログで、最新のニュースや情報を入手してください。
+ <usetemplate ignoretext="ブラウザを起動して公式ブログを見る" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLGuide">
+ スクリプトガイドを開きますか?
+ <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見る" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="WebLaunchLSLWiki">
+ LSL ポータルでスクリプトに関する情報を確認しますか?
+ <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
+ </notification>
+ <notification name="ReturnToOwner">
+ 選択したオブジェクトを、所有者に返却しますか?
+譲渡可能なオブジェクトは
+以前の所有者に返却されます。
+
+*警告* 移転が不可能の譲渡されたオブジェクトは削除されます!
+ <usetemplate ignoretext="オブジェクトを所有者に返却する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="GroupLeaveConfirmMember">
+ 現在あなたは [GROUP]のメンバーです。
+ここから抜けますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmKick">
+ すべてのユーザーをグリッド外にキックしようとしています。操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="全てのユーザを追い出す"/>
+ </notification>
+ <notification name="MuteLinden">
+ 残念ながらLindenを無視設定に入れることはできません。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CannotStartAuctionAlreadyForSale">
+ 既に売り出し中の区画なのでオークションにかけることはできません。 オークションにかけたい場合は売り出し設定を解除してから行ってください。
+ </notification>
+ <notification label="オブジェクトを名前でミュートできませんでした" name="MuteByNameFailed">
+ あなたはすでにこの名前をミュートしています。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RemoveItemWarn">
+ コンテンツを削除すると、許可があっても、オブジェクトにダメージを与えることがあります。
+そのアイテムの削除を続けますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferCallingCard">
+ 現在コーリングカードを送れません。数分後にもう一度試してください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="CantOfferFriendship">
+ 現在フレンドシップを送れません。数分後に試してください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="BusyModeSet">
+ 取り込み中モードになりました。
+チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてゴミ箱に入ります。
+ <usetemplate ignoretext="ログイン状態を取り込み中モードに変更する" name="okignore" yestext="OK"/>
+ </notification>
+ <notification name="JoinedTooManyGroupsMember">
+ 加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
+[NAME] があなたをグループのメンバーとして勧誘しています。
+[INVITE]
+ <usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
+ </notification>
+ <notification name="KickUser">
+ どんなメッセージを表示して、このユーザーを追い出しますか?
+ <form name="form">
+ <input name="message">
+ あなたは管理者によりログオフされました。
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="KickAllUsers">
+ どんなメッセージを表示して、グリッドにいる全員を追い出しますか?
+ <form name="form">
+ <input name="message">
+ あなたは管理者によりログオフされました。
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="FreezeUser">
+ どんなメッセージを表示して、このユーザーをフリーズしますか?
+ <form name="form">
+ <input name="message">
+ あなたはフリーズされています。 動くこともチャットすることもできません。 管理者がIMを通じてあなたに連絡します。
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="UnFreezeUser">
+ どんなメッセージを表示して、このユーザーのフリーズを解除しますか?
+ <form name="form">
+ <input name="message">
+ もうフリーズされていません。
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="OfferTeleport">
+ 次のメッセージを添えてあなたが今いる場所へのテレポートを送りますか?
+ <form name="form">
+ <input name="message">
+ [REGION]に来ませんか?
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="OfferTeleportFromGod">
+ ユーザーをゴッド・コールで呼び寄せますか?
+ <form name="form">
+ <input name="message">
+ [REGION]に来ませんか?
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="TeleportFromLandmark">
+ 本当にテレポートしますか?
+ <usetemplate ignoretext="ランドマークにテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
+ </notification>
+ <notification name="TeleportToPick">
+ [PICK] にテレポートしますか?
+ <usetemplate ignoretext="ピックの場所にテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
+ </notification>
+ <notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate">
+ 今あなたの不動産にいる人全員に送る
+短いメッセージを入力してください。
+ <form name="form">
+ <input name="message"/>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
+ あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
+
+これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数の地域が変更され、スペースサーバーに悪影響が生じます。
+
+操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
+ あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
+
+この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。
+これにより多数の地域が変更され、スペースサーバーに悪影響が生じます。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateAllowedAgentAdd">
+ この不動産の許可リストだけに追加しますか? それとも[ALL_ESTATES]のすべての許可リストに追加しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateAllowedAgentRemove">
+ 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateAllowedGroupAdd">
+ この不動産のグループ許可リストだけに追加しますか? それとも[ALL_ESTATES]のグループ許可リストに追加しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateAllowedGroupRemove">
+ 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateBannedAgentAdd">
+ この不動産についてのみアクセスを拒否しますか? それとも[ALL_ESTATE]へのアクセスを拒否しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateBannedAgentRemove">
+ この住人を、この不動産のみ、または[ALL_ESTATES]へとアクセスできるように、禁止リストから削除しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateManagerAdd">
+ この不動産のみ、または[ALL_ESTATES]に対して、不動産マネージャーを追加しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="不動産を選択" name="EstateManagerRemove">
+ 不動産マネージャーを、この不動産のみ、または[ALL_ESTATES]から、削除しますか?
+ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
+ </notification>
+ <notification label="キックを確認" name="EstateKickUser">
+ この不動産から[EVIL_USER]を追い出しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="EstateChangeCovenant">
+ 不動産約款を変更しようとしています。操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked">
+ あなたのレーティング区分により、その地域(リージョン)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。
+
+最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_KB">
+ あなたのレーティング区分により、その地域(リージョン)へは入ることができません。
+
+ナレッジベースを開きレーティング区分について学びますか?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/レーティング区分概要_(KB)
+ </url>
+ <usetemplate ignoretext="レーティング区分の制限のため、このリージョンに入ることができません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Notify">
+ あなたのレーティング区分により、その地域(リージョン)へは入ることができません。
+ </notification>
+ <notification name="RegionEntryAccessBlocked_Change">
+ あなたのレーティング区分設定により、その地域(リージョン)へは入ることができません。
+
+「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。
+あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。
+ <form name="form">
+ <button name="OK" text="設定の変更"/>
+ <button default="true" name="Cancel" text="閉じる"/>
+ <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入ることができません"/>
+ </form>
+ </notification>
+ <notification name="LandClaimAccessBlocked">
+ あなたのレーティング区分により、この土地を取得することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
+
+最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_KB">
+ あなたのレーティング区分により、この土地を取得することはできません。
+
+ナレッジベースを開きレーティング区分について学びますか?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/レーティング区分概要_(KB)
+ </url>
+ <usetemplate ignoretext="レーティング区分の制限のため、この土地を取得できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
+ </notification>
+ <notification name="LandClaimAccessBlocked_Notify">
+ あなたのレーティング区分により、この土地を取得することはできません。
+ </notification>
+ <notification name="LandClaimAccessBlocked_Change">
+ あなたのレーティング区分設定により、この土地を取得することはできません。
+
+「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。
+あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。
+ <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked">
+ あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
+
+最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_KB">
+ あなたのレーティング区分により、この土地を購入することはできません。
+
+ナレッジベースを開きレーティング区分について学びますか?
+ <url name="url">
+ http://wiki.secondlife.com/wiki/レーティング区分概要_(KB)
+ </url>
+ <usetemplate ignoretext="レーティング区分の制限のため、この土地を購入できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
+ </notification>
+ <notification name="LandBuyAccessBlocked_Notify">
+ あなたのレーティング区分により、この土地を購入することはできません。
+ </notification>
+ <notification name="LandBuyAccessBlocked_Change">
+ あなたのレーティング区分設定により、この土地を購入することができません。
+
+「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。
+あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。
+ <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
+ </notification>
+ <notification name="TooManyPrimsSelected">
+ 選択したプリムが多すぎます。
+[MAX_PRIM_COUNT] を選択するか、
+プリム数を減らしてもう一度お試しください。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemImportingEstateCovenant">
+ 不動産約款のインポート時に問題発生。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ProblemAddingEstateManager">
+ 新しい不動産マネージャーの追加に関する問題:
+1つ以上の不動産で、マネージャーリストが満杯になっています。
+ </notification>
+ <notification name="ProblemAddingEstateGeneric">
+ 不動産リストの追加に関する問題:
+1つ以上の不動産で、リストが満杯になっています。
+ </notification>
+ <notification name="UnableToLoadNotecardAsset">
+ 現在ノートカードの資産IDを読み込むことができません。
+ </notification>
+ <notification name="NotAllowedToViewNotecard">
+ 要求された資産IDに関するノートカードを閲覧するには権限が不十分です。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MissingNotecardAssetID">
+ ノートカード用資産IDがデータベースに登録されていません。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="PublishClassified">
+ 注意:クラシファイド広告の料金は払い戻しされません。
+
+L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="SetClassifiedMature">
+ この広告にMatureコンテンツは含まれていますか?
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="SetGroupMature">
+ この広告にMatureコンテンツは含まれていますか?
+ <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification label="再起動を確認" name="ConfirmRestart">
+ この地域を2分後に再起動しようとしています。
+操作を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification label="この地域内の全員にメッセージを送信" name="MessageRegion">
+ この地域にいる人全員に送る
+短いメッセージを入力してください。
+ <form name="form">
+ <input name="message"/>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
+ この地域のレーティング区分指定がアップデートされました。
+この変更が地図に反映されるまでにはしばらく時間がかかります。
+ </notification>
+ <notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch">
+ このバージョンの [APP_NAME] は、
+この地域のボイスチャット機能に対応していません。
+ボイスチャットを正しく使用するには、
+[APP_NAME] のアップデートが必要です。
+ </notification>
+ <notification label="オブジェクトを購入できません" name="BuyObjectOneOwner">
+ 複数のオーナーから同時にオブジェクトを購入することはできません。
+単一のオブジェクトを選択し、もう一度試してください。
+ </notification>
+ <notification label="コンテンツを購入できません" name="BuyContentsOneOnly">
+ 一度に複数のオブジェクトのコンテンツは購入できません。
+選択するオブジェクトを1つだけにして、もう一度試してください。
+ </notification>
+ <notification label="コンテンツを購入できません" name="BuyContentsOneOwner">
+ 複数のオーナーから同時にオブジェクトを購入することはできません。
+単一のオブジェクトを選択し、もう一度試してください。
+ </notification>
+ <notification name="BuyOriginal">
+ オリジナルのオブジェクトを[OWNER]からL$[PRICE]で購入しますか?
+これにより、あなたがオブジェクトのオーナーになります。
+可能な操作は、
+変更:[MODIFYPERM]、コピー:[COPYPERM]、
+再販/プレゼント[RESELLPERM]です。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BuyOriginalNoOwner">
+ L$[PRICE]でオリジナルのオブジェクトを購入しますか?
+これにより、あなたがオブジェクトのオーナーになります。
+可能な操作は、
+変更:[MODIFYPERM]、コピー:[COPYPERM]、
+再販/プレゼント[RESELLPERM]です。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopy">
+ コピーを[OWNER]からL$[PRICE]で購入しますか?
+購入したオブジェクトは、あなたの持ち物にコピーされます。
+可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、
+再販/プレゼント[RESELLPERM]です。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BuyCopyNoOwner">
+ L$[PRICE]でコピーを購入しますか?
+購入したオブジェクトは、あなたの持ち物にコピーされます。
+可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、
+再販/プレゼント[RESELLPERM]です。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BuyContents">
+ コンテンツを[OWNER]からL$[PRICE]で購入しますか?
+購入したコンテンツは、あなたの持ち物にコピーされます。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="BuyContentsNoOwner">
+ L$[PRICE]でコンテンツを購入しますか?
+購入したコンテンツは、あなたの持ち物にコピーされます。
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchase">
+ この取引は以下のとおり行われます:
+[ACTION]
+
+この購入を続行しますか?
+ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmPurchasePassword">
+ この取引は以下のとおり行われます:
+[ACTION]
+
+この購入を続行しますか?
+パスワードを再入力し、「OK」をクリックしてください。
+ <form name="form">
+ <input name="message"/>
+ <button name="ConfirmPurchase" text="OK"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="SetPickLocation">
+ メモ:
+本ピックのロケーションを更新しましたが、
+他の詳細は元の値のままになります。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromObject">
+ 「コピー禁止」の持ち物アイテムが選択されました。
+これらのアイテムはコピーされないまま、あなたの持ち物に移動されます。
+
+
+アイテムを動かしますか?
+ <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="MoveInventoryFromScriptedObject">
+ 「コピー禁止」の持ち物アイテムが選択されました。
+これらのアイテムはコピーされるのではなく、あなたの持ち物に移動されます。
+このオブジェクトはスクリプト付きなので、持ち物に移動させると
+スクリプトに誤動作が起きる可能性があります。
+
+持ち物アイテムを移動しますか?
+ <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ClickActionNotPayable">
+ 警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。
+ <form name="form">
+ <ignore name="ignore" text="money() スクリプトを入れずにオブジェクトを制作中に、「オブジェクトに支払う」アクションを設定"/>
+ </form>
+ </notification>
+ <notification name="OpenObjectCannotCopy">
+ このオブジェクトには、あなたがコピーできるアイテムはありません。
+ </notification>
+ <notification name="WebLaunchAccountHistory">
+ secondlife.com でアカウント履歴を確認しますか?
+ <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
+ </notification>
+ <notification name="ConfirmQuit">
+ 終了しようとしています。操作を続行しますか?
+ <usetemplate ignoretext="終了時に確認する" name="okcancelignore" notext="終了しない" yestext="終了"/>
+ </notification>
+ <notification name="HelpReportAbuseEmailLL">
+ 利用規約違反とコミュニティースタンダード違反の報告にこのツールをご使用ください。 参照:
+
+http://secondlife.com/corporate/tos.php
+http://secondlife.com/corporate/cs.php
+
+利用規約違反とコミュニティースタンダード違反に関する全てのレポートは、調査され、解決されます。
+以下のリンク先の被害報告にてその確認をすることができます。
+
+http://secondlife.com/support/incidentreport.php
+ </notification>
+ <notification name="HelpReportAbuseEmailEO">
+ 重要: このレポートはLinden Lab 社ではなく、
+あなたが現在いる地域のオーナーに送られます。
+-
+あなたが今いる地域のオーナーは、
+住人と訪問者へのサービスの一環として、この地域からのレポートをすべて受け付け、解決することに同意しています。
+よってLinden Lab 社が、
+あなたがここから提出するレポートを調査することはありません。
+地域のオーナーは、不動産約款で指定している地元の規則を基に、報告された問題を解決します。
+(「世界」のメニューから「土地情報」を選ぶと、約款を閲覧できます)
+-
+このレポートに関する解決策は、この地域にだけ当てはまります。
+住人が[SECOND_LIFE] の他の地域へアクセスする際、
+このレポートの結果に影響されることはありません。
+Linden Lab 社だけが[SECOND_LIFE] 全域における
+アクセス制限権を持っています。
+ </notification>
+ <notification name="HelpReportAbuseSelectCategory">
+ 嫌がらせ報告のカテゴリを選択してください。
+カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。
+ </notification>
+ <notification name="HelpReportAbuseAbuserNameEmpty">
+ 嫌がらせ行為をした人の名前を入力してください。
+正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
+ </notification>
+ <notification name="HelpReportAbuseAbuserLocationEmpty">
+ 嫌がらせがあった場所を入力してください。
+正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
+ </notification>
+ <notification name="HelpReportAbuseSummaryEmpty">
+ 嫌がらせの概要を入力してください。
+正確な概要の入力により、
+嫌がらせ報告の処理や保管に大変役立ちます。
+ </notification>
+ <notification name="HelpReportAbuseDetailsEmpty">
+ 嫌がらせの詳細な説明を入力してください。
+名前や嫌がらせの詳細を、できるだけ具体的に入力してください。
+
+正確な説明の入力により、
+嫌がらせ報告の処理や保管に大変役立ちます。
+ </notification>
+ <notification name="HelpReportAbuseContainsCopyright">
+ 住人の皆様へ、
+
+知的財産の侵害に関する報告を行う際には、以下の点に注意してください。
+
+(1) 嫌がらせの報告のプロセス
+[SECOND_LIFE] の権限システムを悪用している住人を見つけたら、
+嫌がらせの報告を行ってください。
+例えばコピーBotの使用、それに似たツールの使用による知的財産権の侵害があります。
+アビューズチームは調査に基づき、
+[SECOND_LIFE] のコミュニティースタンダードや
+利用規約に違反する行為と判断された場合には適切な処置を行っています。
+ただし、コンテンツを[SECOND_LIFE] から撤去してほしい、
+といった要望にはアビューズチームは応えることができません。
+
+(2) DMCA(デジタルミレニアム著作権法)及びコンテンツ撤去プロセス
+[SECOND_LIFE] からのコンテンツの撤去をリクエストするには、
+著作権侵害通知の提出を行う必要があります。
+参照: http://secondlife.com/corporate/dmca.php
+
+この件に関する嫌がらせの報告を続ける際は、このウィンドウを閉じてください。選択すべきカテゴリは「知的財産の侵害>コピーBot及び権限の悪用」のほうが適しているかもしれませんのでご確認ください。
+
+よろしくお願いします。
+
+Linden Lab
+ </notification>
+ <notification name="FailedRequirementsCheck">
+ 以下の必要なコンポーネントが、[FLOATER]から抜け落ちています
+[COMPONENTS]
+ </notification>
+ <notification label="既存の付属品を置換" name="ReplaceAttachment">
+ 体のこの部位にはオブジェクトが装着されています。
+選択されたオブジェクトと置き換えますか?
+ <form name="form">
+ <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替える"/>
+ <button ignore="自動的に交換" name="Yes" text="OK"/>
+ <button ignore="交換しない" name="No" text="キャンセル"/>
+ </form>
+ </notification>
+ <notification label="取り込み中の警告" name="BusyModePay">
+ 現在、取り込み中のため、この支払いと
+引き換えのアイテムを受け取ることが
+できません。
+
+この取引を完了する前に、取り込み中の設定を解除しますか?
+ <form name="form">
+ <ignore name="ignore" save_option="true" text="取り込み中モードの時に支払をする"/>
+ <button ignore="常に取り込み中の設定" name="Yes" text="OK"/>
+ <button ignore="取り込み中の設定にしない" name="No" text="キャンセル"/>
+ </form>
+ </notification>
+ <notification name="ConfirmEmptyTrash">
+ ゴミ箱の項目をすべて削除しますか?
+ <usetemplate ignoretext="持ち物のゴミ箱フォルダを空にする前に確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/>
+ </notification>
+ <notification name="ConfirmClearBrowserCache">
+ トラベル、Web、検索の履歴をすべて削除しますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
+ </notification>
+ <notification name="ConfirmClearCookies">
+ 本当にクッキーをクリアしますか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
+ </notification>
+ <notification name="ConfirmClearMediaUrlList">
+ 保存された URL のリストを消去します。よろしいですか?
+ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
+ </notification>
+ <notification name="ConfirmEmptyLostAndFound">
+ 紛失物の項目をすべて削除しますか?
+ <usetemplate ignoretext="紛失物フォルダを空にする前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="CopySLURL">
+ 次の SLurl がクリップボードにコピーされました:
+ [SLURL]
+
+Webページにこれをリンクすると、他人がこの場所に簡単にアクセスできます。Webブラウザのアドレスバーに貼り付けて試してみてください。
+ <form name="form">
+ <ignore name="ignore" text="クリップボードに SLurl がコピーされる"/>
+ </form>
+ </notification>
+ <notification name="WLSavePresetAlert">
+ 保存された事前設定を上書きしますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="WLDeletePresetAlert">
+ [SKY] を削除しますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="WLNoEditDefault">
+ デフォルトの設定を編集したり削除したりすることはできません。
+ </notification>
+ <notification name="WLMissingSky">
+ このデイ・サイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
+ </notification>
+ <notification name="PPSaveEffectAlert">
+ ポストプロセス効果が存在します。 上書きしますか?
+ <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="NewSkyPreset">
+ 新しい空の名前を指定してください。
+ <form name="form">
+ <input name="message">
+ 新しい事前設定
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="キャンセル"/>
+ </form>
+ </notification>
+ <notification name="ExistsSkyPresetAlert">
+ 事前設定がすでに存在します!
+ </notification>
+ <notification name="NewWaterPreset">
+ 新しい水の事前設定の名前を指定してください。
+ <form name="form">
+ <input name="message">
+ 新しい事前設定
+ </input>
+ <button name="OK" text="OK"/>
+ <button name="Cancel" text="キャンセル"/>
+ </form>
+ </notification>
+ <notification name="ExistsWaterPresetAlert">
+ 事前設定がすでに存在します!
+ </notification>
+ <notification name="WaterNoEditDefault">
+ デフォルトの設定を編集したり削除したりすることはできません。
+ </notification>
+ <notification name="ChatterBoxSessionStartError">
+ [RECIPIENT]との新しいチャットを開始することができません
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ChatterBoxSessionEventError">
+ [EVENT]
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="ForceCloseChatterBoxSession">
+ [NAME]とのチャットセッションを閉じます。
+[REASON]
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="Cannot_Purchase_an_Attachment">
+ オブジェクトが取り付けられているときは購入することができません。
+ </notification>
+ <notification label="デビット許可のリクエストについて" name="DebitPermissionDetails">
+ この要求を許可すると、スクリプトからあなたのアカウントにリンデンドルを課金できるようになります。
+この許可を取り消すには、オブジェクトのオーナーはオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
+ <usetemplate name="okbutton" yestext="OK"/>
+ </notification>
+ <notification name="AutoWearNewClothing">
+ 作成しようとしている衣類を自動的に装着しますか?
+ <usetemplate ignoretext="容姿編集画面で作成する衣類を装着する" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="NotAgeVerified">
+ 年齢確認を済ませていないとこの区画を訪れることができません。 [SECOND_LIFE] サイトで年齢の確認を行いますか?
+
+[_URL]
+ <url name="url" option="0">
+ https://secondlife.com/account/verification.php?lang=ja
+ </url>
+ <usetemplate ignoretext="年齢の確認を済ませていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="Cannot enter parcel: no payment info on file">
+ 支払情報が登録されていないとこのエリアを訪れることができません。 [SECOND_LIFE] サイトで登録を行いますか?
+
+[_URL]
+ <url name="url" option="0">
+ https://secondlife.com/account/index.php?lang=ja
+ </url>
+ <usetemplate ignoretext="支払情報が登録されていません" name="okcancelignore" notext="いいえ" yestext="はい"/>
+ </notification>
+ <notification name="MissingString">
+ 文字列[STRING_NAME]がstrings.xmlに含まれていません
+ </notification>
+ <notification name="SystemMessageTip">
+ [MESSAGE]
+ </notification>
+ <notification name="Cancelled">
+ 取り消されました
+ </notification>
+ <notification name="CancelledSit">
+ 座るのを取り消されました
+ </notification>
+ <notification name="CancelledAttach">
+ 添付は取り消されました
+ </notification>
+ <notification name="ReplacedMissingWearable">
+ 欠落している服/身体部位をデフォルトに置換します。
+ </notification>
+ <notification name="GroupNotice">
+ 件名: [SUBJECT], メッセージ: [MESSAGE]
+ </notification>
+ <notification name="FriendOnline">
+ [FIRST] [LAST] はオンラインです。
+ </notification>
+ <notification name="FriendOffline">
+ [FIRST] [LAST] はオフラインです。
+ </notification>
+ <notification name="AddSelfFriend">
+ 残念ながら自分自身をフレンドに追加することはできません。
+ </notification>
+ <notification name="UploadingAuctionSnapshot">
+ インワールドとウェブ・サイトのスナップショットをアップロード中です...
+(所要時間:約5分)
+ </notification>
+ <notification name="UploadPayment">
+ アップロードに L$[AMOUNT] 支払いました。
+ </notification>
+ <notification name="UploadWebSnapshotDone">
+ Webサイトのスナップショットがアップロードされました。
+ </notification>
+ <notification name="UploadSnapshotDone">
+ インワールドでのスナップショットのアップロードが完了しました。
+ </notification>
+ <notification name="TerrainDownloaded">
+ raw地形がダウンロードされました
+ </notification>
+ <notification name="GestureMissing">
+ ジェスチャー[NAME] がデータベースにありません。
+ </notification>
+ <notification name="UnableToLoadGesture">
+ ジェスチャー[NAME] を読み込むことができません。
+再度、試みてください。
+ </notification>
+ <notification name="LandmarkMissing">
+ データベースにランドマークがありません。
+ </notification>
+ <notification name="UnableToLoadLandmark">
+ ランドマークをロードできません。 もう一度試してください。
+ </notification>
+ <notification name="CapsKeyOn">
+ CapsLock キーが有効になっています。
+パスワードに影響があるかもしれません。
+ </notification>
+ <notification name="NotecardMissing">
+ ノートカードがデータベースにありません。
+ </notification>
+ <notification name="NotecardNoPermissions">
+ このノートカードを見る権限がありません。
+ </notification>
+ <notification name="RezItemNoPermissions">
+ オブジェクトをrezするにはパーミッション(承認)が不足してます。
+ </notification>
+ <notification name="UnableToLoadNotecard">
+ 現在ノートカードの資産をロードできません。
+ </notification>
+ <notification name="ScriptMissing">
+ データベースにスクリプトがありません。
+ </notification>
+ <notification name="ScriptNoPermissions">
+ スクリプトを閲覧するには権限が不十分です。
+ </notification>
+ <notification name="UnableToLoadScript">
+ スクリプトをロードできません。 もう一度試してください。
+ </notification>
+ <notification name="IncompleteInventory">
+ あなたの提供するコンテンツは、この場所ではまだ全部揃いません。
+少ししてからもう一度試してください。
+ </notification>
+ <notification name="CannotModifyProtectedCategories">
+ 保護されたカテゴリーは修正できません。
+ </notification>
+ <notification name="CannotRemoveProtectedCategories">
+ 保護されたカテゴリーは削除できません。
+ </notification>
+ <notification name="OfferedCard">
+ あなたは[FIRST] [LAST] に
+コーリング・カードを送りました。
+ </notification>
+ <notification name="UnableToBuyWhileDownloading">
+ オブジェクトデータのダウンロード中は購入できません。
+もう一度試してください。
+ </notification>
+ <notification name="UnableToLinkWhileDownloading">
+ オブジェクトデータのウンロード中はリンクできません。
+もう一度試してください。
+ </notification>
+ <notification name="CannotBuyObjectsFromDifferentOwners">
+ オブジェクトは一度につき一人の所有者から購入できます。
+オブジェクトを 1 つだけ選んでください。
+ </notification>
+ <notification name="ObjectNotForSale">
+ このオブジェクトは販売対象ではありません。
+ </notification>
+ <notification name="EnteringGodMode">
+ レベル[LEVEL]のゴッド・モードに入ります
+ </notification>
+ <notification name="LeavingGodMode">
+ レベル [LEVEL] のゴッドモードを解除します
+ </notification>
+ <notification name="CopyFailed">
+ これをコピーする権限がありません。
+ </notification>
+ <notification name="InventoryAccepted">
+ [NAME]は、持ち物の提供を受け入れました。
+ </notification>
+ <notification name="InventoryDeclined">
+ [NAME]は、持ち物の提供を断りました。
+ </notification>
+ <notification name="ObjectMessage">
+ [NAME]: [MESSAGE]
+ </notification>
+ <notification name="CallingCardAccepted">
+ コーリング・カードが受理されました。
+ </notification>
+ <notification name="CallingCardDeclined">
+ コーリング・カードが拒否されました。
+ </notification>
+ <notification name="TeleportToLandmark">
+ 本土に到達しました。
+[NAME]などの場所にテレポートするには、画面右下にある「持ち物」ボタンをクリックし、ランドマーク(Landmarks)フォルダを選択してください。
+ランドマークをダブルクリックした後「テレポート」をクリックするとその場所へ移動します。
+ </notification>
+ <notification name="TeleportToPerson">
+ 本土に到達しました。
+住人の[NAME]と接触するには、画面右下にある「持ち物」ボタンをクリックし、コーリングカード(Calling Cards)フォルダを選択してください。
+カードをダブルクリックし、「IMを送る」をクリックし、メッセージを送信してください。
+ </notification>
+ <notification name="CantSelectLandFromMultipleRegions">
+ サーバーの境界を越えて土地を選択することできません。
+もっと小さな土地を選択してください。
+ </notification>
+ <notification name="SearchWordBanned">
+ コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。
+ </notification>
+ <notification name="NoContentToSearch">
+ 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(PG, Mature, Adult)
+ </notification>
+ <notification name="GroupVote">
+ [NAME] は投票の申請をしています:
+[MESSAGE]
+ <form name="form">
+ <button name="VoteNow" text="今すぐ投票する"/>
+ <button name="Later" text="あとで"/>
+ </form>
+ </notification>
+ <notification name="SystemMessage">
+ [MESSAGE]
+ </notification>
+ <notification name="EventNotification">
+ イベント通知:
+
+[NAME]
+[DATE]
+ <form name="form">
+ <button name="Teleport" text="テレポート"/>
+ <button name="Description" text="説明"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="TransferObjectsHighlighted">
+ この区画上に存在するオブジェクトのうち、この区画の購入者に譲渡されるオブジェクトがすべて強調表示されます。
+
+
+*譲渡される樹木や植物は、強調表示されません。
+ <form name="form">
+ <button name="Done" text="完了"/>
+ </form>
+ </notification>
+ <notification name="DeactivatedGesturesTrigger">
+ 同じトリガーでアクティブにしないジェスチャー:
+[NAMES]
+ </notification>
+ <notification name="NoQuickTime">
+ Apple社のQuickTimeがシステムにインストールされていないと思われます。
+ストリーミング・メディアの再生を行いたい場合は、QuickTimeのサイト(http://www.apple.com/quicktime)にアクセスして、QuickTime Player をインストールしてください。
+ </notification>
+ <notification name="NoPlugin">
+ 「 [MIME_TYPE] 」の MIME タイプを扱うメディアプラグインが見つかりませんでした。 このタイプのメディアはご利用いただけません。
+ </notification>
+ <notification name="MediaPluginFailed">
+ 次のメディアプラグインが実行できませんでした:
+ [PLUGIN]
+
+プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。
+ <form name="form">
+ <ignore name="ignore" text="メディアプラグインの実行に失敗"/>
+ </form>
+ </notification>
+ <notification name="OwnedObjectsReturned">
+ 選択した土地の区画上にあったあなたのオブジェクトは、あなたの持ち物に返却されました。
+ </notification>
+ <notification name="OtherObjectsReturned">
+ 選択されている土地の区画上にあった
+ [FIRST] [LAST]
+ が所有するオブジェクトは、オーナーの持ち物に返却されました。
+ </notification>
+ <notification name="OtherObjectsReturned2">
+ 選択された土地の区画上にあり、
+住人の[NAME]の所有だったオブジェクトはオーナーに返却されました。
+ </notification>
+ <notification name="GroupObjectsReturned">
+ 選択されている区画上にあり、[GROUPNAME] というグループと共有だったオブジェクトは、オーナーの持ち物に返却されました。
+譲渡されていた譲渡可能なオブジェクトは、前のオーナーに返却されました。
+グループに譲渡されていた譲渡不可能なオブジェクトは、削除されました。
+ </notification>
+ <notification name="UnOwnedObjectsReturned">
+ 選択された土地の区画上にあり、あなたの所有で「なかった」オブジェクトは、本来のオーナーに返却されました。
+ </notification>
+ <notification name="NotSafe">
+ この土地ではダメージが有効です。
+ケガをするかもしれません。 死んでしまった場合はホームにテレポートされます。
+ </notification>
+ <notification name="NoFly">
+ このエリアでは飛行が禁止されています。
+ここでは飛べません。
+ </notification>
+ <notification name="PushRestricted">
+ このエリアではプッシュが制限されています。
+土地所有者以外は他人をプッシュすることはできません。
+ </notification>
+ <notification name="NoVoice">
+ このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。
+ </notification>
+ <notification name="NoBuild">
+ このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。
+ </notification>
+ <notification name="ScriptsStopped">
+ 管理者がこの地域内のスクリプトを一時停止させました。
+ </notification>
+ <notification name="ScriptsNotRunning">
+ この地域ではスクリプトの使用が禁止されています
+ </notification>
+ <notification name="NoOutsideScripts">
+ この土地では、外部のスクリプトが禁止されています。
+
+土地所有者のもの以外はスクリプトは実行されません。
+ </notification>
+ <notification name="ClaimPublicLand">
+ そのリージョンにいないと公共の土地を取得することはできません。
+ </notification>
+ <notification name="RegionTPAccessBlocked">
+ あなたのレーティング区分によりその地域(リージョン)へは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。
+
+現在のレーティング区分でアクセス可能なエリアに関する詳細はナレッジベースを参照してください。
+ </notification>
+ <notification name="URBannedFromRegion">
+ あなたは地域(リージョン)への立入が禁止されています。
+ </notification>
+ <notification name="NoTeenGridAccess">
+ あなたのアカウントではティーングリッドに接続できません。
+ </notification>
+ <notification name="ImproperPaymentStatus">
+ この地域(リージョン)に入るために適した支払いステータスがありません。
+ </notification>
+ <notification name="MustGetAgeParcel">
+ この区画に入るには年齢確認済みである必要があります。
+ </notification>
+ <notification name="NoDestRegion">
+ 目的地の地域(リージョン)が見つかりませんでした。
+ </notification>
+ <notification name="NotAllowedInDest">
+ 目的地に入る許可がありません。
+ </notification>
+ <notification name="RegionParcelBan">
+ 立入禁止された区画を横断することはできません。 別の方法をお試しください。
+ </notification>
+ <notification name="TelehubRedirect">
+ テレハブに転送されました。
+ </notification>
+ <notification name="CouldntTPCloser">
+ これ以上目的地に近い場所にテレポートができませんでした。
+ </notification>
+ <notification name="TPCancelled">
+ テレポートがキャンセルされました。
+ </notification>
+ <notification name="FullRegionTryAgain">
+ 入ろうとしている地域(リージョン)は現在満員です。
+しばらくしてから再度お試しください。
+ </notification>
+ <notification name="GeneralFailure">
+ よくある失敗
+ </notification>
+ <notification name="RoutedWrongRegion">
+ 異なる地域(リージョン)に迂回されました。 もう一度お試しください。
+ </notification>
+ <notification name="NoValidAgentID">
+ エージェントIDが無効です。
+ </notification>
+ <notification name="NoValidSession">
+ セッションIDが無効です。
+ </notification>
+ <notification name="NoValidCircuit">
+ 回路コードが無効です。
+ </notification>
+ <notification name="NoValidTimestamp">
+ タイムスタンプが無効です。
+ </notification>
+ <notification name="NoPendingConnection">
+ 接続を生成できません。
+ </notification>
+ <notification name="InternalUsherError">
+ 内部エラーが発生しました。
+ </notification>
+ <notification name="NoGoodTPDestination">
+ この地域(リージョン)では適切なテレポート目的地が見つかりませんでした。
+ </notification>
+ <notification name="InternalErrorRegionResolver">
+ 内部エラーが発生しました。
+ </notification>
+ <notification name="NoValidLanding">
+ 有効な着地点が見つかりませんでした。
+ </notification>
+ <notification name="NoValidParcel">
+ 有効な区画が見つかりませんでした。
+ </notification>
+ <notification name="ObjectGiveItem">
+ [FIRST] [LAST]所有の、
+[OBJECTFROMNAME]から、
+[OBJECTNAME]という[OBJECTTYPE]が送られてきました。
+ <form name="form">
+ <button name="Keep" text="受け取る"/>
+ <button name="Discard" text="破棄"/>
+ <button name="Mute" text="無視リストへ"/>
+ </form>
+ </notification>
+ <notification name="ObjectGiveItemUnknownUser">
+ (未知のユーザー) 所有の[OBJECTFROMNAME]から、
+あなたに[OBJECTNAME]という[OBJECTTYPE]が送られてきました。
+ <form name="form">
+ <button name="Keep" text="受け取る"/>
+ <button name="Discard" text="破棄"/>
+ <button name="Mute" text="無視リストへ"/>
+ </form>
+ </notification>
+ <notification name="UserGiveItem">
+ [NAME]は、あなたに[OBJECTNAME]という名前の[OBJECTTYPE]を渡しました。
+ <form name="form">
+ <button name="Keep" text="受け取る"/>
+ <button name="Discard" text="破棄"/>
+ </form>
+ </notification>
+ <notification name="GodMessage">
+ [NAME]
+[MESSAGE]
+ </notification>
+ <notification name="JoinGroup">
+ [MESSAGE]
+ <form name="form">
+ <button name="Join" text="参加"/>
+ <button name="Decline" text="辞退"/>
+ <button name="Info" text="情報"/>
+ </form>
+ </notification>
+ <notification name="TeleportOffered">
+ [NAME]はあなたをテレポートで呼び寄せようとしています:
+
+[MESSAGE]
+ <form name="form">
+ <button name="Teleport" text="テレポート"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="GotoURL">
+ [MESSAGE]
+[URL]
+ <form name="form">
+ <button name="Later" text="あとで"/>
+ <button name="GoNow..." text="今すぐ行く"/>
+ </form>
+ </notification>
+ <notification name="OfferFriendship">
+ [NAME]は、
+フレンド登録を申し込んでいます。
+
+[MESSAGE]
+
+(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="辞退"/>
+ </form>
+ </notification>
+ <notification name="OfferFriendshipNoMessage">
+ [NAME]は、
+フレンド登録を申し込んでいます。
+
+(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="拒否"/>
+ </form>
+ </notification>
+ <notification name="FriendshipAccepted">
+ [NAME]は、フレンド 登録を受け入れました。
+ </notification>
+ <notification name="FriendshipDeclined">
+ [NAME]は、フレンド 登録を断りました。
+ </notification>
+ <notification name="OfferCallingCard">
+ [FIRST] [LAST]が
+あなたにコーリングカードを送ってきました。
+これにより、あなたの持ち物にブックマークが追加され、この住人にすばやくIMすることができます。
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="辞退"/>
+ </form>
+ </notification>
+ <notification name="RegionRestartMinutes">
+ この地域は[MINUTES]分後に再起動されます。
+強制ログアウトとなりますので、この地域の外に出てください。
+ </notification>
+ <notification name="RegionRestartSeconds">
+ このリージョンは [SECONDS] 秒後に再起動されます。.
+このままここにいるとログアウトされます。
+ </notification>
+ <notification name="LoadWebPage">
+ ウェブ・ページ[URL]をロードしますか?
+
+[MESSAGE]
+
+ロード元のオブジェクト:[OBJECTNAME]、オーナー:[NAME]?
+ <form name="form">
+ <button name="Gotopage" text="移動"/>
+ <button name="Cancel" text="取り消し"/>
+ </form>
+ </notification>
+ <notification name="FailedToFindWearableUnnamed">
+ データベースに[TYPE]が見つかりませんでした
+ </notification>
+ <notification name="FailedToFindWearable">
+ データベースに[DESC]という名前の[TYPE]が見つかりませんでした。
+ </notification>
+ <notification name="InvalidWearable">
+ 着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME]ビューワを最新のものにアップグレードしてからこのアイテムを着用してください。
+ </notification>
+ <notification name="ScriptQuestion">
+ 「[NAME]」が所有するオブジェクト「[OBJECTNAME]」を:
+
+[QUESTIONS]
+よろしいですか?
+ <form name="form">
+ <button name="Yes" text="はい"/>
+ <button name="No" text="いいえ"/>
+ <button name="Mute" text="無視リストに追加"/>
+ </form>
+ </notification>
+ <notification name="ScriptQuestionCaution">
+ [NAME] 所有の「 [OBJECTNAME] 」 というオブジェクトが次のことをしようとしています:
+
+[QUESTIONS]
+このオブジェクトや制作者を信用できない場合は、このリクエストを拒否してください。
+
+リクエストを受けますか?
+ <form name="form">
+ <button name="Grant" text="許可"/>
+ <button name="Deny" text="拒否"/>
+ <button name="Details" text="詳細..."/>
+ </form>
+ </notification>
+ <notification name="ScriptDialog">
+ [FIRST] [LAST]の「[TITLE]」
+[MESSAGE]
+ <form name="form">
+ <button name="Ignore" text="無視する"/>
+ </form>
+ </notification>
+ <notification name="ScriptDialogGroup">
+ [GROUPNAME]の「[TITLE]」
+[MESSAGE]
+ <form name="form">
+ <button name="Ignore" text="無視する"/>
+ </form>
+ </notification>
+ <notification name="FirstBalanceIncrease">
+ L$[AMOUNT] を受け取りました。
+あなたの L$ 残高は画面右上に表示されています。
+ </notification>
+ <notification name="FirstBalanceDecrease">
+ L$[AMOUNT] を支払いました。
+あなたの L$ 残高は画面右上に表示されています。
+ </notification>
+ <notification name="FirstSit">
+ 着席中です。
+周囲を見るには矢印キーか AWSD キーを使ってください。
+立つときには「立ち上がる」ボタンをクリックしてください。
+ </notification>
+ <notification name="FirstMap">
+ 地図をクリック・ドラッグして周囲を見てください。
+ダブルクリックするとテレポートします。
+右側のコントロールで場所を探したり背景を変更してください。
+ </notification>
+ <notification name="FirstBuild">
+ 制作ツールを開きました。 見るものすべてがこのツールで作成されたものです。
+ </notification>
+ <notification name="FirstTeleport">
+ このリージョンでは特定のエリアにのみテレポートできます。 矢印が目的地を指しています。 矢印をクリックすると消えます。
+ </notification>
+ <notification name="FirstOverrideKeys">
+ あなたの移動キーをオブジェクトが操作しています。
+矢印かAWSDのキーで動作を確認してください。
+銃などのオブジェクトだと、一人称視点(マウスルック)に変更する必要があります。
+Mキーを押して変更します。
+ </notification>
+ <notification name="FirstAppearance">
+ 容姿を編集中です。
+周囲を見るには矢印キーを使ってください。
+終わったら「すべて保存」を押してください。
+ </notification>
+ <notification name="FirstInventory">
+ これはあなたの持ち物です。所有しているアイテムが入っています。
+
+* アイテムを自分にドラッグして装着してください。
+* アイテムを地面にドラッグして Rez してください。
+* ノートカードをダブルクリックして開いてください。
+ </notification>
+ <notification name="FirstSandbox">
+ ここはサンドボックスエリアです。住人が制作を学ぶことができます。
+
+ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
+ </notification>
+ <notification name="FirstFlexible">
+ このオブジェクトはフレキシブルです。 フレキシブルオブジェクトは、「物理」ではなく「ファントム」でなければなりません。
+ </notification>
+ <notification name="FirstDebugMenus">
+ アドバンスメニューを開きました。
+
+このメニューの有効・無効設定:
+ Windows: Ctrl+Alt+D
+ Mac: ⌘-Opt+D
+ </notification>
+ <notification name="FirstSculptedPrim">
+ スカルプトプリムを編集中です。 スカルプトプリムには形状の輪郭を指定するための特別なテクスチャが必要です。
+ </notification>
+ <notification name="MaxListSelectMessage">
+ このリストから[MAX_SELECT]個までのアイテムを選択できます。
+ </notification>
+ <notification name="VoiceInviteP2P">
+ [NAME]が、あなたをボイスチャットコールに招待しています。
+コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このコールをしている人をミュートにする場合は「ミュート」をクリックしてください。
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="拒否"/>
+ <button name="Mute" text="ミュート"/>
+ </form>
+ </notification>
+ <notification name="AutoUnmuteByIM">
+ [FIRST] [LAST]に
+インスタント・メッセージが送信され、無視設定は自動的に解除されました。
+ </notification>
+ <notification name="AutoUnmuteByMoney">
+ [FIRST] [LAST]にお金を渡したため、 無視設定が自動的に解除されました。
+ </notification>
+ <notification name="AutoUnmuteByInventory">
+ [FIRST] [LAST]に持ち物を渡したため、 無視設定が自動的に解除されました。
+ </notification>
+ <notification name="VoiceInviteGroup">
+ [NAME]が、 グループ[GROUP]とのボイスチャットコールに参加しました。
+コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このコールをしている人をミュートにする場合は「ミュート」をクリックしてください。
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="拒否"/>
+ <button name="Mute" text="ミュート"/>
+ </form>
+ </notification>
+ <notification name="VoiceInviteAdHoc">
+ [NAME]が、 会議チャットでボイスチャットコールに参加しました。
+コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。 このユーザーをミュート(消声)する場合は「ミュート」をクリックしてください。
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="拒否"/>
+ <button name="Mute" text="ミュート"/>
+ </form>
+ </notification>
+ <notification name="InviteAdHoc">
+ [NAME]が、 あなたを会議チャットに招待しています。
+チャットに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このユーザーをミュート(消声)する場合は「ミュート」をクリックしてください。
+ <form name="form">
+ <button name="Accept" text="受け入れる"/>
+ <button name="Decline" text="拒否"/>
+ <button name="Mute" text="ミュート"/>
+ </form>
+ </notification>
+ <notification name="VoiceChannelFull">
+ あなたが参加しようとしているボイスコール[VOICE_CHANNEL_NAME]は、参加者が最大限に達しました。後でもう一度お試しください。
+ </notification>
+ <notification name="ProximalVoiceChannelFull">
+ このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。
+ </notification>
+ <notification name="VoiceChannelDisconnected">
+ [VOICE_CHANNEL_NAME]への接続が切断されました。空間ボイスチャットに再接続されます。
+ </notification>
+ <notification name="VoiceChannelDisconnectedP2P">
+ [VOICE_CHANNEL_NAME]は、コールを終了しました。空間ボイスチャットに再接続されます。
+ </notification>
+ <notification name="P2PCallDeclined">
+ [VOICE_CHANNEL_NAME]は、あなたのコールを拒否しました。空間ボイスチャットに再接続されます。
+ </notification>
+ <notification name="P2PCallNoAnswer">
+ [VOICE_CHANNEL_NAME]は、あなたのコールを受け取れません。空間ボイスチャットに再接続されます。
+ </notification>
+ <notification name="VoiceChannelJoinFailed">
+ [VOICE_CHANNEL_NAME]への接続に失敗しました。時間をおいて、再度、試みてください。空間ボイスチャットに再接続されます。
+ </notification>
+ <notification name="VoiceLoginRetry">
+ あなた用のボイスチャンネルを作成しています。1分ほどかかります。
+ </notification>
+ <notification name="Cannot enter parcel: not a group member">
+ 特定のグループメンバーのみこのエリアを訪問することができます。
+ </notification>
+ <notification name="Cannot enter parcel: banned">
+ 立入禁止されているため、区画に入ることができません。
+ </notification>
+ <notification name="Cannot enter parcel: not on access list">
+ アクセス・リストに含まれていないため、区画に入ることができません。
+ </notification>
+ <notification name="VoiceNotAllowed">
+ あなたには[VOICE_CHANNEL_NAME]のボイス・チャットに接続する権限がありません。
+ </notification>
+ <notification name="VoiceCallGenericError">
+ [VOICE_CHANNEL_NAME]のボイス・チャットに接続中に、エラーが発生しました。後でもう一度お試しください。
+ </notification>
+ <notification name="ServerVersionChanged">
+ 異なるサーバーバージョンのリージョンに来ました。パフォーマンスに影響があるかもしれません。 クリックしてリリースノートを確認してみてください。
+ </notification>
+ <notification name="UnsupportedCommandSLURL">
+ クリックした SLurl はサポートされていません。
+ </notification>
+ <notification name="IMToast">
+ <form name="form">
+ <button name="respondbutton" text="返答"/>
+ </form>
+ </notification>
+ <notification name="AttachmentSaved">
+ 付属物(アタッチメント)が保存されました。
+ </notification>
+ <notification name="UnableToFindHelpTopic">
+ ヘルプトピックが見つかりませんでした。
+ </notification>
+ <global name="UnsupportedCPU">
+ - あなたの CPU の速度は必須動作環境の条件を満たしていません。
+ </global>
+ <global name="UnsupportedGLRequirements">
+ [APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
+
+この問題が何度も起きる場合は、[SUPPORT_SITE] へご連絡ください。
+ </global>
+ <global name="UnsupportedCPUAmount">
+ 796
+ </global>
+ <global name="UnsupportedRAMAmount">
+ 510
+ </global>
+ <global name="UnsupportedGPU">
+ - あなたのグラフィック・カードは必須動作環境の条件を満たしていません。
+ </global>
+ <global name="UnsupportedRAM">
+ - あなたのシステム・メモリは必須動作環境の条件を満たしていません。
+ </global>
+ <global name="PermYes">
+ はい
+ </global>
+ <global name="PermNo">
+ いいえ
+ </global>
+ <global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+ 自分の土地をお持ちの場合、ホームロケーションに設定できます。
+お持ちでない場合は、地図で「インフォハブ」を探してください。
+ </global>
+</notifications>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
index 75bf6ac7b6..5654245570 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profile Edit" name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident" value="住人"/>
- <string name="AcctTypeTrial" value="トライアル"/>
- <string name="AcctTypeCharterMember" value="特権メンバー"/>
- <string name="AcctTypeEmployee" value="Linden Lab従業員"/>
- <string name="PaymentInfoUsed" value="支払い情報登録済"/>
- <string name="PaymentInfoOnFile" value="支払い情報登録済み"/>
- <string name="NoPaymentInfoOnFile" value="支払い情報未登録"/>
- <string name="AgeVerified" value="年齢確認済み"/>
- <string name="NotAgeVerified" value="年齢未確認"/>
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=ja
- </string>
- <string name="no_partner_text" value="なし"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="data_panel">
- <panel name="lifes_images_panel">
- <icon label="" name="2nd_life_edit_icon" tool_tip="クリックして画像を選択"/>
- </panel>
- <icon label="" name="real_world_edit_icon" tool_tip="クリックして画像を選択"/>
- <text name="title_homepage_text">
- Web サイト:
- </text>
- <check_box label="検索結果に表示" name="show_in_search_checkbox"/>
- <text name="title_acc_status_text" value="アカウントの状態:"/>
- </panel>
- </panel>
- </scroll_container>
- <panel name="profile_me_buttons_panel">
- <button label="変更を保存" name="save_btn"/>
- <button label="キャンセル" name="cancel_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profile Edit" name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident" value="住人"/>
+ <string name="AcctTypeTrial" value="トライアル"/>
+ <string name="AcctTypeCharterMember" value="特権メンバー"/>
+ <string name="AcctTypeEmployee" value="Linden Lab従業員"/>
+ <string name="PaymentInfoUsed" value="支払い情報登録済"/>
+ <string name="PaymentInfoOnFile" value="支払い情報登録済み"/>
+ <string name="NoPaymentInfoOnFile" value="支払い情報未登録"/>
+ <string name="AgeVerified" value="年齢確認済み"/>
+ <string name="NotAgeVerified" value="年齢未確認"/>
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=ja
+ </string>
+ <string name="no_partner_text" value="なし"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="data_panel">
+ <panel name="lifes_images_panel">
+ <icon label="" name="2nd_life_edit_icon" tool_tip="クリックして画像を選択"/>
+ </panel>
+ <icon label="" name="real_world_edit_icon" tool_tip="クリックして画像を選択"/>
+ <text name="title_homepage_text">
+ Web サイト:
+ </text>
+ <check_box label="検索結果に表示" name="show_in_search_checkbox"/>
+ <text name="title_acc_status_text" value="アカウントの状態:"/>
+ </panel>
+ </panel>
+ </scroll_container>
+ <panel name="profile_me_buttons_panel">
+ <button label="変更を保存" name="save_btn"/>
+ <button label="キャンセル" name="cancel_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
index 586eb4e6cc..815bb93e66 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="メンバーを招待" name="invite_panel">
- <panel.string name="confirm_invite_owner_str">
- 本当に新しい所有者を招待しますか?この操作は取り消しできません。
- </panel.string>
- <panel.string name="loading">
- (ローディング...)
- </panel.string>
- <panel.string name="already_in_group">
- 何人かのアバターは既にグループに入っているため招待されませんでした。
- </panel.string>
- <text bottom_delta="-96" font="SansSerifSmall" height="72" name="help_text">
- あなたのグループに一度に複数の
-住人を招待することができます。
-「リストから住人を選択」
-をクリックしてください。
- </text>
- <button bottom_delta="-10" label="リストから住人を選択" name="add_button" tool_tip=""/>
- <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="複数の住人を選択するには、Ctrlキーを押しながら住人名をクリックします。"/>
- <button label="リストから選択したものを削除" name="remove_button" tool_tip="上で選択した居住者を招待リストから削除します。"/>
- <text name="role_text">
- 割り当て先の役割を選択:
- </text>
- <combo_box name="role_name" tool_tip="メンバーに割り当て可能な役割をリストから選択。"/>
- <button label="招待を送信" name="ok_button"/>
- <button label="取り消し" name="cancel_button"/>
- <string name="GroupInvitation">
- グループへの招待
- </string>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="メンバーを招待" name="invite_panel">
+ <panel.string name="confirm_invite_owner_str">
+ 本当に新しい所有者を招待しますか?この操作は取り消しできません。
+ </panel.string>
+ <panel.string name="loading">
+ (ローディング...)
+ </panel.string>
+ <panel.string name="already_in_group">
+ 何人かのアバターは既にグループに入っているため招待されませんでした。
+ </panel.string>
+ <text bottom_delta="-96" font="SansSerifSmall" height="72" name="help_text">
+ あなたのグループに一度に複数の
+住人を招待することができます。
+「リストから住人を選択」
+をクリックしてください。
+ </text>
+ <button bottom_delta="-10" label="リストから住人を選択" name="add_button" tool_tip=""/>
+ <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="複数の住人を選択するには、Ctrlキーを押しながら住人名をクリックします。"/>
+ <button label="リストから選択したものを削除" name="remove_button" tool_tip="上で選択した居住者を招待リストから削除します。"/>
+ <text name="role_text">
+ 割り当て先の役割を選択:
+ </text>
+ <combo_box name="role_name" tool_tip="メンバーに割り当て可能な役割をリストから選択。"/>
+ <button label="招待を送信" name="ok_button"/>
+ <button label="取り消し" name="cancel_button"/>
+ <string name="GroupInvitation">
+ グループへの招待
+ </string>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
index 66662ec87a..2b7292d8b2 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
@@ -1,85 +1,85 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="土地とL$" name="land_money_tab">
- <string name="help_text">
- グループ所有地一覧は、寄付に関する詳細と一緒に表示されています。 「土地利用の合計」が「寄付総額」以下、または同じになるまで警告が表示されます。 「計画」、「詳細」、「販売」タブにはグループの資金に関する情報が掲載されています。
- </string>
- <button label="?" name="help_button"/>
- <string name="cant_view_group_land_text">
- あなたはグループ所有の土地表示を許されていません。
- </string>
- <string name="cant_view_group_accounting_text">
- あなたはグループの会計情報の表示を許されていません。
- </string>
- <string name="loading_txt">
- ロード中...
- </string>
- <text name="group_land_heading">
- グループの保有地
- </text>
- <scroll_list name="group_parcel_list">
- <column label="区画" name="name"/>
- <column label="地域(リージョン)" name="location"/>
- <column label="種類" name="type"/>
- <column label="面積" name="area"/>
- <column label="" name="hidden"/>
- </scroll_list>
- <button label="地図" label_selected="地図" name="map_button"/>
- <text name="total_contributed_land_label">
- 寄付総額:
- </text>
- <text name="total_contributed_land_value" width="150">
- [AREA]平方メートル
- </text>
- <text name="total_land_in_use_label">
- 土地利用の合計:
- </text>
- <text name="total_land_in_use_value" width="150">
- [AREA]平方メートル
- </text>
- <text name="land_available_label">
- 利用可の土地:
- </text>
- <text name="land_available_value" width="150">
- [AREA]平方メートル
- </text>
- <text name="your_contribution_label">
- あなたの貢献:
- </text>
- <string name="land_contrib_error">
- 土地の出資設定を行うことができませんでした。
- </string>
- <text name="your_contribution_units">
- (平方メートル)
- </text>
- <text name="your_contribution_max_value">
- ([AMOUNT]最大)
- </text>
- <text name="group_over_limit_text">
- 使用中の土地をサポートするには、グループ・メンバーがさらに多
-くの土地クレジットを提供する必要があります。
- </text>
- <text name="group_money_heading">
- グループL$
- </text>
- <tab_container name="group_money_tab_container">
- <panel label="計画" name="group_money_planning_tab">
- <text_editor name="group_money_planning_text">
- 計算中...
- </text_editor>
- </panel>
- <panel label="詳細" name="group_money_details_tab">
- <text_editor name="group_money_details_text">
- 計算中…
- </text_editor>
- <button label="前の週" label_selected="前の週" name="earlier_details_button" tool_tip="前の週の履歴"/>
- <button label="次の週" label_selected="次の週" name="later_details_button" tool_tip="次の週の履歴"/>
- </panel>
- <panel label="販売" name="group_money_sales_tab">
- <text_editor name="group_money_sales_text">
- 計算中…
- </text_editor>
- <button label="前の週" label_selected="前の週" name="earlier_sales_button" tool_tip="前の週の履歴"/>
- <button label="次の週" label_selected="次の週" name="later_sales_button" tool_tip="次の週の履歴"/>
- </panel>
- </tab_container>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="土地とL$" name="land_money_tab">
+ <string name="help_text">
+ グループ所有地一覧は、寄付に関する詳細と一緒に表示されています。 「土地利用の合計」が「寄付総額」以下、または同じになるまで警告が表示されます。 「計画」、「詳細」、「販売」タブにはグループの資金に関する情報が掲載されています。
+ </string>
+ <button label="?" name="help_button"/>
+ <string name="cant_view_group_land_text">
+ あなたはグループ所有の土地表示を許されていません。
+ </string>
+ <string name="cant_view_group_accounting_text">
+ あなたはグループの会計情報の表示を許されていません。
+ </string>
+ <string name="loading_txt">
+ ロード中...
+ </string>
+ <text name="group_land_heading">
+ グループの保有地
+ </text>
+ <scroll_list name="group_parcel_list">
+ <column label="区画" name="name"/>
+ <column label="地域(リージョン)" name="location"/>
+ <column label="種類" name="type"/>
+ <column label="面積" name="area"/>
+ <column label="" name="hidden"/>
+ </scroll_list>
+ <button label="地図" label_selected="地図" name="map_button"/>
+ <text name="total_contributed_land_label">
+ 寄付総額:
+ </text>
+ <text name="total_contributed_land_value" width="150">
+ [AREA]平方メートル
+ </text>
+ <text name="total_land_in_use_label">
+ 土地利用の合計:
+ </text>
+ <text name="total_land_in_use_value" width="150">
+ [AREA]平方メートル
+ </text>
+ <text name="land_available_label">
+ 利用可の土地:
+ </text>
+ <text name="land_available_value" width="150">
+ [AREA]平方メートル
+ </text>
+ <text name="your_contribution_label">
+ あなたの貢献:
+ </text>
+ <string name="land_contrib_error">
+ 土地の出資設定を行うことができませんでした。
+ </string>
+ <text name="your_contribution_units">
+ (平方メートル)
+ </text>
+ <text name="your_contribution_max_value">
+ ([AMOUNT]最大)
+ </text>
+ <text name="group_over_limit_text">
+ 使用中の土地をサポートするには、グループ・メンバーがさらに多
+くの土地クレジットを提供する必要があります。
+ </text>
+ <text name="group_money_heading">
+ グループL$
+ </text>
+ <tab_container name="group_money_tab_container">
+ <panel label="計画" name="group_money_planning_tab">
+ <text_editor name="group_money_planning_text">
+ 計算中...
+ </text_editor>
+ </panel>
+ <panel label="詳細" name="group_money_details_tab">
+ <text_editor name="group_money_details_text">
+ 計算中…
+ </text_editor>
+ <button label="前の週" label_selected="前の週" name="earlier_details_button" tool_tip="前の週の履歴"/>
+ <button label="次の週" label_selected="次の週" name="later_details_button" tool_tip="次の週の履歴"/>
+ </panel>
+ <panel label="販売" name="group_money_sales_tab">
+ <text_editor name="group_money_sales_text">
+ 計算中…
+ </text_editor>
+ <button label="前の週" label_selected="前の週" name="earlier_sales_button" tool_tip="前の週の履歴"/>
+ <button label="次の週" label_selected="次の週" name="later_sales_button" tool_tip="次の週の履歴"/>
+ </panel>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
index 02ada7e6e5..a652e3bf11 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="group_list_item">
- <text name="group_name" value="不明"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+ <text name="group_name" value="不明"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
index 382fd02d5f..1146065cd1 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
@@ -1,66 +1,66 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="通知" name="notices_tab">
- <string name="help_text">
- 通知機能を使うと、グループ内ですばやく情報を伝達できます。
-複数のあて先にメッセージを送信できるほか、
-必要に応じてアイテムをメッセージに添付することもできます。
-通知は、受信アビリティがある役割のグループ・メンバーにのみ配信されます。
-通知をオフにするには、一般タブを使います。
- </string>
- <string name="no_notices_text">
- 過去の通知はありません。
- </string>
- <button label="?" label_selected="?" name="help_button"/>
- <text name="lbl">
- グループ通知アーカイブ
- </text>
- <text name="lbl2">
- 通知は 14 日間保存されます。 通知リストは 1 つのグループにつき、1 日最大 200件 に制限されます。
- </text>
- <scroll_list name="notice_list">
- <column label="" name="icon"/>
- <column label="件名" name="subject"/>
- <column label="送り主" name="from"/>
- <column label="日付" name="date"/>
- </scroll_list>
- <text name="notice_list_none_found">
- 何も見つかりませんでした。
- </text>
- <button label="新しい通知" label_selected="新しい通知を作成" name="create_new_notice"/>
- <button label="更新" label_selected="リスト更新" name="refresh_notices"/>
- <panel label="新しい通知を作成" name="panel_create_new_notice">
- <text name="lbl">
- 通知を作成
- </text>
- <text name="lbl2">
- 持ち物からこのパネルにアイテムを 1 つドラッグして添付できます。 添付するアイテムはコピーと再販・プレゼントが可能でなければなりません。また、フォルダは送れません。
- </text>
- <text name="lbl3">
- 件名:
- </text>
- <text name="lbl4">
- メッセージ:
- </text>
- <text name="lbl5">
- 添付:
- </text>
- <button label="添付物を削除" label_selected="添付物を削除" name="remove_attachment"/>
- <button label="送信" label_selected="通知を送信" name="send_notice"/>
- <panel name="drop_target" tool_tip="持ち物からアイテムをメッセージ欄にドラッグしてください。通知と一緒に送信されます。送信するにはコピー、譲渡が可能なオブジェクトである必要があります。"/>
- </panel>
- <panel label="過去の通知を表示" name="panel_view_past_notice">
- <text name="lbl">
- アーカイブ通知
- </text>
- <text name="lbl2">
- 新しい通知の送信は、上の[新しい通知を作成する]をクリックしてください。
- </text>
- <text name="lbl3">
- 件名:
- </text>
- <text name="lbl4">
- メッセージ:
- </text>
- <button label="添付物を開く" label_selected="添付物を開く" name="open_attachment"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="通知" name="notices_tab">
+ <string name="help_text">
+ 通知機能を使うと、グループ内ですばやく情報を伝達できます。
+複数のあて先にメッセージを送信できるほか、
+必要に応じてアイテムをメッセージに添付することもできます。
+通知は、受信アビリティがある役割のグループ・メンバーにのみ配信されます。
+通知をオフにするには、一般タブを使います。
+ </string>
+ <string name="no_notices_text">
+ 過去の通知はありません。
+ </string>
+ <button label="?" label_selected="?" name="help_button"/>
+ <text name="lbl">
+ グループ通知アーカイブ
+ </text>
+ <text name="lbl2">
+ 通知は 14 日間保存されます。 通知リストは 1 つのグループにつき、1 日最大 200件 に制限されます。
+ </text>
+ <scroll_list name="notice_list">
+ <column label="" name="icon"/>
+ <column label="件名" name="subject"/>
+ <column label="送り主" name="from"/>
+ <column label="日付" name="date"/>
+ </scroll_list>
+ <text name="notice_list_none_found">
+ 何も見つかりませんでした。
+ </text>
+ <button label="新しい通知" label_selected="新しい通知を作成" name="create_new_notice"/>
+ <button label="更新" label_selected="リスト更新" name="refresh_notices"/>
+ <panel label="新しい通知を作成" name="panel_create_new_notice">
+ <text name="lbl">
+ 通知を作成
+ </text>
+ <text name="lbl2">
+ 持ち物からこのパネルにアイテムを 1 つドラッグして添付できます。 添付するアイテムはコピーと再販・プレゼントが可能でなければなりません。また、フォルダは送れません。
+ </text>
+ <text name="lbl3">
+ 件名:
+ </text>
+ <text name="lbl4">
+ メッセージ:
+ </text>
+ <text name="lbl5">
+ 添付:
+ </text>
+ <button label="添付物を削除" label_selected="添付物を削除" name="remove_attachment"/>
+ <button label="送信" label_selected="通知を送信" name="send_notice"/>
+ <panel name="drop_target" tool_tip="持ち物からアイテムをメッセージ欄にドラッグしてください。通知と一緒に送信されます。送信するにはコピー、譲渡が可能なオブジェクトである必要があります。"/>
+ </panel>
+ <panel label="過去の通知を表示" name="panel_view_past_notice">
+ <text name="lbl">
+ アーカイブ通知
+ </text>
+ <text name="lbl2">
+ 新しい通知の送信は、上の[新しい通知を作成する]をクリックしてください。
+ </text>
+ <text name="lbl3">
+ 件名:
+ </text>
+ <text name="lbl4">
+ メッセージ:
+ </text>
+ <button label="添付物を開く" label_selected="添付物を開く" name="open_attachment"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
index c7e62635e4..963a4ba5e2 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_roles.xml
@@ -1,118 +1,118 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="メンバーと役割" name="roles_tab">
- <panel.string name="default_needs_apply_text">
- 現在のサブタブに、未適用の変更があります。
- </panel.string>
- <panel.string name="want_apply_text">
- これらの変更を適用しますか?
- </panel.string>
- <tab_container name="roles_tab_container">
- <panel label="メンバー" name="members_sub_tab" tool_tip="メンバー">
- <panel.string name="help_text">
- あなたはメンバーに割り当てられた役割を付加、削除できます。
-Ctrl キーを押しながらメンバー名をクリックすると
-複数の人を選択できます。
- </panel.string>
- <filter_editor label="メンバーを選別" name="filter_input"/>
- <name_list name="member_list">
- <name_list.columns label="メンバー" name="name"/>
- <name_list.columns label="寄付" name="donated"/>
- <name_list.columns label="オンライン" name="online"/>
- </name_list>
- <button label="招待" name="member_invite"/>
- <button label="追放" name="member_eject"/>
- </panel>
- <panel label="役割" name="roles_sub_tab">
- <panel.string name="help_text">
- 役割にはタイトルがあり、メンバーが行使可能な
-能力のリストが定義されます。 メンバーは、
-1つまたは複数の役割に属することができます。 1つのグループに対し、
-「全員」と「オーナー」の役割を含めて最高で10の役割を持たせることができます。
- </panel.string>
- <panel.string name="cant_delete_role">
- 「全員」と「オーナー」は特別な役割なので、削除できません。
- </panel.string>
- <filter_editor label="役割を選別" name="filter_input"/>
- <scroll_list name="role_list">
- <scroll_list.columns label="役割" name="name"/>
- <scroll_list.columns label="肩書き" name="title"/>
- <scroll_list.columns label="メンバー" name="members"/>
- </scroll_list>
- <button label="役割を追加" name="role_create"/>
- <button label="役割を削除" name="role_delete"/>
- </panel>
- <panel label="能力" name="actions_sub_tab" tool_tip="能力の説明文には、どの役割・メンバーがその能力を持つかが書かれています。">
- <panel.string name="help_text">
- このグループ内で役割を与えられているメンバーが実行できる操作は、
-能力によって決まります。 さまざまな能力が用意されています。
- </panel.string>
- <filter_editor label="能力を選別" name="filter_input"/>
- <scroll_list name="action_list" tool_tip="能力を選択して詳細を表示します。">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- </tab_container>
- <panel name="members_footer">
- <text name="static">
- 割当られた役割
- </text>
- <scroll_list name="member_assigned_roles">
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="role"/>
- </scroll_list>
- <text name="static2">
- 許可された能力
- </text>
- <scroll_list name="member_allowed_actions" tool_tip="許可された能力の詳細は「能力」タブをご覧ください。">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="roles_footer">
- <text name="static">
- 名前
- </text>
- <line_editor name="role_name">
- 従業員
- </line_editor>
- <text name="static3">
- 肩書き
- </text>
- <line_editor name="role_title">
- (待機中)
- </line_editor>
- <text name="static2">
- 説明
- </text>
- <text_editor name="role_description">
- (待機中)
- </text_editor>
- <text name="static4">
- 割当られたメンバー
- </text>
- <check_box label="メンバーが公開状態" name="role_visible_in_list" tool_tip="この役割のメンバーをグループ外の人の一般タブに表示するかどうかを設定します。"/>
- <text name="static5" tool_tip="現在選択されている役割で実行できる能力のリスト">
- 許可された能力
- </text>
- <scroll_list name="role_allowed_actions" tool_tip="許可された能力の詳細は「能力」タブをご覧ください。">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="actions_footer">
- <text name="static">
- 説明
- </text>
- <text_editor name="action_description">
- これは「グループからメンバーを追放する」能力です。 オーナーを追放できるのは、別のオーナーだけです。
- </text_editor>
- <text name="static2">
- 役割と能力
- </text>
- <text name="static3">
- 能力のあるメンバー
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="メンバーと役割" name="roles_tab">
+ <panel.string name="default_needs_apply_text">
+ 現在のサブタブに、未適用の変更があります。
+ </panel.string>
+ <panel.string name="want_apply_text">
+ これらの変更を適用しますか?
+ </panel.string>
+ <tab_container name="roles_tab_container">
+ <panel label="メンバー" name="members_sub_tab" tool_tip="メンバー">
+ <panel.string name="help_text">
+ あなたはメンバーに割り当てられた役割を付加、削除できます。
+Ctrl キーを押しながらメンバー名をクリックすると
+複数の人を選択できます。
+ </panel.string>
+ <filter_editor label="メンバーを選別" name="filter_input"/>
+ <name_list name="member_list">
+ <name_list.columns label="メンバー" name="name"/>
+ <name_list.columns label="寄付" name="donated"/>
+ <name_list.columns label="オンライン" name="online"/>
+ </name_list>
+ <button label="招待" name="member_invite"/>
+ <button label="追放" name="member_eject"/>
+ </panel>
+ <panel label="役割" name="roles_sub_tab">
+ <panel.string name="help_text">
+ 役割にはタイトルがあり、メンバーが行使可能な
+能力のリストが定義されます。 メンバーは、
+1つまたは複数の役割に属することができます。 1つのグループに対し、
+「全員」と「オーナー」の役割を含めて最高で10の役割を持たせることができます。
+ </panel.string>
+ <panel.string name="cant_delete_role">
+ 「全員」と「オーナー」は特別な役割なので、削除できません。
+ </panel.string>
+ <filter_editor label="役割を選別" name="filter_input"/>
+ <scroll_list name="role_list">
+ <scroll_list.columns label="役割" name="name"/>
+ <scroll_list.columns label="肩書き" name="title"/>
+ <scroll_list.columns label="メンバー" name="members"/>
+ </scroll_list>
+ <button label="役割を追加" name="role_create"/>
+ <button label="役割を削除" name="role_delete"/>
+ </panel>
+ <panel label="能力" name="actions_sub_tab" tool_tip="能力の説明文には、どの役割・メンバーがその能力を持つかが書かれています。">
+ <panel.string name="help_text">
+ このグループ内で役割を与えられているメンバーが実行できる操作は、
+能力によって決まります。 さまざまな能力が用意されています。
+ </panel.string>
+ <filter_editor label="能力を選別" name="filter_input"/>
+ <scroll_list name="action_list" tool_tip="能力を選択して詳細を表示します。">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ </tab_container>
+ <panel name="members_footer">
+ <text name="static">
+ 割当られた役割
+ </text>
+ <scroll_list name="member_assigned_roles">
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="role"/>
+ </scroll_list>
+ <text name="static2">
+ 許可された能力
+ </text>
+ <scroll_list name="member_allowed_actions" tool_tip="許可された能力の詳細は「能力」タブをご覧ください。">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ <panel name="roles_footer">
+ <text name="static">
+ 名前
+ </text>
+ <line_editor name="role_name">
+ 従業員
+ </line_editor>
+ <text name="static3">
+ 肩書き
+ </text>
+ <line_editor name="role_title">
+ (待機中)
+ </line_editor>
+ <text name="static2">
+ 説明
+ </text>
+ <text_editor name="role_description">
+ (待機中)
+ </text_editor>
+ <text name="static4">
+ 割当られたメンバー
+ </text>
+ <check_box label="メンバーが公開状態" name="role_visible_in_list" tool_tip="この役割のメンバーをグループ外の人の一般タブに表示するかどうかを設定します。"/>
+ <text name="static5" tool_tip="現在選択されている役割で実行できる能力のリスト">
+ 許可された能力
+ </text>
+ <scroll_list name="role_allowed_actions" tool_tip="許可された能力の詳細は「能力」タブをご覧ください。">
+ <scroll_list.columns label="" name="icon"/>
+ <scroll_list.columns label="" name="checkbox"/>
+ <scroll_list.columns label="" name="action"/>
+ </scroll_list>
+ </panel>
+ <panel name="actions_footer">
+ <text name="static">
+ 説明
+ </text>
+ <text_editor name="action_description">
+ これは「グループからメンバーを追放する」能力です。 オーナーを追放できるのは、別のオーナーだけです。
+ </text_editor>
+ <text name="static2">
+ 役割と能力
+ </text>
+ <text name="static3">
+ 能力のあるメンバー
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
index 4182ca506f..48f04b2b5d 100644
--- a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
- <button label="プロフィールの表示" name="view_profile_btn"/>
- <button label="フレンドを追加" name="add_friend_btn"/>
- <button label="共有" name="share_btn"/>
- <panel name="panel_call_buttons">
- <button label="コール" name="call_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+ <button label="プロフィールの表示" name="view_profile_btn"/>
+ <button label="フレンドを追加" name="add_friend_btn"/>
+ <button label="共有" name="share_btn"/>
+ <panel name="panel_call_buttons">
+ <button label="コール" name="call_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
index d55a78297c..00b9d5aa47 100644
--- a/indra/newview/skins/default/xui/ja/panel_login.xml
+++ b/indra/newview/skins/default/xui/ja/panel_login.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="create_account_url">
- http://jp.secondlife.com/registration/
- </panel.string>
- <panel.string name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <panel name="login_widgets">
- <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/>
- <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/>
- <text name="start_location_text">
- 開始位置:
- </text>
- <text name="create_new_account_text">
- 新規アカウントを作成
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+ <panel.string name="create_account_url">
+ http://jp.secondlife.com/registration/
+ </panel.string>
+ <panel.string name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </panel.string>
+ <panel name="login_widgets">
+ <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/>
+ <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/>
+ <text name="start_location_text">
+ 開始位置:
+ </text>
+ <text name="create_new_account_text">
+ 新規アカウントを作成
+ </text>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
index 159a63cd40..04822c8848 100644
--- a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="chat_bar">
- <line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="エンターを押して発言、Ctrl+エンターで叫ぶ。"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+ <line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="エンターを押して発言、Ctrl+エンターで叫ぶ。"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_pick_info.xml b/indra/newview/skins/default/xui/ja/panel_pick_info.xml
index 711a4cf47a..30fd8d1adc 100644
--- a/indra/newview/skins/default/xui/ja/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_pick_info.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_pick_info">
- <text name="title" value="ピックの情報"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="pick_name" value="[name]"/>
- <text name="pick_location" value="[loading...]"/>
- <text name="pick_desc" value="[description]"/>
- </panel>
- </scroll_container>
- <panel name="buttons">
- <button label="テレポート" name="teleport_btn"/>
- <button label="地図" name="show_on_map_btn"/>
- <button label="編集" name="edit_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+ <text name="title" value="ピックの情報"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <text name="pick_name" value="[name]"/>
+ <text name="pick_location" value="[loading...]"/>
+ <text name="pick_desc" value="[description]"/>
+ </panel>
+ </scroll_container>
+ <panel name="buttons">
+ <button label="テレポート" name="teleport_btn"/>
+ <button label="地図" name="show_on_map_btn"/>
+ <button label="編集" name="edit_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml
index 6a391957e9..984d5f7268 100644
--- a/indra/newview/skins/default/xui/ja/panel_picks.xml
+++ b/indra/newview/skins/default/xui/ja/panel_picks.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="ピック" name="panel_picks">
- <panel label="bottom_panel" name="edit_panel">
- <button name="new_btn" tool_tip="現在地を新規ピックに追加"/>
- </panel>
- <panel name="buttons_cucks">
- <button label="地図" name="show_on_map_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="ピック" name="panel_picks">
+ <panel label="bottom_panel" name="edit_panel">
+ <button name="new_btn" tool_tip="現在地を新規ピックに追加"/>
+ </panel>
+ <panel name="buttons_cucks">
+ <button label="地図" name="show_on_map_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index 88e10aa832..193d43311c 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="チャット" name="chat">
- <radio_group name="chat_font_size">
- <radio_item label="小" name="radio"/>
- <radio_item label="中" name="radio2"/>
- <radio_item label="大" name="radio3"/>
- </radio_group>
- <color_swatch label="自分" name="user"/>
- <text name="text_box1">
- ミー
- </text>
- <color_swatch label="その他" name="agent"/>
- <text name="text_box2">
- その他
- </text>
- <color_swatch label="IM" name="im"/>
- <text name="text_box3">
- IM
- </text>
- <color_swatch label="システム" name="system"/>
- <text name="text_box4">
- システム
- </text>
- <color_swatch label="エラー" name="script_error"/>
- <text name="text_box5">
- エラー
- </text>
- <color_swatch label="オブジェクト" name="objects"/>
- <text name="text_box6">
- オブジェクト
- </text>
- <color_swatch label="所有者" name="owner"/>
- <text name="text_box7">
- 所有者
- </text>
- <color_swatch label="URL" name="links"/>
- <text name="text_box9">
- URL
- </text>
- <check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/>
- <check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="チャット" name="chat">
+ <radio_group name="chat_font_size">
+ <radio_item label="小" name="radio"/>
+ <radio_item label="中" name="radio2"/>
+ <radio_item label="大" name="radio3"/>
+ </radio_group>
+ <color_swatch label="自分" name="user"/>
+ <text name="text_box1">
+ ミー
+ </text>
+ <color_swatch label="その他" name="agent"/>
+ <text name="text_box2">
+ その他
+ </text>
+ <color_swatch label="IM" name="im"/>
+ <text name="text_box3">
+ IM
+ </text>
+ <color_swatch label="システム" name="system"/>
+ <text name="text_box4">
+ システム
+ </text>
+ <color_swatch label="エラー" name="script_error"/>
+ <text name="text_box5">
+ エラー
+ </text>
+ <color_swatch label="オブジェクト" name="objects"/>
+ <text name="text_box6">
+ オブジェクト
+ </text>
+ <color_swatch label="所有者" name="owner"/>
+ <text name="text_box7">
+ 所有者
+ </text>
+ <color_swatch label="URL" name="links"/>
+ <text name="text_box9">
+ URL
+ </text>
+ <check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/>
+ <check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 7c02baedc0..fba2c5f18d 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -1,116 +1,116 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="表示" name="Display panel">
- <text name="WindowSizeLabel">
- ウィンドウ・サイズ:
- </text>
- <check_box label="全画面" name="windowed mode"/>
- <combo_box name="windowsize combo">
- <combo_box.item label="640x480" name="640x480"/>
- <combo_box.item label="800x600" name="800x600"/>
- <combo_box.item label="720x480 (NTSC)" name="720x480"/>
- <combo_box.item label="768x576 (PAL)" name="768x576"/>
- <combo_box.item label="1024x768" name="1024x768"/>
- </combo_box>
- <text name="UI Size:">
- UIサイズ:
- </text>
- <text name="QualitySpeed">
- クオリティとスピード:
- </text>
- <text name="FasterText">
- 速い
- </text>
- <text name="BetterText">
- 速
- </text>
- <text name="ShadersPrefText">
- 低
- </text>
- <text name="ShadersPrefText2">
- 中
- </text>
- <text name="ShadersPrefText3">
- 高
- </text>
- <text name="ShadersPrefText4">
- 超高
- </text>
- <panel label="CustomGraphics" name="CustomGraphics Panel">
- <text name="ShadersText">
- シェーダー:
- </text>
- <check_box initial_value="true" label="バンプ・マッピングと光沢" name="BumpShiny"/>
- <check_box initial_value="true" label="基本シェーダー" name="BasicShaders" tool_tip="このオプションを無効にするとグラフィック・カード・ドライバの種類によってはクラッシュ防止になります。"/>
- <check_box initial_value="true" label="周囲(大気)シェーダー" name="WindLightUseAtmosShaders"/>
- <check_box initial_value="true" label="水の反射" name="Reflections"/>
- <text name="ReflectionDetailText">
- 反射詳細:
- </text>
- <radio_group name="ReflectionDetailRadio">
- <radio_item label="地形と樹木" name="0"/>
- <radio_item label="すべての静的オブジェクト" name="1"/>
- <radio_item label="すべてのアバターとオブジェクト" name="2"/>
- <radio_item label="すべて" name="3"/>
- </radio_group>
- <text name="AvatarRenderingText">
- アバター表示:
- </text>
- <check_box initial_value="true" label="アバターの精度を下げる" name="AvatarImpostors"/>
- <check_box initial_value="true" label="ハードウェア・スキニング" name="AvatarVertexProgram"/>
- <check_box initial_value="true" label="アバターの服" name="AvatarCloth"/>
- <slider label="描画距離:" name="DrawDistance"/>
- <text name="DrawDistanceMeterText2">
- m
- </text>
- <slider label="最大パーティクル数:" name="MaxParticleCount"/>
- <slider label="ポストプロセス品質:" name="RenderPostProcess"/>
- <text name="MeshDetailText">
- メッシュ詳細:
- </text>
- <slider label=" オブジェクト:" name="ObjectMeshDetail"/>
- <slider label=" フレキシプリム:" name="FlexibleMeshDetail"/>
- <slider label=" 樹木:" name="TreeMeshDetail"/>
- <slider label=" アバター:" name="AvatarMeshDetail"/>
- <slider label=" 地形:" name="TerrainMeshDetail"/>
- <slider label=" 空:" name="SkyMeshDetail"/>
- <text name="PostProcessText">
- 低
- </text>
- <text name="ObjectMeshDetailText">
- 低
- </text>
- <text name="FlexibleMeshDetailText">
- 低
- </text>
- <text name="TreeMeshDetailText">
- 低
- </text>
- <text name="AvatarMeshDetailText">
- 低
- </text>
- <text name="TerrainMeshDetailText">
- 低
- </text>
- <text name="SkyMeshDetailText">
- 低
- </text>
- <text name="LightingDetailText">
- ライティング詳細:
- </text>
- <radio_group name="LightingDetailRadio">
- <radio_item label="太陽と月のみ" name="SunMoon"/>
- <radio_item label="近隣のローカル・ライト" name="LocalLights"/>
- </radio_group>
- <text name="TerrainDetailText">
- 地形詳細:
- </text>
- <radio_group name="TerrainDetailRadio">
- <radio_item label="低" name="0"/>
- <radio_item label="高" name="2"/>
- </radio_group>
- </panel>
- <button label="適用" label_selected="適用" name="Apply"/>
- <button label="リセット" name="Defaults"/>
- <button label="詳しい設定" name="Advanced"/>
- <button label="ハードウェア" label_selected="ハードウェア" name="GraphicsHardwareButton"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="表示" name="Display panel">
+ <text name="WindowSizeLabel">
+ ウィンドウ・サイズ:
+ </text>
+ <check_box label="全画面" name="windowed mode"/>
+ <combo_box name="windowsize combo">
+ <combo_box.item label="640x480" name="640x480"/>
+ <combo_box.item label="800x600" name="800x600"/>
+ <combo_box.item label="720x480 (NTSC)" name="720x480"/>
+ <combo_box.item label="768x576 (PAL)" name="768x576"/>
+ <combo_box.item label="1024x768" name="1024x768"/>
+ </combo_box>
+ <text name="UI Size:">
+ UIサイズ:
+ </text>
+ <text name="QualitySpeed">
+ クオリティとスピード:
+ </text>
+ <text name="FasterText">
+ 速い
+ </text>
+ <text name="BetterText">
+ 速
+ </text>
+ <text name="ShadersPrefText">
+ 低
+ </text>
+ <text name="ShadersPrefText2">
+ 中
+ </text>
+ <text name="ShadersPrefText3">
+ 高
+ </text>
+ <text name="ShadersPrefText4">
+ 超高
+ </text>
+ <panel label="CustomGraphics" name="CustomGraphics Panel">
+ <text name="ShadersText">
+ シェーダー:
+ </text>
+ <check_box initial_value="true" label="バンプ・マッピングと光沢" name="BumpShiny"/>
+ <check_box initial_value="true" label="基本シェーダー" name="BasicShaders" tool_tip="このオプションを無効にするとグラフィック・カード・ドライバの種類によってはクラッシュ防止になります。"/>
+ <check_box initial_value="true" label="周囲(大気)シェーダー" name="WindLightUseAtmosShaders"/>
+ <check_box initial_value="true" label="水の反射" name="Reflections"/>
+ <text name="ReflectionDetailText">
+ 反射詳細:
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item label="地形と樹木" name="0"/>
+ <radio_item label="すべての静的オブジェクト" name="1"/>
+ <radio_item label="すべてのアバターとオブジェクト" name="2"/>
+ <radio_item label="すべて" name="3"/>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ アバター表示:
+ </text>
+ <check_box initial_value="true" label="アバターの精度を下げる" name="AvatarImpostors"/>
+ <check_box initial_value="true" label="ハードウェア・スキニング" name="AvatarVertexProgram"/>
+ <check_box initial_value="true" label="アバターの服" name="AvatarCloth"/>
+ <slider label="描画距離:" name="DrawDistance"/>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="最大パーティクル数:" name="MaxParticleCount"/>
+ <slider label="ポストプロセス品質:" name="RenderPostProcess"/>
+ <text name="MeshDetailText">
+ メッシュ詳細:
+ </text>
+ <slider label=" オブジェクト:" name="ObjectMeshDetail"/>
+ <slider label=" フレキシプリム:" name="FlexibleMeshDetail"/>
+ <slider label=" 樹木:" name="TreeMeshDetail"/>
+ <slider label=" アバター:" name="AvatarMeshDetail"/>
+ <slider label=" 地形:" name="TerrainMeshDetail"/>
+ <slider label=" 空:" name="SkyMeshDetail"/>
+ <text name="PostProcessText">
+ 低
+ </text>
+ <text name="ObjectMeshDetailText">
+ 低
+ </text>
+ <text name="FlexibleMeshDetailText">
+ 低
+ </text>
+ <text name="TreeMeshDetailText">
+ 低
+ </text>
+ <text name="AvatarMeshDetailText">
+ 低
+ </text>
+ <text name="TerrainMeshDetailText">
+ 低
+ </text>
+ <text name="SkyMeshDetailText">
+ 低
+ </text>
+ <text name="LightingDetailText">
+ ライティング詳細:
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item label="太陽と月のみ" name="SunMoon"/>
+ <radio_item label="近隣のローカル・ライト" name="LocalLights"/>
+ </radio_group>
+ <text name="TerrainDetailText">
+ 地形詳細:
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item label="低" name="0"/>
+ <radio_item label="高" name="2"/>
+ </radio_group>
+ </panel>
+ <button label="適用" label_selected="適用" name="Apply"/>
+ <button label="リセット" name="Defaults"/>
+ <button label="詳しい設定" name="Advanced"/>
+ <button label="ハードウェア" label_selected="ハードウェア" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
index f7b727de6c..e0122d123f 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
@@ -1,20 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="チャット設定" name="im">
- <panel.string name="log_in_to_change">
- ログインして変更してください
- </panel.string>
- <button label="履歴の消去" name="clear_cache"/>
- <text name="cache_size_label_l">
- (位置、画像、web、検索履歴)
- </text>
- <check_box label="フレンドとグループのみオンライン状況の確認可能" name="online_visibility"/>
- <check_box label="フレンドとグループのみコールとIMの受信可能" name="voice_call_friends_only_check"/>
- <check_box label="コールが終了したらマイクのスイッチを切る" name="auto_disengage_mic_check"/>
- <check_box label="Cookieを受け入れる" name="cookies_enabled"/>
- <check_box label="コンピューターにログを保存" name="log_instant_messages"/>
- <radio_group name="ChatIMLogs">
- <radio_item label="チャット" name="radio1"/>
- <radio_item label="IM" name="radio2"/>
- </radio_group>
- <button label="ブラウズ" label_selected="ブラウズ" name="log_path_button"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="チャット設定" name="im">
+ <panel.string name="log_in_to_change">
+ ログインして変更してください
+ </panel.string>
+ <button label="履歴の消去" name="clear_cache"/>
+ <text name="cache_size_label_l">
+ (位置、画像、web、検索履歴)
+ </text>
+ <check_box label="フレンドとグループのみオンライン状況の確認可能" name="online_visibility"/>
+ <check_box label="フレンドとグループのみコールとIMの受信可能" name="voice_call_friends_only_check"/>
+ <check_box label="コールが終了したらマイクのスイッチを切る" name="auto_disengage_mic_check"/>
+ <check_box label="Cookieを受け入れる" name="cookies_enabled"/>
+ <check_box label="コンピューターにログを保存" name="log_instant_messages"/>
+ <radio_group name="ChatIMLogs">
+ <radio_item label="チャット" name="radio1"/>
+ <radio_item label="IM" name="radio2"/>
+ </radio_group>
+ <button label="ブラウズ" label_selected="ブラウズ" name="log_path_button"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
index 59357a366e..af8390ba5c 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
@@ -1,46 +1,46 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="操作とカメラ" name="Input panel">
- <button label="その他のディバイス" name="joystick_setup_button"/>
- <text name="Mouselook:">
- 一人称視点:
- </text>
- <text name=" Mouse Sensitivity">
- マウスの精度
- </text>
- <check_box label="切り替え" name="invert_mouse"/>
- <text name="Network:">
- ネットワーク:
- </text>
- <text name="Maximum bandwidth">
- 最大帯域幅
- </text>
- <text name="text_box2">
- kbps
- </text>
- <check_box label="カスタムポート" name="connection_port_enabled"/>
- <spinner label="ポート番号:" name="web_proxy_port"/>
- <text name="cache_size_label_l">
- キャッシュサイズ
- </text>
- <text name="text_box5">
- MB
- </text>
- <button label="ブラウズ" label_selected="ブラウズ" name="set_cache"/>
- <button label="リセット" label_selected="設定" name="reset_cache"/>
- <text name="Cache location">
- キャッシュの場所
- </text>
- <text name="Web:">
- Web:
- </text>
- <radio_group name="use_external_browser">
- <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプやWebリンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。"/>
- <radio_item label="外部ブラウザ(IEやFirefox)を使用" name="external" tool_tip="デフォルトのシステムWebブラウザでヘルプやWebリンク先などを見ます。全画面で起動中にはおすすめしません。"/>
- </radio_group>
- <check_box initial_value="false" label="Webプロキシ" name="web_proxy_enabled"/>
- <line_editor name="web_proxy_editor" tool_tip="使用するプロキシ名またはIPアドレス"/>
- <button label="ブラウズ" label_selected="ブラウズ" name="set_proxy"/>
- <text name="Proxy location">
- プロキシ
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="操作とカメラ" name="Input panel">
+ <button label="その他のディバイス" name="joystick_setup_button"/>
+ <text name="Mouselook:">
+ 一人称視点:
+ </text>
+ <text name=" Mouse Sensitivity">
+ マウスの精度
+ </text>
+ <check_box label="切り替え" name="invert_mouse"/>
+ <text name="Network:">
+ ネットワーク:
+ </text>
+ <text name="Maximum bandwidth">
+ 最大帯域幅
+ </text>
+ <text name="text_box2">
+ kbps
+ </text>
+ <check_box label="カスタムポート" name="connection_port_enabled"/>
+ <spinner label="ポート番号:" name="web_proxy_port"/>
+ <text name="cache_size_label_l">
+ キャッシュサイズ
+ </text>
+ <text name="text_box5">
+ MB
+ </text>
+ <button label="ブラウズ" label_selected="ブラウズ" name="set_cache"/>
+ <button label="リセット" label_selected="設定" name="reset_cache"/>
+ <text name="Cache location">
+ キャッシュの場所
+ </text>
+ <text name="Web:">
+ Web:
+ </text>
+ <radio_group name="use_external_browser">
+ <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプやWebリンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。"/>
+ <radio_item label="外部ブラウザ(IEやFirefox)を使用" name="external" tool_tip="デフォルトのシステムWebブラウザでヘルプやWebリンク先などを見ます。全画面で起動中にはおすすめしません。"/>
+ </radio_group>
+ <check_box initial_value="false" label="Webプロキシ" name="web_proxy_enabled"/>
+ <line_editor name="web_proxy_editor" tool_tip="使用するプロキシ名またはIPアドレス"/>
+ <button label="ブラウズ" label_selected="ブラウズ" name="set_proxy"/>
+ <text name="Proxy location">
+ プロキシ
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
index c4bd21a5ba..499f57d75e 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
@@ -1,72 +1,72 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="音声とビデオ" name="Preference Media panel">
- <slider label="音量" name="System Volume"/>
- <slider label="風の音量" name="Wind Volume"/>
- <slider label="サウンド" name="SFX Volume"/>
- <slider label="メディア" name="Media Volume"/>
- <slider label="UI" name="UI Volume"/>
- <slider label="ミュージック" name="Music Volume"/>
- <slider label="ボイス" name="Voice Volume"/>
- <text_editor name="voice_unavailable">
- ボイスチャットを利用できません
- </text_editor>
- <check_box label="ボイスチャット" name="enable_voice_check"/>
- <radio_group name="ear_location">
- <radio_item label="カメラの位置から聞く" name="0"/>
- <radio_item label="アバターの位置から聞く" name="1"/>
- </radio_group>
- <button label="機器の設定" name="device_settings_btn"/>
- <text name="muting_text">
- ボリューム:
- </text>
- <check_box label="オーディオをミュート" name="disable audio"/>
- <text name="streaming_prefs_text">
- ストリーム環境設定:
- </text>
- <text name="audio_prefs_text">
- オーディオ環境設定:
- </text>
- <panel label="ボリューム" name="Volume Panel"/>
- <check_box label="メディアを自動再生" name="auto_streaming_video"/>
- <check_box label="最小化でミュート" name="mute_when_minimized"/>
- <text name="streaming_text">
- ストリーミング:
- </text>
- <check_box label="音楽がある場合再生する" name="streaming_music"/>
- <check_box label="ストリーミング・メディア使用可時に再生" name="streaming_video"/>
- <text name="system_volume_text">
- サウンド効果:
- </text>
- <text name="wind_volume_text">
- 風の音量:
- </text>
- <text name="footsteps_volume_text">
- 足音:
- </text>
- <text name="ui_volume_text">
- UI音量:
- </text>
- <slider label="ドップラー効果" name="Doppler Effect"/>
- <slider label="遠隔要因" name="Distance Factor"/>
- <slider label="ロールオフ係数" name="Rolloff Factor"/>
- <spinner label="L$変更基準点" name="L$ Change Threshold"/>
- <spinner label="ヘルス変化基準点" name="Health Change Threshold"/>
- <text name="doppler_effect_text">
- オーディオ環境設定:
- </text>
- <text name="distance_factor_text">
- 距離係数:
- </text>
- <text name="rolloff_factor_text">
- ロールオフ:
- </text>
- <text name="default_upload_bitrate_text">
- デフォルトUL速度:
- </text>
- <radio_group name="bitrate">
- <radio_item label="32kbps" name="32kbps"/>
- <radio_item label="64kbps" name="64kbps"/>
- <radio_item label="96kbps" name="96kbps"/>
- <radio_item label="128kbps" name="128kbps"/>
- </radio_group>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="音声とビデオ" name="Preference Media panel">
+ <slider label="音量" name="System Volume"/>
+ <slider label="風の音量" name="Wind Volume"/>
+ <slider label="サウンド" name="SFX Volume"/>
+ <slider label="メディア" name="Media Volume"/>
+ <slider label="UI" name="UI Volume"/>
+ <slider label="ミュージック" name="Music Volume"/>
+ <slider label="ボイス" name="Voice Volume"/>
+ <text_editor name="voice_unavailable">
+ ボイスチャットを利用できません
+ </text_editor>
+ <check_box label="ボイスチャット" name="enable_voice_check"/>
+ <radio_group name="ear_location">
+ <radio_item label="カメラの位置から聞く" name="0"/>
+ <radio_item label="アバターの位置から聞く" name="1"/>
+ </radio_group>
+ <button label="機器の設定" name="device_settings_btn"/>
+ <text name="muting_text">
+ ボリューム:
+ </text>
+ <check_box label="オーディオをミュート" name="disable audio"/>
+ <text name="streaming_prefs_text">
+ ストリーム環境設定:
+ </text>
+ <text name="audio_prefs_text">
+ オーディオ環境設定:
+ </text>
+ <panel label="ボリューム" name="Volume Panel"/>
+ <check_box label="メディアを自動再生" name="auto_streaming_video"/>
+ <check_box label="最小化でミュート" name="mute_when_minimized"/>
+ <text name="streaming_text">
+ ストリーミング:
+ </text>
+ <check_box label="音楽がある場合再生する" name="streaming_music"/>
+ <check_box label="ストリーミング・メディア使用可時に再生" name="streaming_video"/>
+ <text name="system_volume_text">
+ サウンド効果:
+ </text>
+ <text name="wind_volume_text">
+ 風の音量:
+ </text>
+ <text name="footsteps_volume_text">
+ 足音:
+ </text>
+ <text name="ui_volume_text">
+ UI音量:
+ </text>
+ <slider label="ドップラー効果" name="Doppler Effect"/>
+ <slider label="遠隔要因" name="Distance Factor"/>
+ <slider label="ロールオフ係数" name="Rolloff Factor"/>
+ <spinner label="L$変更基準点" name="L$ Change Threshold"/>
+ <spinner label="ヘルス変化基準点" name="Health Change Threshold"/>
+ <text name="doppler_effect_text">
+ オーディオ環境設定:
+ </text>
+ <text name="distance_factor_text">
+ 距離係数:
+ </text>
+ <text name="rolloff_factor_text">
+ ロールオフ:
+ </text>
+ <text name="default_upload_bitrate_text">
+ デフォルトUL速度:
+ </text>
+ <radio_group name="bitrate">
+ <radio_item label="32kbps" name="32kbps"/>
+ <radio_item label="64kbps" name="64kbps"/>
+ <radio_item label="96kbps" name="96kbps"/>
+ <radio_item label="128kbps" name="128kbps"/>
+ </radio_group>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml
index ff82043a0d..8c94833a54 100644
--- a/indra/newview/skins/default/xui/ja/panel_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_profile.xml
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="プロフィール" name="panel_profile">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="payment_update_link_url">
- http://www.secondlife.com/account/billing.php?lang=ja
- </string>
- <string name="my_account_link_url" value="http://secondlife.com/account"/>
- <string name="no_partner_text" value="なし"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <panel name="second_life_image_panel">
- <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
- </panel>
- <panel name="first_life_image_panel">
- <text name="title_rw_descr_text" value="現実世界:"/>
- </panel>
- <text name="me_homepage_text">
- Webサイト:
- </text>
- <text name="title_member_text" value="メンバー登録:"/>
- <text name="title_acc_status_text" value="アカウントの状態:"/>
- <text name="title_partner_text" value="パートナー:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="title_groups_text" value="グループ:"/>
- </panel>
- </scroll_container>
- <panel name="profile_buttons_panel">
- <button label="フレンド登録" name="add_friend"/>
- <button label="IM" name="im"/>
- <button label="コール" name="call"/>
- <button label="テレポート" name="teleport"/>
- </panel>
- <panel name="profile_me_buttons_panel">
- <button label="プロフィールの編集" name="edit_profile_btn"/>
- <button label="容姿の編集" name="edit_appearance_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="プロフィール" name="panel_profile">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="payment_update_link_url">
+ http://www.secondlife.com/account/billing.php?lang=ja
+ </string>
+ <string name="my_account_link_url" value="http://secondlife.com/account"/>
+ <string name="no_partner_text" value="なし"/>
+ <scroll_container name="profile_scroll">
+ <panel name="scroll_content_panel">
+ <panel name="second_life_image_panel">
+ <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
+ </panel>
+ <panel name="first_life_image_panel">
+ <text name="title_rw_descr_text" value="現実世界:"/>
+ </panel>
+ <text name="me_homepage_text">
+ Webサイト:
+ </text>
+ <text name="title_member_text" value="メンバー登録:"/>
+ <text name="title_acc_status_text" value="アカウントの状態:"/>
+ <text name="title_partner_text" value="パートナー:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="title_groups_text" value="グループ:"/>
+ </panel>
+ </scroll_container>
+ <panel name="profile_buttons_panel">
+ <button label="フレンド登録" name="add_friend"/>
+ <button label="IM" name="im"/>
+ <button label="コール" name="call"/>
+ <button label="テレポート" name="teleport"/>
+ </panel>
+ <panel name="profile_me_buttons_panel">
+ <button label="プロフィールの編集" name="edit_profile_btn"/>
+ <button label="容姿の編集" name="edit_appearance_btn"/>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile_view.xml b/indra/newview/skins/default/xui/ja/panel_profile_view.xml
index 7663851f61..4aa2d5d947 100644
--- a/indra/newview/skins/default/xui/ja/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/ja/panel_profile_view.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
- <string name="status_online">
- オンライン
- </string>
- <string name="status_offline">
- オフライン
- </string>
- <text name="user_name" value="(ローディング...)"/>
- <text name="status" value="オンライン"/>
- <tab_container name="tabs">
- <panel label="プロフィール" name="panel_profile"/>
- <panel label="ピック" name="panel_picks"/>
- </tab_container>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+ <string name="status_online">
+ オンライン
+ </string>
+ <string name="status_offline">
+ オフライン
+ </string>
+ <text name="user_name" value="(ローディング...)"/>
+ <text name="status" value="オンライン"/>
+ <tab_container name="tabs">
+ <panel label="プロフィール" name="panel_profile"/>
+ <panel label="ピック" name="panel_picks"/>
+ </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_script_ed.xml b/indra/newview/skins/default/xui/ja/panel_script_ed.xml
index 596d59b577..a7305fa763 100644
--- a/indra/newview/skins/default/xui/ja/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/ja/panel_script_ed.xml
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="script panel">
- <panel.string name="loading">
- ローディング...
- </panel.string>
- <panel.string name="can_not_view">
- このスクリプトは「コピー不可」のため、表示・編集することができません。 オブジェクト内のスクリプトの表示・編集には、全権限が必要です。
- </panel.string>
- <panel.string name="public_objects_can_not_run">
- 公共のオブジェクトではスクリプトを実行できません
- </panel.string>
- <panel.string name="script_running">
- 実行中
- </panel.string>
- <panel.string name="Title">
- スクリプト: [NAME]
- </panel.string>
- <text_editor name="Script Editor">
- ローディング...
- </text_editor>
- <button label="保存" label_selected="保存" name="Save_btn"/>
- <combo_box label="挿入..." name="Insert..."/>
- <menu_bar name="script_menu">
- <menu label="ファイル" name="File">
- <menu_item_call label="保存" name="Save"/>
- <menu_item_call label="変更を元に戻す" name="Revert All Changes"/>
- </menu>
- <menu label="編集" name="Edit">
- <menu_item_call label="元に戻す" name="Undo"/>
- <menu_item_call label="やり直し" name="Redo"/>
- <menu_item_call label="切り取り" name="Cut"/>
- <menu_item_call label="コピー" name="Copy"/>
- <menu_item_call label="貼り付け" name="Paste"/>
- <menu_item_call label="すべて選択" name="Select All"/>
- <menu_item_call label="選択解除" name="Deselect"/>
- <menu_item_call label="検索 / 再配置..." name="Search / Replace..."/>
- </menu>
- <menu label="ヘルプ" name="Help">
- <menu_item_call label="ヘルプ..." name="Help..."/>
- <menu_item_call label="キーワードヘルプ..." name="Keyword Help..."/>
- </menu>
- </menu_bar>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+ <panel.string name="loading">
+ ローディング...
+ </panel.string>
+ <panel.string name="can_not_view">
+ このスクリプトは「コピー不可」のため、表示・編集することができません。 オブジェクト内のスクリプトの表示・編集には、全権限が必要です。
+ </panel.string>
+ <panel.string name="public_objects_can_not_run">
+ 公共のオブジェクトではスクリプトを実行できません
+ </panel.string>
+ <panel.string name="script_running">
+ 実行中
+ </panel.string>
+ <panel.string name="Title">
+ スクリプト: [NAME]
+ </panel.string>
+ <text_editor name="Script Editor">
+ ローディング...
+ </text_editor>
+ <button label="保存" label_selected="保存" name="Save_btn"/>
+ <combo_box label="挿入..." name="Insert..."/>
+ <menu_bar name="script_menu">
+ <menu label="ファイル" name="File">
+ <menu_item_call label="保存" name="Save"/>
+ <menu_item_call label="変更を元に戻す" name="Revert All Changes"/>
+ </menu>
+ <menu label="編集" name="Edit">
+ <menu_item_call label="元に戻す" name="Undo"/>
+ <menu_item_call label="やり直し" name="Redo"/>
+ <menu_item_call label="切り取り" name="Cut"/>
+ <menu_item_call label="コピー" name="Copy"/>
+ <menu_item_call label="貼り付け" name="Paste"/>
+ <menu_item_call label="すべて選択" name="Select All"/>
+ <menu_item_call label="選択解除" name="Deselect"/>
+ <menu_item_call label="検索 / 再配置..." name="Search / Replace..."/>
+ </menu>
+ <menu label="ヘルプ" name="Help">
+ <menu_item_call label="ヘルプ..." name="Help..."/>
+ <menu_item_call label="キーワードヘルプ..." name="Keyword Help..."/>
+ </menu>
+ </menu_bar>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml
index aea057657e..2308aff19b 100644
--- a/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/ja/panel_stand_stop_flying.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
-<panel name="panel_stand_stop_flying">
- <button label="立ち上がる" name="stand_btn" tool_tip="ここをクリックして立ち上がります。"/>
- <button label="飛行停止" name="stop_fly_btn" tool_tip="飛行停止"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+ <button label="立ち上がる" name="stand_btn" tool_tip="ここをクリックして立ち上がります。"/>
+ <button label="飛行停止" name="stop_fly_btn" tool_tip="飛行停止"/>
+</panel>
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 05f29b7590..a58a6d68aa 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
- <panel.string name="StatBarDaysOfWeek">
- 日曜日:月曜日:火曜日:水曜日:木曜日:金曜日:土曜日
- </panel.string>
- <panel.string name="StatBarMonthsOfYear">
- 1月:2月:3月:4月:5月:6月:7月:8月:9月:10月:11月:12月
- </panel.string>
- <panel.string name="packet_loss_tooltip">
- パケット損失
- </panel.string>
- <panel.string name="bandwidth_tooltip">
- 帯域幅
- </panel.string>
- <panel.string name="buycurrencylabel">
- L$ [AMT]
- </panel.string>
- <button label="" label_selected="" name="buycurrency" tool_tip="私の残高: ここをクリックして L$ を購入"/>
- <text name="TimeText" tool_tip="現在時刻(太平洋時)">
- 12:00 AM
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+ <panel.string name="StatBarDaysOfWeek">
+ 日曜日:月曜日:火曜日:水曜日:木曜日:金曜日:土曜日
+ </panel.string>
+ <panel.string name="StatBarMonthsOfYear">
+ 1月:2月:3月:4月:5月:6月:7月:8月:9月:10月:11月:12月
+ </panel.string>
+ <panel.string name="packet_loss_tooltip">
+ パケット損失
+ </panel.string>
+ <panel.string name="bandwidth_tooltip">
+ 帯域幅
+ </panel.string>
+ <panel.string name="buycurrencylabel">
+ L$ [AMT]
+ </panel.string>
+ <button label="" label_selected="" name="buycurrency" tool_tip="私の残高: ここをクリックして L$ を購入"/>
+ <text name="TimeText" tool_tip="現在時刻(太平洋時)">
+ 12:00 AM
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_world_map.xml b/indra/newview/skins/default/xui/ja/panel_world_map.xml
index 6cf008c514..2f5c2bf6a1 100644
--- a/indra/newview/skins/default/xui/ja/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/panel_world_map.xml
@@ -1,57 +1,57 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="world_map">
- <panel.string name="Loading">
- ローディング...
- </panel.string>
- <panel.string name="InvalidLocation">
- 無効な位置
- </panel.string>
- <panel.string name="world_map_north">
- 北
- </panel.string>
- <panel.string name="world_map_east">
- 東
- </panel.string>
- <panel.string name="world_map_west">
- 西
- </panel.string>
- <panel.string name="world_map_south">
- 南
- </panel.string>
- <panel.string name="world_map_southeast">
- 南東
- </panel.string>
- <panel.string name="world_map_northeast">
- 北東
- </panel.string>
- <panel.string name="world_map_southwest">
- 南西
- </panel.string>
- <panel.string name="world_map_northwest">
- 北西
- </panel.string>
- <text label="北" name="floater_map_north" text="北">
- 北
- </text>
- <text label="東" name="floater_map_east" text="東">
- 東
- </text>
- <text label="西" name="floater_map_west" text="西">
- 西
- </text>
- <text label="南" name="floater_map_south" text="南">
- 南
- </text>
- <text label="南東" name="floater_map_southeast" text="南東">
- 南東
- </text>
- <text label="北東" name="floater_map_northeast" text="北東">
- 北東
- </text>
- <text label="南西" name="floater_map_southwest" text="南西">
- 南西
- </text>
- <text label="北西" name="floater_map_northwest" text="北西">
- 北西
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+ <panel.string name="Loading">
+ ローディング...
+ </panel.string>
+ <panel.string name="InvalidLocation">
+ 無効な位置
+ </panel.string>
+ <panel.string name="world_map_north">
+ 北
+ </panel.string>
+ <panel.string name="world_map_east">
+ 東
+ </panel.string>
+ <panel.string name="world_map_west">
+ 西
+ </panel.string>
+ <panel.string name="world_map_south">
+ 南
+ </panel.string>
+ <panel.string name="world_map_southeast">
+ 南東
+ </panel.string>
+ <panel.string name="world_map_northeast">
+ 北東
+ </panel.string>
+ <panel.string name="world_map_southwest">
+ 南西
+ </panel.string>
+ <panel.string name="world_map_northwest">
+ 北西
+ </panel.string>
+ <text label="北" name="floater_map_north" text="北">
+ 北
+ </text>
+ <text label="東" name="floater_map_east" text="東">
+ 東
+ </text>
+ <text label="西" name="floater_map_west" text="西">
+ 西
+ </text>
+ <text label="南" name="floater_map_south" text="南">
+ 南
+ </text>
+ <text label="南東" name="floater_map_southeast" text="南東">
+ 南東
+ </text>
+ <text label="北東" name="floater_map_northeast" text="北東">
+ 北東
+ </text>
+ <text label="南西" name="floater_map_southwest" text="南西">
+ 南西
+ </text>
+ <text label="北西" name="floater_map_northwest" text="北西">
+ 北西
+ </text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index ad630ab5dc..d6d41aecc0 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -1,3149 +1,3149 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
-<strings>
- <string name="SECOND_LIFE">
- Second Life
- </string>
- <string name="APP_NAME">
- Second Life
- </string>
- <string name="SECOND_LIFE_GRID">
- Second Life Grid
- </string>
- <string name="SUPPORT_SITE">
- Second Lifeサポートポータル
- </string>
- <string name="StartupDetectingHardware">
- ハードウェアの検出中です...
- </string>
- <string name="StartupLoading">
- ローディング
- </string>
- <string name="Fullbright">
- 明るさ全開(レガシー)
- </string>
- <string name="LoginInProgress">
- ログイン中です。[APP_NAME]の表示がフリーズする場合があります。 しばらくお待ちください。
- </string>
- <string name="LoginInProgressNoFrozen">
- ログイン中です...
- </string>
- <string name="LoginAuthenticating">
- 認証しています...
- </string>
- <string name="LoginMaintenance">
- アカウント・メンテナンスを実行しています...
- </string>
- <string name="LoginAttempt">
- 前回のログインに失敗しました。 ログイン中です([NUMBER]回目)
- </string>
- <string name="LoginPrecaching">
- ワールドをロードしています...
- </string>
- <string name="LoginInitializingBrowser">
- 埋め込みWebブラウザを初期化しています...
- </string>
- <string name="LoginInitializingMultimedia">
- マルチメディアを初期化しています...
- </string>
- <string name="LoginVerifyingCache">
- キャッシュ・ファイルを検証しています(所要時間は60~90秒)...
- </string>
- <string name="LoginProcessingResponse">
- 応答を処理しています...
- </string>
- <string name="LoginInitializingWorld">
- ワールドを初期化しています...
- </string>
- <string name="LoginDecodingImages">
- 画像をデコードしています...
- </string>
- <string name="LoginInitializingQuicktime">
- QuickTimeを初期化しています...
- </string>
- <string name="LoginQuicktimeNotFound">
- QuickTimeが見つかりません。初期化に失敗しました。
- </string>
- <string name="LoginQuicktimeOK">
- QuickTimeが正常に初期化されました。
- </string>
- <string name="LoginWaitingForRegionHandshake">
- 地域のハンドシェイクを待っています...
- </string>
- <string name="LoginConnectingToRegion">
- 地域に接続しています...
- </string>
- <string name="LoginDownloadingClothing">
- 服をダウンロードしています...
- </string>
- <string name="AgentLostConnection">
- この地域には、問題が発生している可能性があります。 インターネット接続を確認してください。
- </string>
- <string name="TooltipPerson">
- 人
- </string>
- <string name="TooltipNoName">
- (名前なし)
- </string>
- <string name="TooltipOwner">
- オーナー:
- </string>
- <string name="TooltipPublic">
- 公共
- </string>
- <string name="TooltipIsGroup">
- (グループ)
- </string>
- <string name="TooltipForSaleL$">
- 売り出し中:L$[AMOUNT]
- </string>
- <string name="TooltipFlagGroupBuild">
- グループ作成
- </string>
- <string name="TooltipFlagNoBuild">
- 作成禁止
- </string>
- <string name="TooltipFlagNoEdit">
- グループ作成
- </string>
- <string name="TooltipFlagNotSafe">
- 危険
- </string>
- <string name="TooltipFlagNoFly">
- 飛行禁止
- </string>
- <string name="TooltipFlagGroupScripts">
- グループ・スクリプト
- </string>
- <string name="TooltipFlagNoScripts">
- スクリプトなし
- </string>
- <string name="TooltipLand">
- 土地:
- </string>
- <string name="TooltipMustSingleDrop">
- 1つのアイテムのみをここにドラッグできます
- </string>
- <string name="TooltipHttpUrl">
- クリックしてこのWebページを見る
- </string>
- <string name="TooltipSLURL">
- クリックしてこの場所の情報を見る
- </string>
- <string name="TooltipAgentUrl">
- クリックしてこの住人のプロフィールを見る
- </string>
- <string name="TooltipGroupUrl">
- クリックしてこのグループの説明文を見る
- </string>
- <string name="TooltipEventUrl">
- クリックしてこのグループの説明文を見る
- </string>
- <string name="TooltipClassifiedUrl">
- クリックしてこのクラシファイド広告を見る
- </string>
- <string name="TooltipParcelUrl">
- クリックしてこの区画の説明文を見る
- </string>
- <string name="TooltipTeleportUrl">
- クリックしてこの場所にテレポートする
- </string>
- <string name="TooltipObjectIMUrl">
- クリックしてこのオブジェクトの説明文を見る
- </string>
- <string name="TooltipSLAPP">
- クリックして secondlife:// コマンドを出す
- </string>
- <string name="BUTTON_CLOSE_DARWIN">
- 閉じる (⌘-W)
- </string>
- <string name="BUTTON_CLOSE_WIN">
- 閉じる (Ctrl+W)
- </string>
- <string name="BUTTON_RESTORE">
- 復元
- </string>
- <string name="BUTTON_MINIMIZE">
- 元に戻す(縮小)
- </string>
- <string name="BUTTON_TEAR_OFF">
- 別ウィンドウで開く
- </string>
- <string name="BUTTON_DOCK">
- ドッキング
- </string>
- <string name="BUTTON_UNDOCK">
- 切り離す
- </string>
- <string name="BUTTON_HELP">
- ヘルプを表示
- </string>
- <string name="RetrievingData">
- 検索中...
- </string>
- <string name="ReleaseNotes">
- リリースノート
- </string>
- <string name="LoadingData">
- ロード中...
- </string>
- <string name="AvatarNameNobody">
- (無人)
- </string>
- <string name="AvatarNameWaiting">
- (待機中)
- </string>
- <string name="AvatarNameHippos">
- (カバ)
- </string>
- <string name="GroupNameNone">
- (なし)
- </string>
- <string name="AssetErrorNone">
- エラーなし
- </string>
- <string name="AssetErrorRequestFailed">
- 資産の要求: 失敗
- </string>
- <string name="AssetErrorNonexistentFile">
- 資産の要求: 存在しないファイル
- </string>
- <string name="AssetErrorNotInDatabase">
- 資産の要求: データベースでは見つからない資産
- </string>
- <string name="AssetErrorEOF">
- ファイルの終わり
- </string>
- <string name="AssetErrorCannotOpenFile">
- ファイルを開くことができません
- </string>
- <string name="AssetErrorFileNotFound">
- ファイルが見つかりません
- </string>
- <string name="AssetErrorTCPTimeout">
- ファイル転送タイムアウトです
- </string>
- <string name="AssetErrorCircuitGone">
- 接続が解除されました
- </string>
- <string name="AssetErrorPriceMismatch">
- ビューワとサーバーの価格が一致していません
- </string>
- <string name="AssetErrorUnknownStatus">
- ステータスが不明です
- </string>
- <string name="texture">
- テクスチャ
- </string>
- <string name="sound">
- サウンド
- </string>
- <string name="calling card">
- コーリングカード
- </string>
- <string name="landmark">
- ランドマーク
- </string>
- <string name="legacy script">
- レガシースクリプト
- </string>
- <string name="clothing">
- 衣類
- </string>
- <string name="object">
- オブジェクト
- </string>
- <string name="note card">
- ノートカード
- </string>
- <string name="folder">
- フォルダ
- </string>
- <string name="root">
- ルート
- </string>
- <string name="lsl2 script">
- lsl2 スクリプト
- </string>
- <string name="lsl bytecode">
- LSL バイトコード
- </string>
- <string name="tga texture">
- tga テクスチャ
- </string>
- <string name="body part">
- 身体部位
- </string>
- <string name="snapshot">
- スナップショット
- </string>
- <string name="lost and found">
- 紛失物
- </string>
- <string name="targa image">
- targa 画像
- </string>
- <string name="trash">
- ゴミ箱
- </string>
- <string name="jpeg image">
- jpeg 画像
- </string>
- <string name="animation">
- アニメーション
- </string>
- <string name="gesture">
- ジェスチャー
- </string>
- <string name="simstate">
- 統計
- </string>
- <string name="favorite">
- お気に入り
- </string>
- <string name="symbolic link">
- リンク
- </string>
- <string name="AvatarAway">
- 退席中
- </string>
- <string name="AvatarBusy">
- 取り込み中
- </string>
- <string name="AvatarMuted">
- ミュート
- </string>
- <string name="anim_express_afraid">
- 怖れ
- </string>
- <string name="anim_express_anger">
- 怒り
- </string>
- <string name="anim_away">
- 退席中
- </string>
- <string name="anim_backflip">
- 後ろ宙返り
- </string>
- <string name="anim_express_laugh">
- 大笑い
- </string>
- <string name="anim_express_toothsmile">
- 満面の笑顔
- </string>
- <string name="anim_blowkiss">
- 投げキッス
- </string>
- <string name="anim_express_bored">
- 退屈
- </string>
- <string name="anim_bow">
- おじぎ
- </string>
- <string name="anim_clap">
- 拍手
- </string>
- <string name="anim_courtbow">
- 深いおじぎ
- </string>
- <string name="anim_express_cry">
- 泣く
- </string>
- <string name="anim_dance1">
- ダンス1
- </string>
- <string name="anim_dance2">
- ダンス2
- </string>
- <string name="anim_dance3">
- ダンス3
- </string>
- <string name="anim_dance4">
- ダンス4
- </string>
- <string name="anim_dance5">
- ダンス5
- </string>
- <string name="anim_dance6">
- ダンス6
- </string>
- <string name="anim_dance7">
- ダンス7
- </string>
- <string name="anim_dance8">
- ダンス8
- </string>
- <string name="anim_express_disdain">
- 侮蔑
- </string>
- <string name="anim_drink">
- 酔っぱらう
- </string>
- <string name="anim_express_embarrased">
- 困惑
- </string>
- <string name="anim_angry_fingerwag">
- 指を振る
- </string>
- <string name="anim_fist_pump">
- ガッツポーズ
- </string>
- <string name="anim_yoga_float">
- ヨガ浮遊
- </string>
- <string name="anim_express_frown">
- しかめっ面
- </string>
- <string name="anim_impatient">
- いらいらする
- </string>
- <string name="anim_jumpforjoy">
- 飛び上がって喜ぶ
- </string>
- <string name="anim_kissmybutt">
- 挑発ポーズ
- </string>
- <string name="anim_express_kiss">
- キス
- </string>
- <string name="anim_laugh_short">
- 笑う
- </string>
- <string name="anim_musclebeach">
- 力こぶを見せる
- </string>
- <string name="anim_no_unhappy">
- 不満げに否定する
- </string>
- <string name="anim_no_head">
- 否定する
- </string>
- <string name="anim_nyanya">
- 冷やかす
- </string>
- <string name="anim_punch_onetwo">
- ワンツー・パンチ
- </string>
- <string name="anim_express_open_mouth">
- 口を開けて驚く
- </string>
- <string name="anim_peace">
- ピース・サイン
- </string>
- <string name="anim_point_you">
- 他人を指差す
- </string>
- <string name="anim_point_me">
- 自分を指差す
- </string>
- <string name="anim_punch_l">
- 左パンチ
- </string>
- <string name="anim_punch_r">
- 右パンチ
- </string>
- <string name="anim_rps_countdown">
- じゃんけんポーズ
- </string>
- <string name="anim_rps_paper">
- パー
- </string>
- <string name="anim_rps_rock">
- グー
- </string>
- <string name="anim_rps_scissors">
- チョキ
- </string>
- <string name="anim_express_repulsed">
- 嫌悪感
- </string>
- <string name="anim_kick_roundhouse_r">
- まわし蹴り
- </string>
- <string name="anim_express_sad">
- 悲しむ
- </string>
- <string name="anim_salute">
- 敬礼する
- </string>
- <string name="anim_shout">
- 叫ぶ
- </string>
- <string name="anim_express_shrug">
- 肩をすくめる
- </string>
- <string name="anim_express_smile">
- 微笑む
- </string>
- <string name="anim_smoke_idle">
- たばこをくゆらす
- </string>
- <string name="anim_smoke_inhale">
- たばこを吸う
- </string>
- <string name="anim_smoke_throw_down">
- たばこを捨てる
- </string>
- <string name="anim_express_surprise">
- 驚く
- </string>
- <string name="anim_sword_strike_r">
- 剣で斬りつける
- </string>
- <string name="anim_angry_tantrum">
- じだんだを踏む
- </string>
- <string name="anim_express_tongue_out">
- 舌を出す
- </string>
- <string name="anim_hello">
- 手を振る
- </string>
- <string name="anim_whisper">
- 小声で話す
- </string>
- <string name="anim_whistle">
- 口笛を吹く
- </string>
- <string name="anim_express_wink">
- ウィンク
- </string>
- <string name="anim_wink_hollywood">
- ウィンク(ハリウッド)
- </string>
- <string name="anim_express_worry">
- 心配する
- </string>
- <string name="anim_yes_happy">
- 笑顔で頷く
- </string>
- <string name="anim_yes_head">
- 頷く
- </string>
- <string name="texture_loading">
- ロード中...
- </string>
- <string name="worldmap_offline">
- オフライン
- </string>
- <string name="Ok">
- OK
- </string>
- <string name="Premature end of file">
- 不完全なファイル
- </string>
- <string name="ST_NO_JOINT">
- ROOT または JOINT が見つかりません
- </string>
- <string name="whisper">
- のささやき:
- </string>
- <string name="shout">
- の叫び:
- </string>
- <string name="ringing">
- インワールドボイスチャットに接続中...
- </string>
- <string name="connected">
- 接続しました
- </string>
- <string name="unavailable">
- あなたの現在のロケーションでは、ボイスを利用できません。
- </string>
- <string name="hang_up">
- インワールドボイスチャットの通話が切断されました
- </string>
- <string name="ScriptQuestionCautionChatGranted">
- [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を許可しました: [PERMISSIONS]
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を拒否しました: [PERMISSIONS]
- </string>
- <string name="ScriptTakeMoney">
- リンデンドル(L$)を支払う
- </string>
- <string name="ActOnControlInputs">
- 制御入力に基づいて行動
- </string>
- <string name="RemapControlInputs">
- 制御入力のリマップ
- </string>
- <string name="AnimateYourAvatar">
- アバターへのアニメーション動作
- </string>
- <string name="AttachToYourAvatar">
- アバターに装着
- </string>
- <string name="ReleaseOwnership">
- 所有権を解放し公のものとする
- </string>
- <string name="LinkAndDelink">
- 他のオブジェクトのリンクとリンク解除
- </string>
- <string name="AddAndRemoveJoints">
- 他のオブジェクトとのジョイントの追加と削除
- </string>
- <string name="ChangePermissions">
- 権限の変更
- </string>
- <string name="TrackYourCamera">
- カメラ追従
- </string>
- <string name="ControlYourCamera">
- カメラのコントロール
- </string>
- <string name="SIM_ACCESS_PG">
- PG
- </string>
- <string name="SIM_ACCESS_MATURE">
- Mature
- </string>
- <string name="SIM_ACCESS_ADULT">
- Adult
- </string>
- <string name="SIM_ACCESS_DOWN">
- オフライン
- </string>
- <string name="SIM_ACCESS_MIN">
- 不明
- </string>
- <string name="land_type_unknown">
- (不明)
- </string>
- <string name="all_files">
- 全てのファイル
- </string>
- <string name="sound_files">
- サウンド
- </string>
- <string name="animation_files">
- アニメーション
- </string>
- <string name="image_files">
- 画像
- </string>
- <string name="save_file_verb">
- 保存
- </string>
- <string name="load_file_verb">
- ロード
- </string>
- <string name="targa_image_files">
- Targa画像
- </string>
- <string name="bitmap_image_files">
- ビットマップ画像
- </string>
- <string name="avi_movie_file">
- AVIムービーファイル
- </string>
- <string name="xaf_animation_file">
- XAFアニメーションファイル
- </string>
- <string name="xml_file">
- XMLファイル
- </string>
- <string name="dot_raw_file">
- RAWファイル
- </string>
- <string name="compressed_image_files">
- 圧縮画像
- </string>
- <string name="load_files">
- ファイルのロード
- </string>
- <string name="choose_the_directory">
- 参照
- </string>
- <string name="AvatarSetNotAway">
- 一時退席中を解除
- </string>
- <string name="AvatarSetAway">
- 一時退席中
- </string>
- <string name="AvatarSetNotBusy">
- 取り込み中を解除
- </string>
- <string name="AvatarSetBusy">
- 取り込み中
- </string>
- <string name="shape">
- シェイプ
- </string>
- <string name="skin">
- スキン
- </string>
- <string name="hair">
- 髪型
- </string>
- <string name="eyes">
- 目
- </string>
- <string name="shirt">
- シャツ
- </string>
- <string name="pants">
- ズボン
- </string>
- <string name="shoes">
- 靴
- </string>
- <string name="socks">
- 靴下
- </string>
- <string name="jacket">
- 上着
- </string>
- <string name="gloves">
- 手袋
- </string>
- <string name="undershirt">
- 下着シャツ
- </string>
- <string name="underpants">
- 下着パンツ
- </string>
- <string name="skirt">
- スカート
- </string>
- <string name="invalid">
- 無効
- </string>
- <string name="BodyPartsRightArm">
- 右腕
- </string>
- <string name="BodyPartsHead">
- 頭
- </string>
- <string name="BodyPartsLeftArm">
- 左腕
- </string>
- <string name="BodyPartsLeftLeg">
- 左脚
- </string>
- <string name="BodyPartsTorso">
- 頭
- </string>
- <string name="BodyPartsRightLeg">
- 右脚
- </string>
- <string name="GraphicsQualityLow">
- 低
- </string>
- <string name="GraphicsQualityMid">
- 中
- </string>
- <string name="GraphicsQualityHigh">
- 高
- </string>
- <string name="LeaveMouselook">
- ESC キーを押してワールドビューに戻る
- </string>
- <string name="InventoryNoMatchingItems">
- 一致するアイテムが持ち物にありませんでした
- </string>
- <string name="InventoryNoTexture">
- 持ち物内にこのテクスチャのコピーがありません
- </string>
- <string name="LoadingContents">
- コンテンツをロード中です...
- </string>
- <string name="NoContents">
- コンテンツなし
- </string>
- <string name="InvFolder My Inventory">
- 私の持ち物
- </string>
- <string name="InvFolder My Favorites">
- お気に入り
- </string>
- <string name="InvFolder Library">
- ライブラリ
- </string>
- <string name="InvFolder Textures">
- テクスチャ
- </string>
- <string name="InvFolder Sounds">
- サウンド
- </string>
- <string name="InvFolder Calling Cards">
- コーリングカード
- </string>
- <string name="InvFolder Landmarks">
- ランドマーク
- </string>
- <string name="InvFolder Scripts">
- スクリプト
- </string>
- <string name="InvFolder Clothing">
- 衣類
- </string>
- <string name="InvFolder Objects">
- オブジェクト
- </string>
- <string name="InvFolder Notecards">
- ノートカード
- </string>
- <string name="InvFolder New Folder">
- 新規フォルダ
- </string>
- <string name="InvFolder Inventory">
- 持ち物
- </string>
- <string name="InvFolder Uncompressed Images">
- 圧縮されていない画像
- </string>
- <string name="InvFolder Body Parts">
- 身体部位
- </string>
- <string name="InvFolder Trash">
- ゴミ箱
- </string>
- <string name="InvFolder Photo Album">
- フォトアルバム
- </string>
- <string name="InvFolder Lost And Found">
- 紛失物
- </string>
- <string name="InvFolder Uncompressed Sounds">
- 圧縮されていないサウンド
- </string>
- <string name="InvFolder Animations">
- アニメーション
- </string>
- <string name="InvFolder Gestures">
- ジェスチャー
- </string>
- <string name="InvFolder favorite">
- お気に入り
- </string>
- <string name="InvFolder Current Outfit">
- 着用中のアウトフィット
- </string>
- <string name="InvFolder My Outfits">
- 私のアウトフィット
- </string>
- <string name="InvFolder Friends">
- フレンド
- </string>
- <string name="InvFolder All">
- 全員
- </string>
- <string name="Buy">
- 買う
- </string>
- <string name="BuyforL$">
- Buy for L$
- </string>
- <string name="Stone">
- 石
- </string>
- <string name="Metal">
- 金属
- </string>
- <string name="Glass">
- ガラス
- </string>
- <string name="Wood">
- 木
- </string>
- <string name="Flesh">
- 肌
- </string>
- <string name="Plastic">
- プラスチック
- </string>
- <string name="Rubber">
- ゴム
- </string>
- <string name="Light">
- ライト
- </string>
- <string name="KBShift">
- Shift
- </string>
- <string name="KBCtrl">
- Ctrl
- </string>
- <string name="Chest">
- 胸部
- </string>
- <string name="Skull">
- 頭蓋
- </string>
- <string name="Left Shoulder">
- 左肩
- </string>
- <string name="Right Shoulder">
- 右肩
- </string>
- <string name="Left Hand">
- 左手
- </string>
- <string name="Right Hand">
- 右手
- </string>
- <string name="Left Foot">
- 左足
- </string>
- <string name="Right Foot">
- 右足
- </string>
- <string name="Spine">
- 背骨
- </string>
- <string name="Pelvis">
- 骨盤
- </string>
- <string name="Mouth">
- 口
- </string>
- <string name="Chin">
- あご
- </string>
- <string name="Left Ear">
- 左耳
- </string>
- <string name="Right Ear">
- 右耳
- </string>
- <string name="Left Eyeball">
- 左目眼球
- </string>
- <string name="Right Eyeball">
- 右目眼球
- </string>
- <string name="Nose">
- 鼻
- </string>
- <string name="R Upper Arm">
- 右上腕
- </string>
- <string name="R Forearm">
- 右前腕
- </string>
- <string name="L Upper Arm">
- 左上腕
- </string>
- <string name="L Forearm">
- 左前腕
- </string>
- <string name="Right Hip">
- 右腰
- </string>
- <string name="R Upper Leg">
- 右上脚
- </string>
- <string name="R Lower Leg">
- 右下脚
- </string>
- <string name="Left Hip">
- 左腰
- </string>
- <string name="L Upper Leg">
- 左上脚
- </string>
- <string name="L Lower Leg">
- 左下脚
- </string>
- <string name="Stomach">
- 腹
- </string>
- <string name="Left Pec">
- 左胸筋
- </string>
- <string name="Right Pec">
- 右胸筋
- </string>
- <string name="YearsMonthsOld">
- [AGEYEARS] [AGEMONTHS]
- </string>
- <string name="YearsOld">
- [AGEYEARS]
- </string>
- <string name="MonthsOld">
- [AGEMONTHS]
- </string>
- <string name="WeeksOld">
- [AGEWEEKS]
- </string>
- <string name="DaysOld">
- [AGEDAYS]
- </string>
- <string name="TodayOld">
- 今日参加
- </string>
- <string name="AgeYearsA">
- [COUNT] 年
- </string>
- <string name="AgeYearsB">
- [COUNT] 年
- </string>
- <string name="AgeYearsC">
- [COUNT] 年
- </string>
- <string name="AgeMonthsA">
- [COUNT] ヶ月
- </string>
- <string name="AgeMonthsB">
- [COUNT] ヶ月
- </string>
- <string name="AgeMonthsC">
- [COUNT] ヶ月
- </string>
- <string name="AgeWeeksA">
- [COUNT] 週間
- </string>
- <string name="AgeWeeksB">
- [COUNT] 週間
- </string>
- <string name="AgeWeeksC">
- [COUNT] 週間
- </string>
- <string name="AgeDaysA">
- [COUNT] 日間
- </string>
- <string name="AgeDaysB">
- [COUNT] 日間
- </string>
- <string name="AgeDaysC">
- [COUNT] 日間
- </string>
- <string name="AcctTypeResident">
- 住人
- </string>
- <string name="AcctTypeTrial">
- トライアル
- </string>
- <string name="AcctTypeCharterMember">
- 特権メンバー
- </string>
- <string name="AcctTypeEmployee">
- Linden Lab従業員
- </string>
- <string name="PaymentInfoUsed">
- 支払い情報登録済
- </string>
- <string name="PaymentInfoOnFile">
- 支払い情報登録済み
- </string>
- <string name="NoPaymentInfoOnFile">
- 支払い情報未登録
- </string>
- <string name="AgeVerified">
- 年齢確認済み
- </string>
- <string name="NotAgeVerified">
- 年齢未確認
- </string>
- <string name="Center 2">
- 中心 2
- </string>
- <string name="Top Right">
- 右上
- </string>
- <string name="Top">
- 上部
- </string>
- <string name="Top Left">
- 左上
- </string>
- <string name="Center">
- 中心
- </string>
- <string name="Bottom Left">
- Bottom Left
- </string>
- <string name="Bottom">
- Bottom
- </string>
- <string name="Bottom Right">
- Bottom Right
- </string>
- <string name="CompileQueueDownloadedCompiling">
- ダウンロード完了、コンパイル中
- </string>
- <string name="CompileQueueScriptNotFound">
- サーバー上にスクリプトが見つかりません。
- </string>
- <string name="CompileQueueProblemDownloading">
- ダウンロードに問題があります
- </string>
- <string name="CompileQueueInsufficientPermDownload">
- 権限不足のためスクリプトをダウンロードできません。
- </string>
- <string name="CompileQueueInsufficientPermFor">
- 権限不足:
- </string>
- <string name="CompileQueueUnknownFailure">
- 原因不明の失敗によりダウンロードができません
- </string>
- <string name="CompileQueueTitle">
- リコンパイル進行
- </string>
- <string name="CompileQueueStart">
- リコンパイル
- </string>
- <string name="ResetQueueTitle">
- 進行をリセット
- </string>
- <string name="ResetQueueStart">
- リセット
- </string>
- <string name="RunQueueTitle">
- 実行を続けるよう設定
- </string>
- <string name="RunQueueStart">
- 実行中に設定
- </string>
- <string name="NotRunQueueTitle">
- 実行を停止するよう設定
- </string>
- <string name="NotRunQueueStart">
- 実行停止に設定
- </string>
- <string name="CompileSuccessful">
- コンパイルが完了しました!
- </string>
- <string name="CompileSuccessfulSaving">
- コンパイル完了、保存中です...
- </string>
- <string name="SaveComplete">
- 保存完了。
- </string>
- <string name="ObjectOutOfRange">
- スクリプト(オブジェクトが範囲外にあります)
- </string>
- <string name="GodToolsObjectOwnedBy">
- [OWNER] 所有のオブジェクト「[OBJECT]」
- </string>
- <string name="GroupsNone">
- なし
- </string>
- <string name="Unknown">
- (不明)
- </string>
- <string name="Balance">
- 残高
- </string>
- <string name="Credits">
- 収入
- </string>
- <string name="Debits">
- 支出
- </string>
- <string name="Total">
- 合計
- </string>
- <string name="NoGroupDataFound">
- グループのデータが見つかりませんでした
- </string>
- <string name="IMParentEstate">
- parent estate
- </string>
- <string name="IMMainland">
- メインランド
- </string>
- <string name="IMTeen">
- ティーン
- </string>
- <string name="RegionInfoError">
- エラー
- </string>
- <string name="RegionInfoAllEstatesOwnedBy">
- [OWNER] が所有するすべての不動産
- </string>
- <string name="RegionInfoAllEstatesYouOwn">
- あなたが所有するすべての不動産
- </string>
- <string name="RegionInfoAllEstatesYouManage">
- あなたが [OWNER] のために管理するすべての不動産
- </string>
- <string name="RegionInfoAllowedResidents">
- 許可された住人: ([ALLOWEDAGENTS] 人、最大 [MAXACCESS] 人)
- </string>
- <string name="RegionInfoAllowedGroups">
- 許可されたグループ: ([ALLOWEDGROUPS]、最大 [MAXACCESS] グループ)
- </string>
- <string name="CursorPos">
- [LINE] 行目、[COLUMN] 列目
- </string>
- <string name="PanelDirCountFound">
- [COUNT] 件見つかりました
- </string>
- <string name="PanelContentsNewScript">
- 新規スクリプト
- </string>
- <string name="MuteByName">
- (名称別)
- </string>
- <string name="MuteAgent">
- (住人)
- </string>
- <string name="MuteObject">
- (オブジェクト)
- </string>
- <string name="MuteGroup">
- (グループ)
- </string>
- <string name="RegionNoCovenant">
- この不動産には約款がありません。
- </string>
- <string name="RegionNoCovenantOtherOwner">
- この不動産には約款がありません。 この不動産上の土地は不動産所有者により販売され、Linden Lab では販売していません。 販売に関するお問い合わせは、不動産所有者までお願い致します。
- </string>
- <string name="covenant_last_modified">
- 最終修正日:
- </string>
- <string name="GroupOwned">
- グループ所有
- </string>
- <string name="Public">
- パブリック
- </string>
- <string name="ClassifiedClicksTxt">
- クリック数: [TELEPORT] テレポート、 [MAP] 地図、 [PROFILE] プロフィール
- </string>
- <string name="ClassifiedUpdateAfterPublish">
- (掲載後更新)
- </string>
- <string name="GroupVoteYes">
- はい
- </string>
- <string name="GroupVoteNo">
- いいえ
- </string>
- <string name="GroupVoteNoActiveProposals">
- 継続中の提案は現在ありません
- </string>
- <string name="GroupVoteNoArchivedProposals">
- 提案のアーカイブは現在ありません
- </string>
- <string name="GroupVoteRetrievingArchivedProposals">
- 提案のアーカイブを取得中です
- </string>
- <string name="GroupVoteRetrievingActiveProposals">
- 継続中の提案を取得中です
- </string>
- <string name="MultiPreviewTitle">
- プレビュー
- </string>
- <string name="MultiPropertiesTitle">
- Properties
- </string>
- <string name="InvOfferAnObjectNamed">
- オブジェクト名
- </string>
- <string name="InvOfferOwnedByGroup">
- 所有グループ
- </string>
- <string name="InvOfferOwnedByUnknownGroup">
- 不明なグループ所有
- </string>
- <string name="InvOfferOwnedBy">
- 所有者
- </string>
- <string name="InvOfferOwnedByUnknownUser">
- 不明なユーザー所有
- </string>
- <string name="InvOfferGaveYou">
- gave you
- </string>
- <string name="InvOfferYouDecline">
- You decline
- </string>
- <string name="InvOfferFrom">
- from
- </string>
- <string name="GroupMoneyTotal">
- 合計
- </string>
- <string name="GroupMoneyBought">
- bought
- </string>
- <string name="GroupMoneyPaidYou">
- paid you
- </string>
- <string name="GroupMoneyPaidInto">
- paid into
- </string>
- <string name="GroupMoneyBoughtPassTo">
- bought pass to
- </string>
- <string name="GroupMoneyPaidFeeForEvent">
- paid fee for event
- </string>
- <string name="GroupMoneyPaidPrizeForEvent">
- paid prize for event
- </string>
- <string name="GroupMoneyBalance">
- 残高
- </string>
- <string name="GroupMoneyCredits">
- 収入
- </string>
- <string name="GroupMoneyDebits">
- 支出
- </string>
- <string name="ViewerObjectContents">
- 中身
- </string>
- <string name="AcquiredItems">
- 取得アイテム
- </string>
- <string name="Cancel">
- キャンセル
- </string>
- <string name="UploadingCosts">
- %s のアップロード代金:
- </string>
- <string name="UnknownFileExtension">
- 不明の拡張子: %s
-使用可能な拡張子: .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
- </string>
- <string name="AddLandmarkNavBarMenu">
- ランドマークを追加...
- </string>
- <string name="EditLandmarkNavBarMenu">
- ランドマークを編集...
- </string>
- <string name="accel-mac-control">
- ⌃
- </string>
- <string name="accel-mac-command">
- ⌘
- </string>
- <string name="accel-mac-option">
- ⌥
- </string>
- <string name="accel-mac-shift">
- ⇧
- </string>
- <string name="accel-win-control">
- Ctrl+
- </string>
- <string name="accel-win-alt">
- Alt+
- </string>
- <string name="accel-win-shift">
- Shift+
- </string>
- <string name="FileSaved">
- ファイルが保存されました
- </string>
- <string name="Receiving">
- 取得中
- </string>
- <string name="AM">
- AM
- </string>
- <string name="PM">
- PM
- </string>
- <string name="PST">
- 米国西部標準時
- </string>
- <string name="PDT">
- 米国西部夏時間
- </string>
- <string name="Forward">
- 前
- </string>
- <string name="Left">
- 左
- </string>
- <string name="Right">
- 右
- </string>
- <string name="Back">
- 後ろ
- </string>
- <string name="North">
- 北
- </string>
- <string name="South">
- 南
- </string>
- <string name="West">
- 西
- </string>
- <string name="East">
- 東
- </string>
- <string name="Up">
- 上
- </string>
- <string name="Down">
- 下
- </string>
- <string name="Any Category">
- 全カテゴリ
- </string>
- <string name="Shopping">
- ショッピング
- </string>
- <string name="Land Rental">
- 土地のレンタル
- </string>
- <string name="Property Rental">
- 建物のレンタル
- </string>
- <string name="Special Attraction">
- 特別アトラクション
- </string>
- <string name="New Products">
- 新製品
- </string>
- <string name="Employment">
- 雇用
- </string>
- <string name="Wanted">
- 求む
- </string>
- <string name="Service">
- サービス
- </string>
- <string name="Personal">
- パーソナル
- </string>
- <string name="None">
- なし
- </string>
- <string name="Linden Location">
- Linden所在地
- </string>
- <string name="Adult">
- Adult
- </string>
- <string name="Arts&amp;Culture">
- アートとカルチャー
- </string>
- <string name="Business">
- ビジネス
- </string>
- <string name="Educational">
- 教育的
- </string>
- <string name="Gaming">
- ゲーム
- </string>
- <string name="Hangout">
- たまり場
- </string>
- <string name="Newcomer Friendly">
- 新住人に好意的
- </string>
- <string name="Parks&amp;Nature">
- 公園と自然
- </string>
- <string name="Residential">
- 住宅用
- </string>
- <string name="Stage">
- ステージ
- </string>
- <string name="Other">
- その他
- </string>
- <string name="Any">
- 全員
- </string>
- <string name="You">
- あなた
- </string>
- <string name=":">
- :
- </string>
- <string name=",">
- ,
- </string>
- <string name="...">
- ...
- </string>
- <string name="***">
- ***
- </string>
- <string name="(">
- (
- </string>
- <string name=")">
- )
- </string>
- <string name=".">
- .
- </string>
- <string name="&apos;">
- &apos;
- </string>
- <string name="---">
- ---
- </string>
- <string name="MBCmdLineError">
- コマンドラインにエラーが見つかりました。
-リンク先を参照してください: http://wiki.secondlife.com/wiki/Client_parameters
-エラー:
- </string>
- <string name="MBCmdLineUsg">
- [APP_NAME] コマンドライン使用:
- </string>
- <string name="MBUnableToAccessFile">
- [APP_NAME] は必要なファイルにアクセスできません。
-
-複数のコピーを実行中か、ファイルが既に開いているとあなたのシステムが誤認識している可能性があります。
-このメッセージが何度も出る場合は、コンピューターを再起動してもう一度お試しください。
-それでも問題が続く場合、[APP_NAME] を完全にアンインストールして、再インストールをしてください。
- </string>
- <string name="MBFatalError">
- 致命的なエラー
- </string>
- <string name="MBRequiresAltiVec">
- [APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降)
- </string>
- <string name="MBAlreadyRunning">
- [APP_NAME] はすでに実行中です。
-最小化されたプログラムのコピーをタスクバーで確認してください。
-このメッセージが何度も出る場合はコンピューターを再起動してください。
- </string>
- <string name="MBFrozenCrashed">
- [APP_NAME] は前回の実行時にフリーズしています。
-クラッシュ報告を送信しますか?
- </string>
- <string name="MBAlert">
- 警告
- </string>
- <string name="MBNoDirectX">
- [APP_NAME] は DirectX 9.0b 及びそれ以降のバージョンを検出することができませんでした。
-[APP_NAME] は DirectX を使用して安定性の問題、低パフォーマンス、クラッシュ等悪影響を与えるハードウェアや古いドライバを検出します。 DirectX 9.0b がなくても [APP_NAME] を実行できますが、DirectX 9.0bとのご使用を強く推奨します。
-
-続けますか?
- </string>
- <string name="MBWarning">
- 警告
- </string>
- <string name="MBNoAutoUpdate">
- 自動更新は現在 Linux には対応していません。
-www.secondlife.com から最新バージョンをダウンロードしてください。
- </string>
- <string name="MBRegClassFailed">
- RegisterClass 失敗
- </string>
- <string name="MBError">
- エラー
- </string>
- <string name="MBFullScreenErr">
- [WIDTH] x [HEIGHT] では全画面で実行することができません。
-ウィンドウモードで実行中です。
- </string>
- <string name="MBDestroyWinFailed">
- シャットダウンエラー(DestroyWindow() 失敗)
- </string>
- <string name="MBShutdownErr">
- シャットダウンエラー
- </string>
- <string name="MBDevContextErr">
- GL ディバイスコンテキストが作れません
- </string>
- <string name="MBPixelFmtErr">
- 適切なピクセル形式が見つかりません
- </string>
- <string name="MBPixelFmtDescErr">
- ピクセル形式情報が見つかりません
- </string>
- <string name="MBTrueColorWindow">
- [APP_NAME] をウィンドウで実行するには、True Color(32ビット)が必要です。
-「コントロールパネル」>「画面」>「設定」に行き、「最高 (32 ビット)」に設定してください。
-全画面を選択した場合、実行時に [APP_NAME] は自動的にスクリーンを調整します。
- </string>
- <string name="MBAlpha">
- [APP_NAME] は 8 ビットのアルファチャンネルを取得できないため実行できません。 通常ビデオカードのドライバの問題で起こります。
-お使いのコンピューターに最新のビデオカードドライバがインストールされているかご確認ください。
-また、「コントロールパネル」>「画面」>「設定」内で、モニターが「最高 (32ビット)」に設定されていることもご確認ください。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
- </string>
- <string name="MBPixelFmtSetErr">
- ピクセル形式が設定できません
- </string>
- <string name="MBGLContextErr">
- GL レンダーコンテキストが作れません
- </string>
- <string name="MBGLContextActErr">
- GL レンダーコンテキストをアクティベートできません
- </string>
- <string name="MBVideoDrvErr">
- お使いのコンピューターのビデオカードドライバが正常にインストールできなかった、または古いかサポート対象外のため、[APP_NAME] は実行できません。 最新のビデオカードドライバがインストールされているのを確認し、されている場合は再インストールをお試しください。
-
-このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
- </string>
- <string name="5 O&apos;Clock Shadow">
- うっすらとしたヒゲ
- </string>
- <string name="All White">
- 真っ白
- </string>
- <string name="Anime Eyes">
- アニメ風の目
- </string>
- <string name="Arced">
- アーチ
- </string>
- <string name="Arm Length">
- 腕の長さ
- </string>
- <string name="Attached">
- 小
- </string>
- <string name="Attached Earlobes">
- 耳たぶ
- </string>
- <string name="Back Bangs">
- 後ろにかき上げた前髪
- </string>
- <string name="Back Bangs Down">
- 後ろにかき上げて下ろした前髪
- </string>
- <string name="Back Bangs Up">
- 後ろにかき上げて持ち上げた前髪
- </string>
- <string name="Back Fringe">
- 後ろ髪の毛先
- </string>
- <string name="Back Hair">
- 後ろ髪
- </string>
- <string name="Back Hair Down">
- 下ろした後ろ髪
- </string>
- <string name="Back Hair Up">
- アップにした後ろ髪
- </string>
- <string name="Baggy">
- たるんでいる
- </string>
- <string name="Bangs">
- 前髪
- </string>
- <string name="Bangs Down">
- 下ろした前髪
- </string>
- <string name="Bangs Up">
- 持ち上げた前髪
- </string>
- <string name="Beady Eyes">
- ビーズのような目
- </string>
- <string name="Belly Size">
- お腹の大きさ
- </string>
- <string name="Big">
- 大
- </string>
- <string name="Big Butt">
- 大
- </string>
- <string name="Big Eyeball">
- 大きい眼球
- </string>
- <string name="Big Hair Back">
- 髪の大部分: 後ろ
- </string>
- <string name="Big Hair Front">
- 髪の大部分: 前
- </string>
- <string name="Big Hair Top">
- 髪の大部分: 上部
- </string>
- <string name="Big Head">
- 大
- </string>
- <string name="Big Pectorals">
- 大
- </string>
- <string name="Big Spikes">
- とげあり
- </string>
- <string name="Black">
- 黒
- </string>
- <string name="Blonde">
- ブロンド
- </string>
- <string name="Blonde Hair">
- ブロンドの髪
- </string>
- <string name="Blush">
- チーク
- </string>
- <string name="Blush Color">
- チークカラー
- </string>
- <string name="Blush Opacity">
- チークの濃さ
- </string>
- <string name="Body Definition">
- 体の精細度
- </string>
- <string name="Body Fat">
- 体脂肪
- </string>
- <string name="Body Freckles">
- 体のしみ・そばかす
- </string>
- <string name="Body Thick">
- 骨太
- </string>
- <string name="Body Thickness">
- 体の厚み
- </string>
- <string name="Body Thin">
- 細め
- </string>
- <string name="Bow Legged">
- 外股
- </string>
- <string name="Breast Buoyancy">
- 胸の重力
- </string>
- <string name="Breast Cleavage">
- 胸の谷間
- </string>
- <string name="Breast Size">
- 胸の大きさ
- </string>
- <string name="Bridge Width">
- 両目の間の幅
- </string>
- <string name="Broad">
- 広
- </string>
- <string name="Brow Size">
- 眉毛の大きさ
- </string>
- <string name="Bug Eyes">
- Bug Eyes
- </string>
- <string name="Bugged Eyes">
- 突き出た目
- </string>
- <string name="Bulbous">
- だんご
- </string>
- <string name="Bulbous Nose">
- だんご鼻
- </string>
- <string name="Bushy Eyebrows">
- 太
- </string>
- <string name="Bushy Hair">
- ぼさぼさヘア
- </string>
- <string name="Butt Size">
- お尻の大きさ
- </string>
- <string name="bustle skirt">
- 後ろの膨らみ
- </string>
- <string name="no bustle">
- 膨らみなし
- </string>
- <string name="more bustle">
- 膨らみ大
- </string>
- <string name="Chaplin">
- Chaplin
- </string>
- <string name="Cheek Bones">
- ほお骨
- </string>
- <string name="Chest Size">
- 胸部の大きさ
- </string>
- <string name="Chin Angle">
- あごの角度
- </string>
- <string name="Chin Cleft">
- あごの先の割れ具合
- </string>
- <string name="Chin Curtains">
- あごに沿ったひげ
- </string>
- <string name="Chin Depth">
- あごの長さ
- </string>
- <string name="Chin Heavy">
- あごに重点
- </string>
- <string name="Chin In">
- ひいたあご
- </string>
- <string name="Chin Out">
- 突き出たあご
- </string>
- <string name="Chin-Neck">
- あごと首
- </string>
- <string name="Clear">
- クリア
- </string>
- <string name="Cleft">
- 割れた
- </string>
- <string name="Close Set Eyes">
- 顔の中心寄りの目
- </string>
- <string name="Closed">
- クローズ
- </string>
- <string name="Closed Back">
- 後ろとじ
- </string>
- <string name="Closed Front">
- 前とじ
- </string>
- <string name="Closed Left">
- 左とじ
- </string>
- <string name="Closed Right">
- 右とじ
- </string>
- <string name="Coin Purse">
- コイン入れ
- </string>
- <string name="Collar Back">
- 後ろえり
- </string>
- <string name="Collar Front">
- 前えり
- </string>
- <string name="Corner Down">
- ダウン
- </string>
- <string name="Corner Normal">
- ノーマル
- </string>
- <string name="Corner Up">
- アップ
- </string>
- <string name="Creased">
- 重いまぶた
- </string>
- <string name="Crooked Nose">
- 曲がった鼻
- </string>
- <string name="Cropped Hair">
- 短く刈り込んだ髪
- </string>
- <string name="Cuff Flare">
- 袖口のフレア
- </string>
- <string name="Dark">
- ダーク
- </string>
- <string name="Dark Green">
- ダークグリーン
- </string>
- <string name="Darker">
- ダーク
- </string>
- <string name="Deep">
- 尖った
- </string>
- <string name="Default Heels">
- デフォルトのかかと
- </string>
- <string name="Default Toe">
- デフォルトのつま先
- </string>
- <string name="Dense">
- 濃
- </string>
- <string name="Dense hair">
- 密度の多い髪
- </string>
- <string name="Double Chin">
- 二重あご
- </string>
- <string name="Downturned">
- 下向き
- </string>
- <string name="Duffle Bag">
- ダッフルバッグ
- </string>
- <string name="Ear Angle">
- 耳の角度
- </string>
- <string name="Ear Size">
- 耳の大きさ
- </string>
- <string name="Ear Tips">
- 耳の先
- </string>
- <string name="Egg Head">
- たまご頭
- </string>
- <string name="Eye Bags">
- 下まぶた
- </string>
- <string name="Eye Color">
- 瞳の色
- </string>
- <string name="Eye Depth">
- 目のくぼみ
- </string>
- <string name="Eye Lightness">
- 瞳の明るさ
- </string>
- <string name="Eye Opening">
- 見開き具合
- </string>
- <string name="Eye Pop">
- 両目の大きさの対称
- </string>
- <string name="Eye Size">
- 目の大きさ
- </string>
- <string name="Eye Spacing">
- 目と目のあいだの幅
- </string>
- <string name="Eyeball Size">
- 眼球の大きさ
- </string>
- <string name="Eyebrow Arc">
- 眉毛のアーチ
- </string>
- <string name="Eyebrow Density">
- 眉毛の密集度
- </string>
- <string name="Eyebrow Height">
- 眉毛の高さ
- </string>
- <string name="Eyebrow Points">
- 眉毛の角
- </string>
- <string name="Eyebrow Size">
- 眉毛の大きさ
- </string>
- <string name="Eyelash Length">
- まつげの長さ
- </string>
- <string name="Eyeliner">
- アイライナー
- </string>
- <string name="Eyeliner Color">
- アイライナーの色
- </string>
- <string name="Eyes Back">
- 目・戻る
- </string>
- <string name="Eyes Bugged">
- 下まぶたがたるんだ目
- </string>
- <string name="Eyes Forward">
- 目・次へ
- </string>
- <string name="Eyes Long Head">
- Eyes Long Head
- </string>
- <string name="Eyes Shear Left Up">
- Eyes Shear Left Up
- </string>
- <string name="Eyes Shear Right Up">
- Eyes Shear Right Up
- </string>
- <string name="Eyes Short Head">
- Eyes Short Head
- </string>
- <string name="Eyes Spread">
- 離れた目
- </string>
- <string name="Eyes Sunken">
- くぼんだ目
- </string>
- <string name="Eyes Together">
- Eyes Together
- </string>
- <string name="Face Shear">
- 顔のゆがみ
- </string>
- <string name="Facial Definition">
- 顔の精細度
- </string>
- <string name="Far Set Eyes">
- 離れた目
- </string>
- <string name="Fat">
- 太った
- </string>
- <string name="Fat Head">
- 太めの頭
- </string>
- <string name="Fat Lips">
- 大
- </string>
- <string name="Fat Lower">
- Fat Lower
- </string>
- <string name="Fat Lower Lip">
- 厚めの下唇
- </string>
- <string name="Fat Torso">
- 太めの頭部
- </string>
- <string name="Fat Upper">
- Fat Upper
- </string>
- <string name="Fat Upper Lip">
- 厚めの上唇
- </string>
- <string name="Female">
- 女性
- </string>
- <string name="Fingerless">
- 指なし
- </string>
- <string name="Fingers">
- 指あり
- </string>
- <string name="Flared Cuffs">
- 広がった袖口
- </string>
- <string name="Flat">
- 平ら
- </string>
- <string name="Flat Butt">
- 小
- </string>
- <string name="Flat Head">
- 絶壁頭
- </string>
- <string name="Flat Toe">
- フラット
- </string>
- <string name="Foot Size">
- 足の大きさ
- </string>
- <string name="Forehead Angle">
- ひたいの角度
- </string>
- <string name="Forehead Heavy">
- ひたいに重点
- </string>
- <string name="Freckles">
- しみ・そばかす
- </string>
- <string name="Front Bangs Down">
- 下ろした前髪
- </string>
- <string name="Front Bangs Up">
- 上げた前髪
- </string>
- <string name="Front Fringe">
- 前髪の毛先
- </string>
- <string name="Front Hair">
- 前髪
- </string>
- <string name="Front Hair Down">
- 下ろした前髪
- </string>
- <string name="Front Hair Up">
- アップにした前髪
- </string>
- <string name="Full Back">
- 刈られていない髪
- </string>
- <string name="Full Eyeliner">
- あり
- </string>
- <string name="Full Front">
- 刈られていない髪
- </string>
- <string name="Full Hair Sides">
- サイドの髪
- </string>
- <string name="Full Sides">
- 生え揃ったサイド
- </string>
- <string name="Glossy">
- あり
- </string>
- <string name="Glove Fingers">
- 手袋の指
- </string>
- <string name="Glove Length">
- 手袋の長さ
- </string>
- <string name="Hair">
- 髪
- </string>
- <string name="Hair Back">
- 髪: 後ろ
- </string>
- <string name="Hair Front">
- 髪: 前
- </string>
- <string name="Hair Sides">
- 髪: サイド
- </string>
- <string name="Hair Sweep">
- 流す
- </string>
- <string name="Hair Thickess">
- 髪の量
- </string>
- <string name="Hair Thickness">
- 髪の量
- </string>
- <string name="Hair Tilt">
- 髪の向き
- </string>
- <string name="Hair Tilted Left">
- 左向き
- </string>
- <string name="Hair Tilted Right">
- 右向き
- </string>
- <string name="Hair Volume">
- 髪: ボリューム
- </string>
- <string name="Hand Size">
- 手の大きさ
- </string>
- <string name="Handlebars">
- ハンドルバー
- </string>
- <string name="Head Length">
- 頭の長さ
- </string>
- <string name="Head Shape">
- 頭の形
- </string>
- <string name="Head Size">
- 頭の大きさ
- </string>
- <string name="Head Stretch">
- 頭の伸び具合
- </string>
- <string name="Heel Height">
- ヒールの高さ
- </string>
- <string name="Heel Shape">
- ヒールの形
- </string>
- <string name="Height">
- 身長
- </string>
- <string name="High">
- 高
- </string>
- <string name="High Heels">
- ハイヒール
- </string>
- <string name="High Jaw">
- 高
- </string>
- <string name="High Platforms">
- 厚底
- </string>
- <string name="High and Tight">
- 高めでタイト
- </string>
- <string name="Higher">
- 高
- </string>
- <string name="Hip Length">
- 腰の長さ
- </string>
- <string name="Hip Width">
- 腰の幅
- </string>
- <string name="In">
- 内向き
- </string>
- <string name="In Shdw Color">
- 内側のシャドウカラー
- </string>
- <string name="In Shdw Opacity">
- 内側のシャドウの濃さ
- </string>
- <string name="Inner Eye Corner">
- 目頭
- </string>
- <string name="Inner Eye Shadow">
- 内側のアイシャドウ
- </string>
- <string name="Inner Shadow">
- 内側のシャドウ
- </string>
- <string name="Jacket Length">
- ジャケット丈
- </string>
- <string name="Jacket Wrinkles">
- ジャケットのしわ
- </string>
- <string name="Jaw Angle">
- あごの角度
- </string>
- <string name="Jaw Jut">
- あごの突出
- </string>
- <string name="Jaw Shape">
- あごの形
- </string>
- <string name="Join">
- 寄せた
- </string>
- <string name="Jowls">
- えら
- </string>
- <string name="Knee Angle">
- 膝の角度
- </string>
- <string name="Knock Kneed">
- 内股
- </string>
- <string name="Large">
- 大
- </string>
- <string name="Large Hands">
- 大
- </string>
- <string name="Left Part">
- 左分け
- </string>
- <string name="Leg Length">
- 脚の長さ
- </string>
- <string name="Leg Muscles">
- 脚の筋肉
- </string>
- <string name="Less">
- 小
- </string>
- <string name="Less Body Fat">
- 少なめ
- </string>
- <string name="Less Curtains">
- 少なめ
- </string>
- <string name="Less Freckles">
- 少なめ
- </string>
- <string name="Less Full">
- 薄い
- </string>
- <string name="Less Gravity">
- 少
- </string>
- <string name="Less Love">
- 少
- </string>
- <string name="Less Muscles">
- 少なめ
- </string>
- <string name="Less Muscular">
- 少なめ
- </string>
- <string name="Less Rosy">
- 少な目
- </string>
- <string name="Less Round">
- 丸み少な目
- </string>
- <string name="Less Saddle">
- 小
- </string>
- <string name="Less Square">
- 小
- </string>
- <string name="Less Volume">
- ボリューム少な目
- </string>
- <string name="Less soul">
- 小
- </string>
- <string name="Lighter">
- ライト
- </string>
- <string name="Lip Cleft">
- 唇の山
- </string>
- <string name="Lip Cleft Depth">
- 唇の山の高さ
- </string>
- <string name="Lip Fullness">
- 唇の厚み
- </string>
- <string name="Lip Pinkness">
- 唇の赤み
- </string>
- <string name="Lip Ratio">
- 上下唇の大きさ
- </string>
- <string name="Lip Thickness">
- 唇の前後幅
- </string>
- <string name="Lip Width">
- 口の大きさ
- </string>
- <string name="Lipgloss">
- リップグロス
- </string>
- <string name="Lipstick">
- 口紅
- </string>
- <string name="Lipstick Color">
- 口紅の色
- </string>
- <string name="Long">
- 長
- </string>
- <string name="Long Head">
- 前後幅が広い頭
- </string>
- <string name="Long Hips">
- 長
- </string>
- <string name="Long Legs">
- 長
- </string>
- <string name="Long Neck">
- 長
- </string>
- <string name="Long Pigtails">
- 長
- </string>
- <string name="Long Ponytail">
- 長
- </string>
- <string name="Long Torso">
- 長
- </string>
- <string name="Long arms">
- 長
- </string>
- <string name="Longcuffs">
- ロングカフス
- </string>
- <string name="Loose Pants">
- ゆったり
- </string>
- <string name="Loose Shirt">
- ゆるめ
- </string>
- <string name="Loose Sleeves">
- ゆるめ
- </string>
- <string name="Love Handles">
- ウエスト周り
- </string>
- <string name="Low">
- 低
- </string>
- <string name="Low Heels">
- ローヒール
- </string>
- <string name="Low Jaw">
- 低
- </string>
- <string name="Low Platforms">
- 低め
- </string>
- <string name="Low and Loose">
- 低めでゆったり
- </string>
- <string name="Lower">
- 低
- </string>
- <string name="Lower Bridge">
- 鼻筋
- </string>
- <string name="Lower Cheeks">
- ほおの下部
- </string>
- <string name="Male">
- 男性
- </string>
- <string name="Middle Part">
- 真ん中分け
- </string>
- <string name="More">
- 大
- </string>
- <string name="More Blush">
- きつめ
- </string>
- <string name="More Body Fat">
- 多め
- </string>
- <string name="More Curtains">
- 多め
- </string>
- <string name="More Eyeshadow">
- あり
- </string>
- <string name="More Freckles">
- 多め
- </string>
- <string name="More Full">
- 厚い
- </string>
- <string name="More Gravity">
- 大
- </string>
- <string name="More Lipstick">
- あり
- </string>
- <string name="More Love">
- 大
- </string>
- <string name="More Lower Lip">
- 大
- </string>
- <string name="More Muscles">
- 多め
- </string>
- <string name="More Muscular">
- 筋骨隆々
- </string>
- <string name="More Rosy">
- 多め
- </string>
- <string name="More Round">
- まる
- </string>
- <string name="More Saddle">
- 大
- </string>
- <string name="More Sloped">
- なだらか
- </string>
- <string name="More Square">
- 四角
- </string>
- <string name="More Upper Lip">
- 大
- </string>
- <string name="More Vertical">
- 垂直
- </string>
- <string name="More Volume">
- 大
- </string>
- <string name="More soul">
- 大
- </string>
- <string name="Moustache">
- 口ひげ
- </string>
- <string name="Mouth Corner">
- 口角
- </string>
- <string name="Mouth Position">
- 口の位置
- </string>
- <string name="Mowhawk">
- モヒカン
- </string>
- <string name="Muscular">
- 筋骨たくましい
- </string>
- <string name="Mutton Chops">
- マトンチョップス
- </string>
- <string name="Nail Polish">
- マニキュア
- </string>
- <string name="Nail Polish Color">
- マニキュアの色
- </string>
- <string name="Narrow">
- 狭
- </string>
- <string name="Narrow Back">
- 狭
- </string>
- <string name="Narrow Front">
- 狭
- </string>
- <string name="Narrow Lips">
- おちょぼ口
- </string>
- <string name="Natural">
- ナチュラル
- </string>
- <string name="Neck Length">
- 首の長さ
- </string>
- <string name="Neck Thickness">
- 首の太さ
- </string>
- <string name="No Blush">
- なし
- </string>
- <string name="No Eyeliner">
- なし
- </string>
- <string name="No Eyeshadow">
- なし
- </string>
- <string name="No Heels">
- なし
- </string>
- <string name="No Lipgloss">
- なし
- </string>
- <string name="No Lipstick">
- なし
- </string>
- <string name="No Part">
- なし
- </string>
- <string name="No Polish">
- なし
- </string>
- <string name="No Red">
- なし
- </string>
- <string name="No Spikes">
- なし
- </string>
- <string name="No White">
- なし
- </string>
- <string name="No Wrinkles">
- なし
- </string>
- <string name="Normal Lower">
- Normal Lower
- </string>
- <string name="Normal Upper">
- Normal Upper
- </string>
- <string name="Nose Left">
- 左曲がり
- </string>
- <string name="Nose Right">
- 右曲がり
- </string>
- <string name="Nose Size">
- 鼻の大きさ
- </string>
- <string name="Nose Thickness">
- 鼻の厚み
- </string>
- <string name="Nose Tip Angle">
- 鼻先の角度
- </string>
- <string name="Nose Tip Shape">
- 鼻先の形
- </string>
- <string name="Nose Width">
- 鼻の幅
- </string>
- <string name="Nostril Division">
- 鼻の穴の高さ
- </string>
- <string name="Nostril Width">
- 鼻の穴の幅
- </string>
- <string name="Old">
- Old
- </string>
- <string name="Opaque">
- 濃いめ
- </string>
- <string name="Open">
- オープン
- </string>
- <string name="Open Back">
- 後ろあき
- </string>
- <string name="Open Front">
- 前あき
- </string>
- <string name="Open Left">
- 左あき
- </string>
- <string name="Open Right">
- 右あき
- </string>
- <string name="Orange">
- オレンジ
- </string>
- <string name="Out">
- 外向き
- </string>
- <string name="Out Shdw Color">
- 外側のシャドウカラー
- </string>
- <string name="Out Shdw Opacity">
- 外側のシャドウの濃さ
- </string>
- <string name="Outer Eye Corner">
- 目尻
- </string>
- <string name="Outer Eye Shadow">
- 外側のアイシャドウ
- </string>
- <string name="Outer Shadow">
- 外側のシャドウ
- </string>
- <string name="Overbite">
- 出っ歯
- </string>
- <string name="Package">
- パッケージ
- </string>
- <string name="Painted Nails">
- あり
- </string>
- <string name="Pale">
- 悪い
- </string>
- <string name="Pants Crotch">
- パンツの股
- </string>
- <string name="Pants Fit">
- パンツのフィット感
- </string>
- <string name="Pants Length">
- パンツ丈
- </string>
- <string name="Pants Waist">
- ウエスト
- </string>
- <string name="Pants Wrinkles">
- パンツのしわ
- </string>
- <string name="Part">
- あり
- </string>
- <string name="Part Bangs">
- 分けた前髪
- </string>
- <string name="Pectorals">
- 胸筋
- </string>
- <string name="Pigment">
- 色素
- </string>
- <string name="Pigtails">
- 下げ髪
- </string>
- <string name="Pink">
- ピンク
- </string>
- <string name="Pinker">
- ピンク
- </string>
- <string name="Platform Height">
- 靴底の高さ
- </string>
- <string name="Platform Width">
- 靴底の幅
- </string>
- <string name="Pointy">
- 尖った
- </string>
- <string name="Pointy Heels">
- 幅狭
- </string>
- <string name="Pointy Toe">
- 先の細いつま先
- </string>
- <string name="Ponytail">
- ポニーテール
- </string>
- <string name="Poofy Skirt">
- ふんわり
- </string>
- <string name="Pop Left Eye">
- 左目を大きく
- </string>
- <string name="Pop Right Eye">
- 右目を大きく
- </string>
- <string name="Puffy">
- ふっくら
- </string>
- <string name="Puffy Eyelids">
- 目の周りの膨らみ
- </string>
- <string name="Rainbow Color">
- 虹色
- </string>
- <string name="Red Hair">
- 赤毛
- </string>
- <string name="Red Skin">
- 赤い肌
- </string>
- <string name="Regular">
- 均整のとれた
- </string>
- <string name="Regular Muscles">
- 均整のとれた筋肉
- </string>
- <string name="Right Part">
- 右分け
- </string>
- <string name="Rosy Complexion">
- ほおの赤らみ
- </string>
- <string name="Round">
- まるっこい
- </string>
- <string name="Round Forehead">
- 丸みを帯びた額
- </string>
- <string name="Ruddiness">
- 血色
- </string>
- <string name="Ruddy">
- 良い
- </string>
- <string name="Rumpled Hair">
- くしゃくしゃヘア
- </string>
- <string name="Saddle Bags">
- 腰回りの肉付き
- </string>
- <string name="Saddlebags">
- 腰回りの肉付き
- </string>
- <string name="Scrawny">
- 骨張った
- </string>
- <string name="Scrawny Leg">
- 骨張った脚
- </string>
- <string name="Separate">
- 離れた
- </string>
- <string name="Shading">
- Shading
- </string>
- <string name="Shadow hair">
- Shadow hair
- </string>
- <string name="Shallow">
- なだらか
- </string>
- <string name="Shear Back">
- 後方を刈る
- </string>
- <string name="Shear Face">
- 顔のゆがみ
- </string>
- <string name="Shear Front">
- 前方を刈る
- </string>
- <string name="Shear Left">
- 左側
- </string>
- <string name="Shear Left Up">
- 左半分を上に
- </string>
- <string name="Shear Right">
- 右側
- </string>
- <string name="Shear Right Up">
- 右半分を上に
- </string>
- <string name="Sheared Back">
- 後ろを刈られた髪
- </string>
- <string name="Sheared Front">
- 前を刈られた髪
- </string>
- <string name="Shift Left">
- 左向き
- </string>
- <string name="Shift Mouth">
- 口の向き
- </string>
- <string name="Shift Right">
- 右向き
- </string>
- <string name="Shirt Bottom">
- シャツの裾
- </string>
- <string name="Shirt Fit">
- シャツのフィット感
- </string>
- <string name="Shirt Wrinkles">
- シャツのしわ
- </string>
- <string name="Shoe Height">
- 靴の長さ
- </string>
- <string name="Short">
- 短
- </string>
- <string name="Short Arms">
- 短
- </string>
- <string name="Short Legs">
- 短
- </string>
- <string name="Short Neck">
- 短
- </string>
- <string name="Short Pigtails">
- 短
- </string>
- <string name="Short Ponytail">
- 短
- </string>
- <string name="Short Sideburns">
- 短め
- </string>
- <string name="Short Torso">
- 短
- </string>
- <string name="Short hips">
- 短
- </string>
- <string name="Shoulders">
- 肩
- </string>
- <string name="Side Bangs">
- サイドに流した前髪
- </string>
- <string name="Side Bangs Down">
- ダウン
- </string>
- <string name="Side Bangs Up">
- アップ
- </string>
- <string name="Side Fringe">
- サイドの毛先
- </string>
- <string name="Sideburns">
- もみあげ
- </string>
- <string name="Sides Hair">
- サイドの髪
- </string>
- <string name="Sides Hair Down">
- ダウン
- </string>
- <string name="Sides Hair Up">
- アップ
- </string>
- <string name="Skinny">
- 細身
- </string>
- <string name="Skinny Neck">
- 細
- </string>
- <string name="Skirt Fit">
- スカートのフィット感
- </string>
- <string name="Skirt Length">
- スカート丈
- </string>
- <string name="Slanted Forehead">
- 傾斜した額
- </string>
- <string name="Sleeve Length">
- 袖丈
- </string>
- <string name="Sleeve Looseness">
- 袖のフィット感
- </string>
- <string name="Slit Back">
- スリット: 後ろ
- </string>
- <string name="Slit Front">
- スリット: 前
- </string>
- <string name="Slit Left">
- スリット: 左
- </string>
- <string name="Slit Right">
- スリット: 右
- </string>
- <string name="Small">
- 小
- </string>
- <string name="Small Hands">
- 小
- </string>
- <string name="Small Head">
- 小
- </string>
- <string name="Smooth">
- 滑らか
- </string>
- <string name="Smooth Hair">
- スムーズ
- </string>
- <string name="Socks Length">
- 靴下丈
- </string>
- <string name="Some">
- Some
- </string>
- <string name="Soulpatch">
- ソウルパッチ
- </string>
- <string name="Sparse">
- 薄
- </string>
- <string name="Spiked Hair">
- とげとげヘア
- </string>
- <string name="Square">
- 角張った
- </string>
- <string name="Square Toe">
- スクエアトゥ
- </string>
- <string name="Squash Head">
- カボチャ型
- </string>
- <string name="Squash/Stretch Head">
- カボチャ/縦長頭
- </string>
- <string name="Stretch Head">
- 縦長
- </string>
- <string name="Sunken">
- こけた
- </string>
- <string name="Sunken Chest">
- 小
- </string>
- <string name="Sunken Eyes">
- くぼんだ目
- </string>
- <string name="Sweep Back">
- 後ろへ
- </string>
- <string name="Sweep Forward">
- 前へ
- </string>
- <string name="Swept Back">
- オールバック
- </string>
- <string name="Swept Back Hair">
- オールバックヘア
- </string>
- <string name="Swept Forward">
- 前へ
- </string>
- <string name="Swept Forward Hair">
- 後ろへ
- </string>
- <string name="Tall">
- 高
- </string>
- <string name="Taper Back">
- 後ろに先細
- </string>
- <string name="Taper Front">
- 前に先細
- </string>
- <string name="Thick Heels">
- 幅広
- </string>
- <string name="Thick Neck">
- 太
- </string>
- <string name="Thick Toe">
- 厚め
- </string>
- <string name="Thickness">
- 厚み
- </string>
- <string name="Thin">
- 薄い
- </string>
- <string name="Thin Eyebrows">
- 細
- </string>
- <string name="Thin Lips">
- 小
- </string>
- <string name="Thin Nose">
- 細い鼻
- </string>
- <string name="Tight Chin">
- ひきしまったあご
- </string>
- <string name="Tight Cuffs">
- タイト
- </string>
- <string name="Tight Pants">
- タイト
- </string>
- <string name="Tight Shirt">
- タイト
- </string>
- <string name="Tight Skirt">
- タイト
- </string>
- <string name="Tight Sleeves">
- タイト
- </string>
- <string name="Tilt Left">
- 左に傾斜
- </string>
- <string name="Tilt Right">
- 右に傾斜
- </string>
- <string name="Toe Shape">
- つま先の形
- </string>
- <string name="Toe Thickness">
- つま先の厚み
- </string>
- <string name="Torso Length">
- 上半身の長さ
- </string>
- <string name="Torso Muscles">
- 上半身の筋肉
- </string>
- <string name="Torso Scrawny">
- 上半身の骨張り
- </string>
- <string name="Unattached">
- 大
- </string>
- <string name="Uncreased">
- 軽いまぶた
- </string>
- <string name="Underbite">
- 受け口
- </string>
- <string name="Unnatural">
- ユニーク
- </string>
- <string name="Upper Bridge">
- 両目のあいだ
- </string>
- <string name="Upper Cheeks">
- ほおの上部
- </string>
- <string name="Upper Chin Cleft">
- あご上部の割れ具合
- </string>
- <string name="Upper Eyelid Fold">
- 二重の幅
- </string>
- <string name="Upturned">
- 上向き
- </string>
- <string name="Very Red">
- 真っ赤
- </string>
- <string name="Waist Height">
- ウエストの高さ
- </string>
- <string name="Well-Fed">
- つまった
- </string>
- <string name="White Hair">
- 白髪
- </string>
- <string name="Wide">
- 広
- </string>
- <string name="Wide Back">
- 広
- </string>
- <string name="Wide Front">
- 広
- </string>
- <string name="Wide Lips">
- 大きい口
- </string>
- <string name="Wild">
- ワイルド
- </string>
- <string name="Wrinkles">
- しわあり
- </string>
- <string name="LocationCtrlAddLandmarkTooltip">
- マイ ランドマークに追加
- </string>
- <string name="LocationCtrlEditLandmarkTooltip">
- マイ ランドマークを編集
- </string>
- <string name="UpdaterWindowTitle">
- [APP_NAME] アップデート
- </string>
- <string name="UpdaterNowUpdating">
- 只今 [APP_NAME] をアップデート中です...
- </string>
- <string name="UpdaterNowInstalling">
- [APP_NAME] をインストール中です...
- </string>
- <string name="UpdaterUpdatingDescriptive">
- お使いの [APP_NAME] ビューワが最新バージョンにアップデートされています。 数分かかることがありますのでしばらくお待ちください。
- </string>
- <string name="UpdaterProgressBarTextWithEllipses">
- アップデートをダウンロード中です...
- </string>
- <string name="UpdaterProgressBarText">
- アップデートをダウンロード中
- </string>
- <string name="UpdaterFailDownloadTitle">
- アップデートのダウンロードに失敗しました
- </string>
- <string name="UpdaterFailUpdateDescriptive">
- [APP_NAME] をアップデート中にエラーが発生しました。 www.secondlife.com から最新バージョンをダウンロードしてください。
- </string>
- <string name="UpdaterFailInstallTitle">
- アップデートのインストールに失敗しました
- </string>
- <string name="UpdaterFailStartTitle">
- ビューワの起動に失敗しました
- </string>
- <string name="only_user_message">
- このセッションにいるユーザーはあなただけです。
- </string>
- <string name="offline_message">
- [FIRST] [LAST]はオフラインです。
- </string>
- <string name="invite_message">
- このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。
- </string>
- <string name="generic_request_error">
- 要求中にエラーが発生しました。後でもう一度試してください。
- </string>
- <string name="insufficient_perms_error">
- あなたには充分な権限がありません。
- </string>
- <string name="session_does_not_exist_error">
- このセッションは既に切断されています。
- </string>
- <string name="no_ability_error">
- あなたにはその能力がありません。
- </string>
- <string name="no_ability">
- あなたにはその能力がありません。
- </string>
- <string name="not_a_mod_error">
- あなたはセッション・モデレータではありません。
- </string>
- <string name="muted_error">
- グループモデレータがあなたのテキストチャットを無効化しました
- </string>
- <string name="add_session_event">
- [RECIPIENT] とのチャット・セッションにユーザーを追加することができません
- </string>
- <string name="message_session_event">
- [RECIPIENT] とのチャット・セッションにメッセージを送ることができません
- </string>
- <string name="removed_from_group">
- あなたはグループから削除されました。
- </string>
- <string name="close_on_no_ability">
- このチャット・セッションを継続することはできません
- </string>
-</strings>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+ It is only for those strings which do not belong in a floater.
+ For example, the strings used in avatar chat bubbles, and strings
+ that are returned from one component and may appear in many places-->
+<strings>
+ <string name="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Second Life
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Second Life Grid
+ </string>
+ <string name="SUPPORT_SITE">
+ Second Lifeサポートポータル
+ </string>
+ <string name="StartupDetectingHardware">
+ ハードウェアの検出中です...
+ </string>
+ <string name="StartupLoading">
+ ローディング
+ </string>
+ <string name="Fullbright">
+ 明るさ全開(レガシー)
+ </string>
+ <string name="LoginInProgress">
+ ログイン中です。[APP_NAME]の表示がフリーズする場合があります。 しばらくお待ちください。
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ ログイン中です...
+ </string>
+ <string name="LoginAuthenticating">
+ 認証しています...
+ </string>
+ <string name="LoginMaintenance">
+ アカウント・メンテナンスを実行しています...
+ </string>
+ <string name="LoginAttempt">
+ 前回のログインに失敗しました。 ログイン中です([NUMBER]回目)
+ </string>
+ <string name="LoginPrecaching">
+ ワールドをロードしています...
+ </string>
+ <string name="LoginInitializingBrowser">
+ 埋め込みWebブラウザを初期化しています...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ マルチメディアを初期化しています...
+ </string>
+ <string name="LoginVerifyingCache">
+ キャッシュ・ファイルを検証しています(所要時間は60~90秒)...
+ </string>
+ <string name="LoginProcessingResponse">
+ 応答を処理しています...
+ </string>
+ <string name="LoginInitializingWorld">
+ ワールドを初期化しています...
+ </string>
+ <string name="LoginDecodingImages">
+ 画像をデコードしています...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ QuickTimeを初期化しています...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ QuickTimeが見つかりません。初期化に失敗しました。
+ </string>
+ <string name="LoginQuicktimeOK">
+ QuickTimeが正常に初期化されました。
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ 地域のハンドシェイクを待っています...
+ </string>
+ <string name="LoginConnectingToRegion">
+ 地域に接続しています...
+ </string>
+ <string name="LoginDownloadingClothing">
+ 服をダウンロードしています...
+ </string>
+ <string name="AgentLostConnection">
+ この地域には、問題が発生している可能性があります。 インターネット接続を確認してください。
+ </string>
+ <string name="TooltipPerson">
+ 人
+ </string>
+ <string name="TooltipNoName">
+ (名前なし)
+ </string>
+ <string name="TooltipOwner">
+ オーナー:
+ </string>
+ <string name="TooltipPublic">
+ 公共
+ </string>
+ <string name="TooltipIsGroup">
+ (グループ)
+ </string>
+ <string name="TooltipForSaleL$">
+ 売り出し中:L$[AMOUNT]
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ グループ作成
+ </string>
+ <string name="TooltipFlagNoBuild">
+ 作成禁止
+ </string>
+ <string name="TooltipFlagNoEdit">
+ グループ作成
+ </string>
+ <string name="TooltipFlagNotSafe">
+ 危険
+ </string>
+ <string name="TooltipFlagNoFly">
+ 飛行禁止
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ グループ・スクリプト
+ </string>
+ <string name="TooltipFlagNoScripts">
+ スクリプトなし
+ </string>
+ <string name="TooltipLand">
+ 土地:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ 1つのアイテムのみをここにドラッグできます
+ </string>
+ <string name="TooltipHttpUrl">
+ クリックしてこのWebページを見る
+ </string>
+ <string name="TooltipSLURL">
+ クリックしてこの場所の情報を見る
+ </string>
+ <string name="TooltipAgentUrl">
+ クリックしてこの住人のプロフィールを見る
+ </string>
+ <string name="TooltipGroupUrl">
+ クリックしてこのグループの説明文を見る
+ </string>
+ <string name="TooltipEventUrl">
+ クリックしてこのグループの説明文を見る
+ </string>
+ <string name="TooltipClassifiedUrl">
+ クリックしてこのクラシファイド広告を見る
+ </string>
+ <string name="TooltipParcelUrl">
+ クリックしてこの区画の説明文を見る
+ </string>
+ <string name="TooltipTeleportUrl">
+ クリックしてこの場所にテレポートする
+ </string>
+ <string name="TooltipObjectIMUrl">
+ クリックしてこのオブジェクトの説明文を見る
+ </string>
+ <string name="TooltipSLAPP">
+ クリックして secondlife:// コマンドを出す
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ 閉じる (⌘-W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ 閉じる (Ctrl+W)
+ </string>
+ <string name="BUTTON_RESTORE">
+ 復元
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ 元に戻す(縮小)
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ 別ウィンドウで開く
+ </string>
+ <string name="BUTTON_DOCK">
+ ドッキング
+ </string>
+ <string name="BUTTON_UNDOCK">
+ 切り離す
+ </string>
+ <string name="BUTTON_HELP">
+ ヘルプを表示
+ </string>
+ <string name="RetrievingData">
+ 検索中...
+ </string>
+ <string name="ReleaseNotes">
+ リリースノート
+ </string>
+ <string name="LoadingData">
+ ロード中...
+ </string>
+ <string name="AvatarNameNobody">
+ (無人)
+ </string>
+ <string name="AvatarNameWaiting">
+ (待機中)
+ </string>
+ <string name="AvatarNameHippos">
+ (カバ)
+ </string>
+ <string name="GroupNameNone">
+ (なし)
+ </string>
+ <string name="AssetErrorNone">
+ エラーなし
+ </string>
+ <string name="AssetErrorRequestFailed">
+ 資産の要求: 失敗
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ 資産の要求: 存在しないファイル
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ 資産の要求: データベースでは見つからない資産
+ </string>
+ <string name="AssetErrorEOF">
+ ファイルの終わり
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ ファイルを開くことができません
+ </string>
+ <string name="AssetErrorFileNotFound">
+ ファイルが見つかりません
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ ファイル転送タイムアウトです
+ </string>
+ <string name="AssetErrorCircuitGone">
+ 接続が解除されました
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ ビューワとサーバーの価格が一致していません
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ ステータスが不明です
+ </string>
+ <string name="texture">
+ テクスチャ
+ </string>
+ <string name="sound">
+ サウンド
+ </string>
+ <string name="calling card">
+ コーリングカード
+ </string>
+ <string name="landmark">
+ ランドマーク
+ </string>
+ <string name="legacy script">
+ レガシースクリプト
+ </string>
+ <string name="clothing">
+ 衣類
+ </string>
+ <string name="object">
+ オブジェクト
+ </string>
+ <string name="note card">
+ ノートカード
+ </string>
+ <string name="folder">
+ フォルダ
+ </string>
+ <string name="root">
+ ルート
+ </string>
+ <string name="lsl2 script">
+ lsl2 スクリプト
+ </string>
+ <string name="lsl bytecode">
+ LSL バイトコード
+ </string>
+ <string name="tga texture">
+ tga テクスチャ
+ </string>
+ <string name="body part">
+ 身体部位
+ </string>
+ <string name="snapshot">
+ スナップショット
+ </string>
+ <string name="lost and found">
+ 紛失物
+ </string>
+ <string name="targa image">
+ targa 画像
+ </string>
+ <string name="trash">
+ ゴミ箱
+ </string>
+ <string name="jpeg image">
+ jpeg 画像
+ </string>
+ <string name="animation">
+ アニメーション
+ </string>
+ <string name="gesture">
+ ジェスチャー
+ </string>
+ <string name="simstate">
+ 統計
+ </string>
+ <string name="favorite">
+ お気に入り
+ </string>
+ <string name="symbolic link">
+ リンク
+ </string>
+ <string name="AvatarAway">
+ 退席中
+ </string>
+ <string name="AvatarBusy">
+ 取り込み中
+ </string>
+ <string name="AvatarMuted">
+ ミュート
+ </string>
+ <string name="anim_express_afraid">
+ 怖れ
+ </string>
+ <string name="anim_express_anger">
+ 怒り
+ </string>
+ <string name="anim_away">
+ 退席中
+ </string>
+ <string name="anim_backflip">
+ 後ろ宙返り
+ </string>
+ <string name="anim_express_laugh">
+ 大笑い
+ </string>
+ <string name="anim_express_toothsmile">
+ 満面の笑顔
+ </string>
+ <string name="anim_blowkiss">
+ 投げキッス
+ </string>
+ <string name="anim_express_bored">
+ 退屈
+ </string>
+ <string name="anim_bow">
+ おじぎ
+ </string>
+ <string name="anim_clap">
+ 拍手
+ </string>
+ <string name="anim_courtbow">
+ 深いおじぎ
+ </string>
+ <string name="anim_express_cry">
+ 泣く
+ </string>
+ <string name="anim_dance1">
+ ダンス1
+ </string>
+ <string name="anim_dance2">
+ ダンス2
+ </string>
+ <string name="anim_dance3">
+ ダンス3
+ </string>
+ <string name="anim_dance4">
+ ダンス4
+ </string>
+ <string name="anim_dance5">
+ ダンス5
+ </string>
+ <string name="anim_dance6">
+ ダンス6
+ </string>
+ <string name="anim_dance7">
+ ダンス7
+ </string>
+ <string name="anim_dance8">
+ ダンス8
+ </string>
+ <string name="anim_express_disdain">
+ 侮蔑
+ </string>
+ <string name="anim_drink">
+ 酔っぱらう
+ </string>
+ <string name="anim_express_embarrased">
+ 困惑
+ </string>
+ <string name="anim_angry_fingerwag">
+ 指を振る
+ </string>
+ <string name="anim_fist_pump">
+ ガッツポーズ
+ </string>
+ <string name="anim_yoga_float">
+ ヨガ浮遊
+ </string>
+ <string name="anim_express_frown">
+ しかめっ面
+ </string>
+ <string name="anim_impatient">
+ いらいらする
+ </string>
+ <string name="anim_jumpforjoy">
+ 飛び上がって喜ぶ
+ </string>
+ <string name="anim_kissmybutt">
+ 挑発ポーズ
+ </string>
+ <string name="anim_express_kiss">
+ キス
+ </string>
+ <string name="anim_laugh_short">
+ 笑う
+ </string>
+ <string name="anim_musclebeach">
+ 力こぶを見せる
+ </string>
+ <string name="anim_no_unhappy">
+ 不満げに否定する
+ </string>
+ <string name="anim_no_head">
+ 否定する
+ </string>
+ <string name="anim_nyanya">
+ 冷やかす
+ </string>
+ <string name="anim_punch_onetwo">
+ ワンツー・パンチ
+ </string>
+ <string name="anim_express_open_mouth">
+ 口を開けて驚く
+ </string>
+ <string name="anim_peace">
+ ピース・サイン
+ </string>
+ <string name="anim_point_you">
+ 他人を指差す
+ </string>
+ <string name="anim_point_me">
+ 自分を指差す
+ </string>
+ <string name="anim_punch_l">
+ 左パンチ
+ </string>
+ <string name="anim_punch_r">
+ 右パンチ
+ </string>
+ <string name="anim_rps_countdown">
+ じゃんけんポーズ
+ </string>
+ <string name="anim_rps_paper">
+ パー
+ </string>
+ <string name="anim_rps_rock">
+ グー
+ </string>
+ <string name="anim_rps_scissors">
+ チョキ
+ </string>
+ <string name="anim_express_repulsed">
+ 嫌悪感
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ まわし蹴り
+ </string>
+ <string name="anim_express_sad">
+ 悲しむ
+ </string>
+ <string name="anim_salute">
+ 敬礼する
+ </string>
+ <string name="anim_shout">
+ 叫ぶ
+ </string>
+ <string name="anim_express_shrug">
+ 肩をすくめる
+ </string>
+ <string name="anim_express_smile">
+ 微笑む
+ </string>
+ <string name="anim_smoke_idle">
+ たばこをくゆらす
+ </string>
+ <string name="anim_smoke_inhale">
+ たばこを吸う
+ </string>
+ <string name="anim_smoke_throw_down">
+ たばこを捨てる
+ </string>
+ <string name="anim_express_surprise">
+ 驚く
+ </string>
+ <string name="anim_sword_strike_r">
+ 剣で斬りつける
+ </string>
+ <string name="anim_angry_tantrum">
+ じだんだを踏む
+ </string>
+ <string name="anim_express_tongue_out">
+ 舌を出す
+ </string>
+ <string name="anim_hello">
+ 手を振る
+ </string>
+ <string name="anim_whisper">
+ 小声で話す
+ </string>
+ <string name="anim_whistle">
+ 口笛を吹く
+ </string>
+ <string name="anim_express_wink">
+ ウィンク
+ </string>
+ <string name="anim_wink_hollywood">
+ ウィンク(ハリウッド)
+ </string>
+ <string name="anim_express_worry">
+ 心配する
+ </string>
+ <string name="anim_yes_happy">
+ 笑顔で頷く
+ </string>
+ <string name="anim_yes_head">
+ 頷く
+ </string>
+ <string name="texture_loading">
+ ロード中...
+ </string>
+ <string name="worldmap_offline">
+ オフライン
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ 不完全なファイル
+ </string>
+ <string name="ST_NO_JOINT">
+ ROOT または JOINT が見つかりません
+ </string>
+ <string name="whisper">
+ のささやき:
+ </string>
+ <string name="shout">
+ の叫び:
+ </string>
+ <string name="ringing">
+ インワールドボイスチャットに接続中...
+ </string>
+ <string name="connected">
+ 接続しました
+ </string>
+ <string name="unavailable">
+ あなたの現在のロケーションでは、ボイスを利用できません。
+ </string>
+ <string name="hang_up">
+ インワールドボイスチャットの通話が切断されました
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を許可しました: [PERMISSIONS]
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を拒否しました: [PERMISSIONS]
+ </string>
+ <string name="ScriptTakeMoney">
+ リンデンドル(L$)を支払う
+ </string>
+ <string name="ActOnControlInputs">
+ 制御入力に基づいて行動
+ </string>
+ <string name="RemapControlInputs">
+ 制御入力のリマップ
+ </string>
+ <string name="AnimateYourAvatar">
+ アバターへのアニメーション動作
+ </string>
+ <string name="AttachToYourAvatar">
+ アバターに装着
+ </string>
+ <string name="ReleaseOwnership">
+ 所有権を解放し公のものとする
+ </string>
+ <string name="LinkAndDelink">
+ 他のオブジェクトのリンクとリンク解除
+ </string>
+ <string name="AddAndRemoveJoints">
+ 他のオブジェクトとのジョイントの追加と削除
+ </string>
+ <string name="ChangePermissions">
+ 権限の変更
+ </string>
+ <string name="TrackYourCamera">
+ カメラ追従
+ </string>
+ <string name="ControlYourCamera">
+ カメラのコントロール
+ </string>
+ <string name="SIM_ACCESS_PG">
+ PG
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Mature
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adult
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ オフライン
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ 不明
+ </string>
+ <string name="land_type_unknown">
+ (不明)
+ </string>
+ <string name="all_files">
+ 全てのファイル
+ </string>
+ <string name="sound_files">
+ サウンド
+ </string>
+ <string name="animation_files">
+ アニメーション
+ </string>
+ <string name="image_files">
+ 画像
+ </string>
+ <string name="save_file_verb">
+ 保存
+ </string>
+ <string name="load_file_verb">
+ ロード
+ </string>
+ <string name="targa_image_files">
+ Targa画像
+ </string>
+ <string name="bitmap_image_files">
+ ビットマップ画像
+ </string>
+ <string name="avi_movie_file">
+ AVIムービーファイル
+ </string>
+ <string name="xaf_animation_file">
+ XAFアニメーションファイル
+ </string>
+ <string name="xml_file">
+ XMLファイル
+ </string>
+ <string name="dot_raw_file">
+ RAWファイル
+ </string>
+ <string name="compressed_image_files">
+ 圧縮画像
+ </string>
+ <string name="load_files">
+ ファイルのロード
+ </string>
+ <string name="choose_the_directory">
+ 参照
+ </string>
+ <string name="AvatarSetNotAway">
+ 一時退席中を解除
+ </string>
+ <string name="AvatarSetAway">
+ 一時退席中
+ </string>
+ <string name="AvatarSetNotBusy">
+ 取り込み中を解除
+ </string>
+ <string name="AvatarSetBusy">
+ 取り込み中
+ </string>
+ <string name="shape">
+ シェイプ
+ </string>
+ <string name="skin">
+ スキン
+ </string>
+ <string name="hair">
+ 髪型
+ </string>
+ <string name="eyes">
+ 目
+ </string>
+ <string name="shirt">
+ シャツ
+ </string>
+ <string name="pants">
+ ズボン
+ </string>
+ <string name="shoes">
+ 靴
+ </string>
+ <string name="socks">
+ 靴下
+ </string>
+ <string name="jacket">
+ 上着
+ </string>
+ <string name="gloves">
+ 手袋
+ </string>
+ <string name="undershirt">
+ 下着シャツ
+ </string>
+ <string name="underpants">
+ 下着パンツ
+ </string>
+ <string name="skirt">
+ スカート
+ </string>
+ <string name="invalid">
+ 無効
+ </string>
+ <string name="BodyPartsRightArm">
+ 右腕
+ </string>
+ <string name="BodyPartsHead">
+ 頭
+ </string>
+ <string name="BodyPartsLeftArm">
+ 左腕
+ </string>
+ <string name="BodyPartsLeftLeg">
+ 左脚
+ </string>
+ <string name="BodyPartsTorso">
+ 頭
+ </string>
+ <string name="BodyPartsRightLeg">
+ 右脚
+ </string>
+ <string name="GraphicsQualityLow">
+ 低
+ </string>
+ <string name="GraphicsQualityMid">
+ 中
+ </string>
+ <string name="GraphicsQualityHigh">
+ 高
+ </string>
+ <string name="LeaveMouselook">
+ ESC キーを押してワールドビューに戻る
+ </string>
+ <string name="InventoryNoMatchingItems">
+ 一致するアイテムが持ち物にありませんでした
+ </string>
+ <string name="InventoryNoTexture">
+ 持ち物内にこのテクスチャのコピーがありません
+ </string>
+ <string name="LoadingContents">
+ コンテンツをロード中です...
+ </string>
+ <string name="NoContents">
+ コンテンツなし
+ </string>
+ <string name="InvFolder My Inventory">
+ 私の持ち物
+ </string>
+ <string name="InvFolder My Favorites">
+ お気に入り
+ </string>
+ <string name="InvFolder Library">
+ ライブラリ
+ </string>
+ <string name="InvFolder Textures">
+ テクスチャ
+ </string>
+ <string name="InvFolder Sounds">
+ サウンド
+ </string>
+ <string name="InvFolder Calling Cards">
+ コーリングカード
+ </string>
+ <string name="InvFolder Landmarks">
+ ランドマーク
+ </string>
+ <string name="InvFolder Scripts">
+ スクリプト
+ </string>
+ <string name="InvFolder Clothing">
+ 衣類
+ </string>
+ <string name="InvFolder Objects">
+ オブジェクト
+ </string>
+ <string name="InvFolder Notecards">
+ ノートカード
+ </string>
+ <string name="InvFolder New Folder">
+ 新規フォルダ
+ </string>
+ <string name="InvFolder Inventory">
+ 持ち物
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ 圧縮されていない画像
+ </string>
+ <string name="InvFolder Body Parts">
+ 身体部位
+ </string>
+ <string name="InvFolder Trash">
+ ゴミ箱
+ </string>
+ <string name="InvFolder Photo Album">
+ フォトアルバム
+ </string>
+ <string name="InvFolder Lost And Found">
+ 紛失物
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ 圧縮されていないサウンド
+ </string>
+ <string name="InvFolder Animations">
+ アニメーション
+ </string>
+ <string name="InvFolder Gestures">
+ ジェスチャー
+ </string>
+ <string name="InvFolder favorite">
+ お気に入り
+ </string>
+ <string name="InvFolder Current Outfit">
+ 着用中のアウトフィット
+ </string>
+ <string name="InvFolder My Outfits">
+ 私のアウトフィット
+ </string>
+ <string name="InvFolder Friends">
+ フレンド
+ </string>
+ <string name="InvFolder All">
+ 全員
+ </string>
+ <string name="Buy">
+ 買う
+ </string>
+ <string name="BuyforL$">
+ Buy for L$
+ </string>
+ <string name="Stone">
+ 石
+ </string>
+ <string name="Metal">
+ 金属
+ </string>
+ <string name="Glass">
+ ガラス
+ </string>
+ <string name="Wood">
+ 木
+ </string>
+ <string name="Flesh">
+ 肌
+ </string>
+ <string name="Plastic">
+ プラスチック
+ </string>
+ <string name="Rubber">
+ ゴム
+ </string>
+ <string name="Light">
+ ライト
+ </string>
+ <string name="KBShift">
+ Shift
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ 胸部
+ </string>
+ <string name="Skull">
+ 頭蓋
+ </string>
+ <string name="Left Shoulder">
+ 左肩
+ </string>
+ <string name="Right Shoulder">
+ 右肩
+ </string>
+ <string name="Left Hand">
+ 左手
+ </string>
+ <string name="Right Hand">
+ 右手
+ </string>
+ <string name="Left Foot">
+ 左足
+ </string>
+ <string name="Right Foot">
+ 右足
+ </string>
+ <string name="Spine">
+ 背骨
+ </string>
+ <string name="Pelvis">
+ 骨盤
+ </string>
+ <string name="Mouth">
+ 口
+ </string>
+ <string name="Chin">
+ あご
+ </string>
+ <string name="Left Ear">
+ 左耳
+ </string>
+ <string name="Right Ear">
+ 右耳
+ </string>
+ <string name="Left Eyeball">
+ 左目眼球
+ </string>
+ <string name="Right Eyeball">
+ 右目眼球
+ </string>
+ <string name="Nose">
+ 鼻
+ </string>
+ <string name="R Upper Arm">
+ 右上腕
+ </string>
+ <string name="R Forearm">
+ 右前腕
+ </string>
+ <string name="L Upper Arm">
+ 左上腕
+ </string>
+ <string name="L Forearm">
+ 左前腕
+ </string>
+ <string name="Right Hip">
+ 右腰
+ </string>
+ <string name="R Upper Leg">
+ 右上脚
+ </string>
+ <string name="R Lower Leg">
+ 右下脚
+ </string>
+ <string name="Left Hip">
+ 左腰
+ </string>
+ <string name="L Upper Leg">
+ 左上脚
+ </string>
+ <string name="L Lower Leg">
+ 左下脚
+ </string>
+ <string name="Stomach">
+ 腹
+ </string>
+ <string name="Left Pec">
+ 左胸筋
+ </string>
+ <string name="Right Pec">
+ 右胸筋
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS]
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS]
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS]
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS]
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS]
+ </string>
+ <string name="TodayOld">
+ 今日参加
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] 年
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] 年
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] 年
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] ヶ月
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] ヶ月
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] ヶ月
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] 週間
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] 週間
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] 週間
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] 日間
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] 日間
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] 日間
+ </string>
+ <string name="AcctTypeResident">
+ 住人
+ </string>
+ <string name="AcctTypeTrial">
+ トライアル
+ </string>
+ <string name="AcctTypeCharterMember">
+ 特権メンバー
+ </string>
+ <string name="AcctTypeEmployee">
+ Linden Lab従業員
+ </string>
+ <string name="PaymentInfoUsed">
+ 支払い情報登録済
+ </string>
+ <string name="PaymentInfoOnFile">
+ 支払い情報登録済み
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ 支払い情報未登録
+ </string>
+ <string name="AgeVerified">
+ 年齢確認済み
+ </string>
+ <string name="NotAgeVerified">
+ 年齢未確認
+ </string>
+ <string name="Center 2">
+ 中心 2
+ </string>
+ <string name="Top Right">
+ 右上
+ </string>
+ <string name="Top">
+ 上部
+ </string>
+ <string name="Top Left">
+ 左上
+ </string>
+ <string name="Center">
+ 中心
+ </string>
+ <string name="Bottom Left">
+ Bottom Left
+ </string>
+ <string name="Bottom">
+ Bottom
+ </string>
+ <string name="Bottom Right">
+ Bottom Right
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ ダウンロード完了、コンパイル中
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ サーバー上にスクリプトが見つかりません。
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ ダウンロードに問題があります
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ 権限不足のためスクリプトをダウンロードできません。
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ 権限不足:
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ 原因不明の失敗によりダウンロードができません
+ </string>
+ <string name="CompileQueueTitle">
+ リコンパイル進行
+ </string>
+ <string name="CompileQueueStart">
+ リコンパイル
+ </string>
+ <string name="ResetQueueTitle">
+ 進行をリセット
+ </string>
+ <string name="ResetQueueStart">
+ リセット
+ </string>
+ <string name="RunQueueTitle">
+ 実行を続けるよう設定
+ </string>
+ <string name="RunQueueStart">
+ 実行中に設定
+ </string>
+ <string name="NotRunQueueTitle">
+ 実行を停止するよう設定
+ </string>
+ <string name="NotRunQueueStart">
+ 実行停止に設定
+ </string>
+ <string name="CompileSuccessful">
+ コンパイルが完了しました!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ コンパイル完了、保存中です...
+ </string>
+ <string name="SaveComplete">
+ 保存完了。
+ </string>
+ <string name="ObjectOutOfRange">
+ スクリプト(オブジェクトが範囲外にあります)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ [OWNER] 所有のオブジェクト「[OBJECT]」
+ </string>
+ <string name="GroupsNone">
+ なし
+ </string>
+ <string name="Unknown">
+ (不明)
+ </string>
+ <string name="Balance">
+ 残高
+ </string>
+ <string name="Credits">
+ 収入
+ </string>
+ <string name="Debits">
+ 支出
+ </string>
+ <string name="Total">
+ 合計
+ </string>
+ <string name="NoGroupDataFound">
+ グループのデータが見つかりませんでした
+ </string>
+ <string name="IMParentEstate">
+ parent estate
+ </string>
+ <string name="IMMainland">
+ メインランド
+ </string>
+ <string name="IMTeen">
+ ティーン
+ </string>
+ <string name="RegionInfoError">
+ エラー
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ [OWNER] が所有するすべての不動産
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ あなたが所有するすべての不動産
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ あなたが [OWNER] のために管理するすべての不動産
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ 許可された住人: ([ALLOWEDAGENTS] 人、最大 [MAXACCESS] 人)
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ 許可されたグループ: ([ALLOWEDGROUPS]、最大 [MAXACCESS] グループ)
+ </string>
+ <string name="CursorPos">
+ [LINE] 行目、[COLUMN] 列目
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] 件見つかりました
+ </string>
+ <string name="PanelContentsNewScript">
+ 新規スクリプト
+ </string>
+ <string name="MuteByName">
+ (名称別)
+ </string>
+ <string name="MuteAgent">
+ (住人)
+ </string>
+ <string name="MuteObject">
+ (オブジェクト)
+ </string>
+ <string name="MuteGroup">
+ (グループ)
+ </string>
+ <string name="RegionNoCovenant">
+ この不動産には約款がありません。
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ この不動産には約款がありません。 この不動産上の土地は不動産所有者により販売され、Linden Lab では販売していません。 販売に関するお問い合わせは、不動産所有者までお願い致します。
+ </string>
+ <string name="covenant_last_modified">
+ 最終修正日:
+ </string>
+ <string name="GroupOwned">
+ グループ所有
+ </string>
+ <string name="Public">
+ パブリック
+ </string>
+ <string name="ClassifiedClicksTxt">
+ クリック数: [TELEPORT] テレポート、 [MAP] 地図、 [PROFILE] プロフィール
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (掲載後更新)
+ </string>
+ <string name="GroupVoteYes">
+ はい
+ </string>
+ <string name="GroupVoteNo">
+ いいえ
+ </string>
+ <string name="GroupVoteNoActiveProposals">
+ 継続中の提案は現在ありません
+ </string>
+ <string name="GroupVoteNoArchivedProposals">
+ 提案のアーカイブは現在ありません
+ </string>
+ <string name="GroupVoteRetrievingArchivedProposals">
+ 提案のアーカイブを取得中です
+ </string>
+ <string name="GroupVoteRetrievingActiveProposals">
+ 継続中の提案を取得中です
+ </string>
+ <string name="MultiPreviewTitle">
+ プレビュー
+ </string>
+ <string name="MultiPropertiesTitle">
+ Properties
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ オブジェクト名
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ 所有グループ
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ 不明なグループ所有
+ </string>
+ <string name="InvOfferOwnedBy">
+ 所有者
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ 不明なユーザー所有
+ </string>
+ <string name="InvOfferGaveYou">
+ gave you
+ </string>
+ <string name="InvOfferYouDecline">
+ You decline
+ </string>
+ <string name="InvOfferFrom">
+ from
+ </string>
+ <string name="GroupMoneyTotal">
+ 合計
+ </string>
+ <string name="GroupMoneyBought">
+ bought
+ </string>
+ <string name="GroupMoneyPaidYou">
+ paid you
+ </string>
+ <string name="GroupMoneyPaidInto">
+ paid into
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ bought pass to
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ paid fee for event
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ paid prize for event
+ </string>
+ <string name="GroupMoneyBalance">
+ 残高
+ </string>
+ <string name="GroupMoneyCredits">
+ 収入
+ </string>
+ <string name="GroupMoneyDebits">
+ 支出
+ </string>
+ <string name="ViewerObjectContents">
+ 中身
+ </string>
+ <string name="AcquiredItems">
+ 取得アイテム
+ </string>
+ <string name="Cancel">
+ キャンセル
+ </string>
+ <string name="UploadingCosts">
+ %s のアップロード代金:
+ </string>
+ <string name="UnknownFileExtension">
+ 不明の拡張子: %s
+使用可能な拡張子: .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ ランドマークを追加...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ ランドマークを編集...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Shift+
+ </string>
+ <string name="FileSaved">
+ ファイルが保存されました
+ </string>
+ <string name="Receiving">
+ 取得中
+ </string>
+ <string name="AM">
+ AM
+ </string>
+ <string name="PM">
+ PM
+ </string>
+ <string name="PST">
+ 米国西部標準時
+ </string>
+ <string name="PDT">
+ 米国西部夏時間
+ </string>
+ <string name="Forward">
+ 前
+ </string>
+ <string name="Left">
+ 左
+ </string>
+ <string name="Right">
+ 右
+ </string>
+ <string name="Back">
+ 後ろ
+ </string>
+ <string name="North">
+ 北
+ </string>
+ <string name="South">
+ 南
+ </string>
+ <string name="West">
+ 西
+ </string>
+ <string name="East">
+ 東
+ </string>
+ <string name="Up">
+ 上
+ </string>
+ <string name="Down">
+ 下
+ </string>
+ <string name="Any Category">
+ 全カテゴリ
+ </string>
+ <string name="Shopping">
+ ショッピング
+ </string>
+ <string name="Land Rental">
+ 土地のレンタル
+ </string>
+ <string name="Property Rental">
+ 建物のレンタル
+ </string>
+ <string name="Special Attraction">
+ 特別アトラクション
+ </string>
+ <string name="New Products">
+ 新製品
+ </string>
+ <string name="Employment">
+ 雇用
+ </string>
+ <string name="Wanted">
+ 求む
+ </string>
+ <string name="Service">
+ サービス
+ </string>
+ <string name="Personal">
+ パーソナル
+ </string>
+ <string name="None">
+ なし
+ </string>
+ <string name="Linden Location">
+ Linden所在地
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ アートとカルチャー
+ </string>
+ <string name="Business">
+ ビジネス
+ </string>
+ <string name="Educational">
+ 教育的
+ </string>
+ <string name="Gaming">
+ ゲーム
+ </string>
+ <string name="Hangout">
+ たまり場
+ </string>
+ <string name="Newcomer Friendly">
+ 新住人に好意的
+ </string>
+ <string name="Parks&amp;Nature">
+ 公園と自然
+ </string>
+ <string name="Residential">
+ 住宅用
+ </string>
+ <string name="Stage">
+ ステージ
+ </string>
+ <string name="Other">
+ その他
+ </string>
+ <string name="Any">
+ 全員
+ </string>
+ <string name="You">
+ あなた
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="&apos;">
+ &apos;
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="MBCmdLineError">
+ コマンドラインにエラーが見つかりました。
+リンク先を参照してください: http://wiki.secondlife.com/wiki/Client_parameters
+エラー:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] コマンドライン使用:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] は必要なファイルにアクセスできません。
+
+複数のコピーを実行中か、ファイルが既に開いているとあなたのシステムが誤認識している可能性があります。
+このメッセージが何度も出る場合は、コンピューターを再起動してもう一度お試しください。
+それでも問題が続く場合、[APP_NAME] を完全にアンインストールして、再インストールをしてください。
+ </string>
+ <string name="MBFatalError">
+ 致命的なエラー
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降)
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] はすでに実行中です。
+最小化されたプログラムのコピーをタスクバーで確認してください。
+このメッセージが何度も出る場合はコンピューターを再起動してください。
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] は前回の実行時にフリーズしています。
+クラッシュ報告を送信しますか?
+ </string>
+ <string name="MBAlert">
+ 警告
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] は DirectX 9.0b 及びそれ以降のバージョンを検出することができませんでした。
+[APP_NAME] は DirectX を使用して安定性の問題、低パフォーマンス、クラッシュ等悪影響を与えるハードウェアや古いドライバを検出します。 DirectX 9.0b がなくても [APP_NAME] を実行できますが、DirectX 9.0bとのご使用を強く推奨します。
+
+続けますか?
+ </string>
+ <string name="MBWarning">
+ 警告
+ </string>
+ <string name="MBNoAutoUpdate">
+ 自動更新は現在 Linux には対応していません。
+www.secondlife.com から最新バージョンをダウンロードしてください。
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass 失敗
+ </string>
+ <string name="MBError">
+ エラー
+ </string>
+ <string name="MBFullScreenErr">
+ [WIDTH] x [HEIGHT] では全画面で実行することができません。
+ウィンドウモードで実行中です。
+ </string>
+ <string name="MBDestroyWinFailed">
+ シャットダウンエラー(DestroyWindow() 失敗)
+ </string>
+ <string name="MBShutdownErr">
+ シャットダウンエラー
+ </string>
+ <string name="MBDevContextErr">
+ GL ディバイスコンテキストが作れません
+ </string>
+ <string name="MBPixelFmtErr">
+ 適切なピクセル形式が見つかりません
+ </string>
+ <string name="MBPixelFmtDescErr">
+ ピクセル形式情報が見つかりません
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] をウィンドウで実行するには、True Color(32ビット)が必要です。
+「コントロールパネル」>「画面」>「設定」に行き、「最高 (32 ビット)」に設定してください。
+全画面を選択した場合、実行時に [APP_NAME] は自動的にスクリーンを調整します。
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] は 8 ビットのアルファチャンネルを取得できないため実行できません。 通常ビデオカードのドライバの問題で起こります。
+お使いのコンピューターに最新のビデオカードドライバがインストールされているかご確認ください。
+また、「コントロールパネル」>「画面」>「設定」内で、モニターが「最高 (32ビット)」に設定されていることもご確認ください。
+このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
+ </string>
+ <string name="MBPixelFmtSetErr">
+ ピクセル形式が設定できません
+ </string>
+ <string name="MBGLContextErr">
+ GL レンダーコンテキストが作れません
+ </string>
+ <string name="MBGLContextActErr">
+ GL レンダーコンテキストをアクティベートできません
+ </string>
+ <string name="MBVideoDrvErr">
+ お使いのコンピューターのビデオカードドライバが正常にインストールできなかった、または古いかサポート対象外のため、[APP_NAME] は実行できません。 最新のビデオカードドライバがインストールされているのを確認し、されている場合は再インストールをお試しください。
+
+このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
+ </string>
+ <string name="5 O&apos;Clock Shadow">
+ うっすらとしたヒゲ
+ </string>
+ <string name="All White">
+ 真っ白
+ </string>
+ <string name="Anime Eyes">
+ アニメ風の目
+ </string>
+ <string name="Arced">
+ アーチ
+ </string>
+ <string name="Arm Length">
+ 腕の長さ
+ </string>
+ <string name="Attached">
+ 小
+ </string>
+ <string name="Attached Earlobes">
+ 耳たぶ
+ </string>
+ <string name="Back Bangs">
+ 後ろにかき上げた前髪
+ </string>
+ <string name="Back Bangs Down">
+ 後ろにかき上げて下ろした前髪
+ </string>
+ <string name="Back Bangs Up">
+ 後ろにかき上げて持ち上げた前髪
+ </string>
+ <string name="Back Fringe">
+ 後ろ髪の毛先
+ </string>
+ <string name="Back Hair">
+ 後ろ髪
+ </string>
+ <string name="Back Hair Down">
+ 下ろした後ろ髪
+ </string>
+ <string name="Back Hair Up">
+ アップにした後ろ髪
+ </string>
+ <string name="Baggy">
+ たるんでいる
+ </string>
+ <string name="Bangs">
+ 前髪
+ </string>
+ <string name="Bangs Down">
+ 下ろした前髪
+ </string>
+ <string name="Bangs Up">
+ 持ち上げた前髪
+ </string>
+ <string name="Beady Eyes">
+ ビーズのような目
+ </string>
+ <string name="Belly Size">
+ お腹の大きさ
+ </string>
+ <string name="Big">
+ 大
+ </string>
+ <string name="Big Butt">
+ 大
+ </string>
+ <string name="Big Eyeball">
+ 大きい眼球
+ </string>
+ <string name="Big Hair Back">
+ 髪の大部分: 後ろ
+ </string>
+ <string name="Big Hair Front">
+ 髪の大部分: 前
+ </string>
+ <string name="Big Hair Top">
+ 髪の大部分: 上部
+ </string>
+ <string name="Big Head">
+ 大
+ </string>
+ <string name="Big Pectorals">
+ 大
+ </string>
+ <string name="Big Spikes">
+ とげあり
+ </string>
+ <string name="Black">
+ 黒
+ </string>
+ <string name="Blonde">
+ ブロンド
+ </string>
+ <string name="Blonde Hair">
+ ブロンドの髪
+ </string>
+ <string name="Blush">
+ チーク
+ </string>
+ <string name="Blush Color">
+ チークカラー
+ </string>
+ <string name="Blush Opacity">
+ チークの濃さ
+ </string>
+ <string name="Body Definition">
+ 体の精細度
+ </string>
+ <string name="Body Fat">
+ 体脂肪
+ </string>
+ <string name="Body Freckles">
+ 体のしみ・そばかす
+ </string>
+ <string name="Body Thick">
+ 骨太
+ </string>
+ <string name="Body Thickness">
+ 体の厚み
+ </string>
+ <string name="Body Thin">
+ 細め
+ </string>
+ <string name="Bow Legged">
+ 外股
+ </string>
+ <string name="Breast Buoyancy">
+ 胸の重力
+ </string>
+ <string name="Breast Cleavage">
+ 胸の谷間
+ </string>
+ <string name="Breast Size">
+ 胸の大きさ
+ </string>
+ <string name="Bridge Width">
+ 両目の間の幅
+ </string>
+ <string name="Broad">
+ 広
+ </string>
+ <string name="Brow Size">
+ 眉毛の大きさ
+ </string>
+ <string name="Bug Eyes">
+ Bug Eyes
+ </string>
+ <string name="Bugged Eyes">
+ 突き出た目
+ </string>
+ <string name="Bulbous">
+ だんご
+ </string>
+ <string name="Bulbous Nose">
+ だんご鼻
+ </string>
+ <string name="Bushy Eyebrows">
+ 太
+ </string>
+ <string name="Bushy Hair">
+ ぼさぼさヘア
+ </string>
+ <string name="Butt Size">
+ お尻の大きさ
+ </string>
+ <string name="bustle skirt">
+ 後ろの膨らみ
+ </string>
+ <string name="no bustle">
+ 膨らみなし
+ </string>
+ <string name="more bustle">
+ 膨らみ大
+ </string>
+ <string name="Chaplin">
+ Chaplin
+ </string>
+ <string name="Cheek Bones">
+ ほお骨
+ </string>
+ <string name="Chest Size">
+ 胸部の大きさ
+ </string>
+ <string name="Chin Angle">
+ あごの角度
+ </string>
+ <string name="Chin Cleft">
+ あごの先の割れ具合
+ </string>
+ <string name="Chin Curtains">
+ あごに沿ったひげ
+ </string>
+ <string name="Chin Depth">
+ あごの長さ
+ </string>
+ <string name="Chin Heavy">
+ あごに重点
+ </string>
+ <string name="Chin In">
+ ひいたあご
+ </string>
+ <string name="Chin Out">
+ 突き出たあご
+ </string>
+ <string name="Chin-Neck">
+ あごと首
+ </string>
+ <string name="Clear">
+ クリア
+ </string>
+ <string name="Cleft">
+ 割れた
+ </string>
+ <string name="Close Set Eyes">
+ 顔の中心寄りの目
+ </string>
+ <string name="Closed">
+ クローズ
+ </string>
+ <string name="Closed Back">
+ 後ろとじ
+ </string>
+ <string name="Closed Front">
+ 前とじ
+ </string>
+ <string name="Closed Left">
+ 左とじ
+ </string>
+ <string name="Closed Right">
+ 右とじ
+ </string>
+ <string name="Coin Purse">
+ コイン入れ
+ </string>
+ <string name="Collar Back">
+ 後ろえり
+ </string>
+ <string name="Collar Front">
+ 前えり
+ </string>
+ <string name="Corner Down">
+ ダウン
+ </string>
+ <string name="Corner Normal">
+ ノーマル
+ </string>
+ <string name="Corner Up">
+ アップ
+ </string>
+ <string name="Creased">
+ 重いまぶた
+ </string>
+ <string name="Crooked Nose">
+ 曲がった鼻
+ </string>
+ <string name="Cropped Hair">
+ 短く刈り込んだ髪
+ </string>
+ <string name="Cuff Flare">
+ 袖口のフレア
+ </string>
+ <string name="Dark">
+ ダーク
+ </string>
+ <string name="Dark Green">
+ ダークグリーン
+ </string>
+ <string name="Darker">
+ ダーク
+ </string>
+ <string name="Deep">
+ 尖った
+ </string>
+ <string name="Default Heels">
+ デフォルトのかかと
+ </string>
+ <string name="Default Toe">
+ デフォルトのつま先
+ </string>
+ <string name="Dense">
+ 濃
+ </string>
+ <string name="Dense hair">
+ 密度の多い髪
+ </string>
+ <string name="Double Chin">
+ 二重あご
+ </string>
+ <string name="Downturned">
+ 下向き
+ </string>
+ <string name="Duffle Bag">
+ ダッフルバッグ
+ </string>
+ <string name="Ear Angle">
+ 耳の角度
+ </string>
+ <string name="Ear Size">
+ 耳の大きさ
+ </string>
+ <string name="Ear Tips">
+ 耳の先
+ </string>
+ <string name="Egg Head">
+ たまご頭
+ </string>
+ <string name="Eye Bags">
+ 下まぶた
+ </string>
+ <string name="Eye Color">
+ 瞳の色
+ </string>
+ <string name="Eye Depth">
+ 目のくぼみ
+ </string>
+ <string name="Eye Lightness">
+ 瞳の明るさ
+ </string>
+ <string name="Eye Opening">
+ 見開き具合
+ </string>
+ <string name="Eye Pop">
+ 両目の大きさの対称
+ </string>
+ <string name="Eye Size">
+ 目の大きさ
+ </string>
+ <string name="Eye Spacing">
+ 目と目のあいだの幅
+ </string>
+ <string name="Eyeball Size">
+ 眼球の大きさ
+ </string>
+ <string name="Eyebrow Arc">
+ 眉毛のアーチ
+ </string>
+ <string name="Eyebrow Density">
+ 眉毛の密集度
+ </string>
+ <string name="Eyebrow Height">
+ 眉毛の高さ
+ </string>
+ <string name="Eyebrow Points">
+ 眉毛の角
+ </string>
+ <string name="Eyebrow Size">
+ 眉毛の大きさ
+ </string>
+ <string name="Eyelash Length">
+ まつげの長さ
+ </string>
+ <string name="Eyeliner">
+ アイライナー
+ </string>
+ <string name="Eyeliner Color">
+ アイライナーの色
+ </string>
+ <string name="Eyes Back">
+ 目・戻る
+ </string>
+ <string name="Eyes Bugged">
+ 下まぶたがたるんだ目
+ </string>
+ <string name="Eyes Forward">
+ 目・次へ
+ </string>
+ <string name="Eyes Long Head">
+ Eyes Long Head
+ </string>
+ <string name="Eyes Shear Left Up">
+ Eyes Shear Left Up
+ </string>
+ <string name="Eyes Shear Right Up">
+ Eyes Shear Right Up
+ </string>
+ <string name="Eyes Short Head">
+ Eyes Short Head
+ </string>
+ <string name="Eyes Spread">
+ 離れた目
+ </string>
+ <string name="Eyes Sunken">
+ くぼんだ目
+ </string>
+ <string name="Eyes Together">
+ Eyes Together
+ </string>
+ <string name="Face Shear">
+ 顔のゆがみ
+ </string>
+ <string name="Facial Definition">
+ 顔の精細度
+ </string>
+ <string name="Far Set Eyes">
+ 離れた目
+ </string>
+ <string name="Fat">
+ 太った
+ </string>
+ <string name="Fat Head">
+ 太めの頭
+ </string>
+ <string name="Fat Lips">
+ 大
+ </string>
+ <string name="Fat Lower">
+ Fat Lower
+ </string>
+ <string name="Fat Lower Lip">
+ 厚めの下唇
+ </string>
+ <string name="Fat Torso">
+ 太めの頭部
+ </string>
+ <string name="Fat Upper">
+ Fat Upper
+ </string>
+ <string name="Fat Upper Lip">
+ 厚めの上唇
+ </string>
+ <string name="Female">
+ 女性
+ </string>
+ <string name="Fingerless">
+ 指なし
+ </string>
+ <string name="Fingers">
+ 指あり
+ </string>
+ <string name="Flared Cuffs">
+ 広がった袖口
+ </string>
+ <string name="Flat">
+ 平ら
+ </string>
+ <string name="Flat Butt">
+ 小
+ </string>
+ <string name="Flat Head">
+ 絶壁頭
+ </string>
+ <string name="Flat Toe">
+ フラット
+ </string>
+ <string name="Foot Size">
+ 足の大きさ
+ </string>
+ <string name="Forehead Angle">
+ ひたいの角度
+ </string>
+ <string name="Forehead Heavy">
+ ひたいに重点
+ </string>
+ <string name="Freckles">
+ しみ・そばかす
+ </string>
+ <string name="Front Bangs Down">
+ 下ろした前髪
+ </string>
+ <string name="Front Bangs Up">
+ 上げた前髪
+ </string>
+ <string name="Front Fringe">
+ 前髪の毛先
+ </string>
+ <string name="Front Hair">
+ 前髪
+ </string>
+ <string name="Front Hair Down">
+ 下ろした前髪
+ </string>
+ <string name="Front Hair Up">
+ アップにした前髪
+ </string>
+ <string name="Full Back">
+ 刈られていない髪
+ </string>
+ <string name="Full Eyeliner">
+ あり
+ </string>
+ <string name="Full Front">
+ 刈られていない髪
+ </string>
+ <string name="Full Hair Sides">
+ サイドの髪
+ </string>
+ <string name="Full Sides">
+ 生え揃ったサイド
+ </string>
+ <string name="Glossy">
+ あり
+ </string>
+ <string name="Glove Fingers">
+ 手袋の指
+ </string>
+ <string name="Glove Length">
+ 手袋の長さ
+ </string>
+ <string name="Hair">
+ 髪
+ </string>
+ <string name="Hair Back">
+ 髪: 後ろ
+ </string>
+ <string name="Hair Front">
+ 髪: 前
+ </string>
+ <string name="Hair Sides">
+ 髪: サイド
+ </string>
+ <string name="Hair Sweep">
+ 流す
+ </string>
+ <string name="Hair Thickess">
+ 髪の量
+ </string>
+ <string name="Hair Thickness">
+ 髪の量
+ </string>
+ <string name="Hair Tilt">
+ 髪の向き
+ </string>
+ <string name="Hair Tilted Left">
+ 左向き
+ </string>
+ <string name="Hair Tilted Right">
+ 右向き
+ </string>
+ <string name="Hair Volume">
+ 髪: ボリューム
+ </string>
+ <string name="Hand Size">
+ 手の大きさ
+ </string>
+ <string name="Handlebars">
+ ハンドルバー
+ </string>
+ <string name="Head Length">
+ 頭の長さ
+ </string>
+ <string name="Head Shape">
+ 頭の形
+ </string>
+ <string name="Head Size">
+ 頭の大きさ
+ </string>
+ <string name="Head Stretch">
+ 頭の伸び具合
+ </string>
+ <string name="Heel Height">
+ ヒールの高さ
+ </string>
+ <string name="Heel Shape">
+ ヒールの形
+ </string>
+ <string name="Height">
+ 身長
+ </string>
+ <string name="High">
+ 高
+ </string>
+ <string name="High Heels">
+ ハイヒール
+ </string>
+ <string name="High Jaw">
+ 高
+ </string>
+ <string name="High Platforms">
+ 厚底
+ </string>
+ <string name="High and Tight">
+ 高めでタイト
+ </string>
+ <string name="Higher">
+ 高
+ </string>
+ <string name="Hip Length">
+ 腰の長さ
+ </string>
+ <string name="Hip Width">
+ 腰の幅
+ </string>
+ <string name="In">
+ 内向き
+ </string>
+ <string name="In Shdw Color">
+ 内側のシャドウカラー
+ </string>
+ <string name="In Shdw Opacity">
+ 内側のシャドウの濃さ
+ </string>
+ <string name="Inner Eye Corner">
+ 目頭
+ </string>
+ <string name="Inner Eye Shadow">
+ 内側のアイシャドウ
+ </string>
+ <string name="Inner Shadow">
+ 内側のシャドウ
+ </string>
+ <string name="Jacket Length">
+ ジャケット丈
+ </string>
+ <string name="Jacket Wrinkles">
+ ジャケットのしわ
+ </string>
+ <string name="Jaw Angle">
+ あごの角度
+ </string>
+ <string name="Jaw Jut">
+ あごの突出
+ </string>
+ <string name="Jaw Shape">
+ あごの形
+ </string>
+ <string name="Join">
+ 寄せた
+ </string>
+ <string name="Jowls">
+ えら
+ </string>
+ <string name="Knee Angle">
+ 膝の角度
+ </string>
+ <string name="Knock Kneed">
+ 内股
+ </string>
+ <string name="Large">
+ 大
+ </string>
+ <string name="Large Hands">
+ 大
+ </string>
+ <string name="Left Part">
+ 左分け
+ </string>
+ <string name="Leg Length">
+ 脚の長さ
+ </string>
+ <string name="Leg Muscles">
+ 脚の筋肉
+ </string>
+ <string name="Less">
+ 小
+ </string>
+ <string name="Less Body Fat">
+ 少なめ
+ </string>
+ <string name="Less Curtains">
+ 少なめ
+ </string>
+ <string name="Less Freckles">
+ 少なめ
+ </string>
+ <string name="Less Full">
+ 薄い
+ </string>
+ <string name="Less Gravity">
+ 少
+ </string>
+ <string name="Less Love">
+ 少
+ </string>
+ <string name="Less Muscles">
+ 少なめ
+ </string>
+ <string name="Less Muscular">
+ 少なめ
+ </string>
+ <string name="Less Rosy">
+ 少な目
+ </string>
+ <string name="Less Round">
+ 丸み少な目
+ </string>
+ <string name="Less Saddle">
+ 小
+ </string>
+ <string name="Less Square">
+ 小
+ </string>
+ <string name="Less Volume">
+ ボリューム少な目
+ </string>
+ <string name="Less soul">
+ 小
+ </string>
+ <string name="Lighter">
+ ライト
+ </string>
+ <string name="Lip Cleft">
+ 唇の山
+ </string>
+ <string name="Lip Cleft Depth">
+ 唇の山の高さ
+ </string>
+ <string name="Lip Fullness">
+ 唇の厚み
+ </string>
+ <string name="Lip Pinkness">
+ 唇の赤み
+ </string>
+ <string name="Lip Ratio">
+ 上下唇の大きさ
+ </string>
+ <string name="Lip Thickness">
+ 唇の前後幅
+ </string>
+ <string name="Lip Width">
+ 口の大きさ
+ </string>
+ <string name="Lipgloss">
+ リップグロス
+ </string>
+ <string name="Lipstick">
+ 口紅
+ </string>
+ <string name="Lipstick Color">
+ 口紅の色
+ </string>
+ <string name="Long">
+ 長
+ </string>
+ <string name="Long Head">
+ 前後幅が広い頭
+ </string>
+ <string name="Long Hips">
+ 長
+ </string>
+ <string name="Long Legs">
+ 長
+ </string>
+ <string name="Long Neck">
+ 長
+ </string>
+ <string name="Long Pigtails">
+ 長
+ </string>
+ <string name="Long Ponytail">
+ 長
+ </string>
+ <string name="Long Torso">
+ 長
+ </string>
+ <string name="Long arms">
+ 長
+ </string>
+ <string name="Longcuffs">
+ ロングカフス
+ </string>
+ <string name="Loose Pants">
+ ゆったり
+ </string>
+ <string name="Loose Shirt">
+ ゆるめ
+ </string>
+ <string name="Loose Sleeves">
+ ゆるめ
+ </string>
+ <string name="Love Handles">
+ ウエスト周り
+ </string>
+ <string name="Low">
+ 低
+ </string>
+ <string name="Low Heels">
+ ローヒール
+ </string>
+ <string name="Low Jaw">
+ 低
+ </string>
+ <string name="Low Platforms">
+ 低め
+ </string>
+ <string name="Low and Loose">
+ 低めでゆったり
+ </string>
+ <string name="Lower">
+ 低
+ </string>
+ <string name="Lower Bridge">
+ 鼻筋
+ </string>
+ <string name="Lower Cheeks">
+ ほおの下部
+ </string>
+ <string name="Male">
+ 男性
+ </string>
+ <string name="Middle Part">
+ 真ん中分け
+ </string>
+ <string name="More">
+ 大
+ </string>
+ <string name="More Blush">
+ きつめ
+ </string>
+ <string name="More Body Fat">
+ 多め
+ </string>
+ <string name="More Curtains">
+ 多め
+ </string>
+ <string name="More Eyeshadow">
+ あり
+ </string>
+ <string name="More Freckles">
+ 多め
+ </string>
+ <string name="More Full">
+ 厚い
+ </string>
+ <string name="More Gravity">
+ 大
+ </string>
+ <string name="More Lipstick">
+ あり
+ </string>
+ <string name="More Love">
+ 大
+ </string>
+ <string name="More Lower Lip">
+ 大
+ </string>
+ <string name="More Muscles">
+ 多め
+ </string>
+ <string name="More Muscular">
+ 筋骨隆々
+ </string>
+ <string name="More Rosy">
+ 多め
+ </string>
+ <string name="More Round">
+ まる
+ </string>
+ <string name="More Saddle">
+ 大
+ </string>
+ <string name="More Sloped">
+ なだらか
+ </string>
+ <string name="More Square">
+ 四角
+ </string>
+ <string name="More Upper Lip">
+ 大
+ </string>
+ <string name="More Vertical">
+ 垂直
+ </string>
+ <string name="More Volume">
+ 大
+ </string>
+ <string name="More soul">
+ 大
+ </string>
+ <string name="Moustache">
+ 口ひげ
+ </string>
+ <string name="Mouth Corner">
+ 口角
+ </string>
+ <string name="Mouth Position">
+ 口の位置
+ </string>
+ <string name="Mowhawk">
+ モヒカン
+ </string>
+ <string name="Muscular">
+ 筋骨たくましい
+ </string>
+ <string name="Mutton Chops">
+ マトンチョップス
+ </string>
+ <string name="Nail Polish">
+ マニキュア
+ </string>
+ <string name="Nail Polish Color">
+ マニキュアの色
+ </string>
+ <string name="Narrow">
+ 狭
+ </string>
+ <string name="Narrow Back">
+ 狭
+ </string>
+ <string name="Narrow Front">
+ 狭
+ </string>
+ <string name="Narrow Lips">
+ おちょぼ口
+ </string>
+ <string name="Natural">
+ ナチュラル
+ </string>
+ <string name="Neck Length">
+ 首の長さ
+ </string>
+ <string name="Neck Thickness">
+ 首の太さ
+ </string>
+ <string name="No Blush">
+ なし
+ </string>
+ <string name="No Eyeliner">
+ なし
+ </string>
+ <string name="No Eyeshadow">
+ なし
+ </string>
+ <string name="No Heels">
+ なし
+ </string>
+ <string name="No Lipgloss">
+ なし
+ </string>
+ <string name="No Lipstick">
+ なし
+ </string>
+ <string name="No Part">
+ なし
+ </string>
+ <string name="No Polish">
+ なし
+ </string>
+ <string name="No Red">
+ なし
+ </string>
+ <string name="No Spikes">
+ なし
+ </string>
+ <string name="No White">
+ なし
+ </string>
+ <string name="No Wrinkles">
+ なし
+ </string>
+ <string name="Normal Lower">
+ Normal Lower
+ </string>
+ <string name="Normal Upper">
+ Normal Upper
+ </string>
+ <string name="Nose Left">
+ 左曲がり
+ </string>
+ <string name="Nose Right">
+ 右曲がり
+ </string>
+ <string name="Nose Size">
+ 鼻の大きさ
+ </string>
+ <string name="Nose Thickness">
+ 鼻の厚み
+ </string>
+ <string name="Nose Tip Angle">
+ 鼻先の角度
+ </string>
+ <string name="Nose Tip Shape">
+ 鼻先の形
+ </string>
+ <string name="Nose Width">
+ 鼻の幅
+ </string>
+ <string name="Nostril Division">
+ 鼻の穴の高さ
+ </string>
+ <string name="Nostril Width">
+ 鼻の穴の幅
+ </string>
+ <string name="Old">
+ Old
+ </string>
+ <string name="Opaque">
+ 濃いめ
+ </string>
+ <string name="Open">
+ オープン
+ </string>
+ <string name="Open Back">
+ 後ろあき
+ </string>
+ <string name="Open Front">
+ 前あき
+ </string>
+ <string name="Open Left">
+ 左あき
+ </string>
+ <string name="Open Right">
+ 右あき
+ </string>
+ <string name="Orange">
+ オレンジ
+ </string>
+ <string name="Out">
+ 外向き
+ </string>
+ <string name="Out Shdw Color">
+ 外側のシャドウカラー
+ </string>
+ <string name="Out Shdw Opacity">
+ 外側のシャドウの濃さ
+ </string>
+ <string name="Outer Eye Corner">
+ 目尻
+ </string>
+ <string name="Outer Eye Shadow">
+ 外側のアイシャドウ
+ </string>
+ <string name="Outer Shadow">
+ 外側のシャドウ
+ </string>
+ <string name="Overbite">
+ 出っ歯
+ </string>
+ <string name="Package">
+ パッケージ
+ </string>
+ <string name="Painted Nails">
+ あり
+ </string>
+ <string name="Pale">
+ 悪い
+ </string>
+ <string name="Pants Crotch">
+ パンツの股
+ </string>
+ <string name="Pants Fit">
+ パンツのフィット感
+ </string>
+ <string name="Pants Length">
+ パンツ丈
+ </string>
+ <string name="Pants Waist">
+ ウエスト
+ </string>
+ <string name="Pants Wrinkles">
+ パンツのしわ
+ </string>
+ <string name="Part">
+ あり
+ </string>
+ <string name="Part Bangs">
+ 分けた前髪
+ </string>
+ <string name="Pectorals">
+ 胸筋
+ </string>
+ <string name="Pigment">
+ 色素
+ </string>
+ <string name="Pigtails">
+ 下げ髪
+ </string>
+ <string name="Pink">
+ ピンク
+ </string>
+ <string name="Pinker">
+ ピンク
+ </string>
+ <string name="Platform Height">
+ 靴底の高さ
+ </string>
+ <string name="Platform Width">
+ 靴底の幅
+ </string>
+ <string name="Pointy">
+ 尖った
+ </string>
+ <string name="Pointy Heels">
+ 幅狭
+ </string>
+ <string name="Pointy Toe">
+ 先の細いつま先
+ </string>
+ <string name="Ponytail">
+ ポニーテール
+ </string>
+ <string name="Poofy Skirt">
+ ふんわり
+ </string>
+ <string name="Pop Left Eye">
+ 左目を大きく
+ </string>
+ <string name="Pop Right Eye">
+ 右目を大きく
+ </string>
+ <string name="Puffy">
+ ふっくら
+ </string>
+ <string name="Puffy Eyelids">
+ 目の周りの膨らみ
+ </string>
+ <string name="Rainbow Color">
+ 虹色
+ </string>
+ <string name="Red Hair">
+ 赤毛
+ </string>
+ <string name="Red Skin">
+ 赤い肌
+ </string>
+ <string name="Regular">
+ 均整のとれた
+ </string>
+ <string name="Regular Muscles">
+ 均整のとれた筋肉
+ </string>
+ <string name="Right Part">
+ 右分け
+ </string>
+ <string name="Rosy Complexion">
+ ほおの赤らみ
+ </string>
+ <string name="Round">
+ まるっこい
+ </string>
+ <string name="Round Forehead">
+ 丸みを帯びた額
+ </string>
+ <string name="Ruddiness">
+ 血色
+ </string>
+ <string name="Ruddy">
+ 良い
+ </string>
+ <string name="Rumpled Hair">
+ くしゃくしゃヘア
+ </string>
+ <string name="Saddle Bags">
+ 腰回りの肉付き
+ </string>
+ <string name="Saddlebags">
+ 腰回りの肉付き
+ </string>
+ <string name="Scrawny">
+ 骨張った
+ </string>
+ <string name="Scrawny Leg">
+ 骨張った脚
+ </string>
+ <string name="Separate">
+ 離れた
+ </string>
+ <string name="Shading">
+ Shading
+ </string>
+ <string name="Shadow hair">
+ Shadow hair
+ </string>
+ <string name="Shallow">
+ なだらか
+ </string>
+ <string name="Shear Back">
+ 後方を刈る
+ </string>
+ <string name="Shear Face">
+ 顔のゆがみ
+ </string>
+ <string name="Shear Front">
+ 前方を刈る
+ </string>
+ <string name="Shear Left">
+ 左側
+ </string>
+ <string name="Shear Left Up">
+ 左半分を上に
+ </string>
+ <string name="Shear Right">
+ 右側
+ </string>
+ <string name="Shear Right Up">
+ 右半分を上に
+ </string>
+ <string name="Sheared Back">
+ 後ろを刈られた髪
+ </string>
+ <string name="Sheared Front">
+ 前を刈られた髪
+ </string>
+ <string name="Shift Left">
+ 左向き
+ </string>
+ <string name="Shift Mouth">
+ 口の向き
+ </string>
+ <string name="Shift Right">
+ 右向き
+ </string>
+ <string name="Shirt Bottom">
+ シャツの裾
+ </string>
+ <string name="Shirt Fit">
+ シャツのフィット感
+ </string>
+ <string name="Shirt Wrinkles">
+ シャツのしわ
+ </string>
+ <string name="Shoe Height">
+ 靴の長さ
+ </string>
+ <string name="Short">
+ 短
+ </string>
+ <string name="Short Arms">
+ 短
+ </string>
+ <string name="Short Legs">
+ 短
+ </string>
+ <string name="Short Neck">
+ 短
+ </string>
+ <string name="Short Pigtails">
+ 短
+ </string>
+ <string name="Short Ponytail">
+ 短
+ </string>
+ <string name="Short Sideburns">
+ 短め
+ </string>
+ <string name="Short Torso">
+ 短
+ </string>
+ <string name="Short hips">
+ 短
+ </string>
+ <string name="Shoulders">
+ 肩
+ </string>
+ <string name="Side Bangs">
+ サイドに流した前髪
+ </string>
+ <string name="Side Bangs Down">
+ ダウン
+ </string>
+ <string name="Side Bangs Up">
+ アップ
+ </string>
+ <string name="Side Fringe">
+ サイドの毛先
+ </string>
+ <string name="Sideburns">
+ もみあげ
+ </string>
+ <string name="Sides Hair">
+ サイドの髪
+ </string>
+ <string name="Sides Hair Down">
+ ダウン
+ </string>
+ <string name="Sides Hair Up">
+ アップ
+ </string>
+ <string name="Skinny">
+ 細身
+ </string>
+ <string name="Skinny Neck">
+ 細
+ </string>
+ <string name="Skirt Fit">
+ スカートのフィット感
+ </string>
+ <string name="Skirt Length">
+ スカート丈
+ </string>
+ <string name="Slanted Forehead">
+ 傾斜した額
+ </string>
+ <string name="Sleeve Length">
+ 袖丈
+ </string>
+ <string name="Sleeve Looseness">
+ 袖のフィット感
+ </string>
+ <string name="Slit Back">
+ スリット: 後ろ
+ </string>
+ <string name="Slit Front">
+ スリット: 前
+ </string>
+ <string name="Slit Left">
+ スリット: 左
+ </string>
+ <string name="Slit Right">
+ スリット: 右
+ </string>
+ <string name="Small">
+ 小
+ </string>
+ <string name="Small Hands">
+ 小
+ </string>
+ <string name="Small Head">
+ 小
+ </string>
+ <string name="Smooth">
+ 滑らか
+ </string>
+ <string name="Smooth Hair">
+ スムーズ
+ </string>
+ <string name="Socks Length">
+ 靴下丈
+ </string>
+ <string name="Some">
+ Some
+ </string>
+ <string name="Soulpatch">
+ ソウルパッチ
+ </string>
+ <string name="Sparse">
+ 薄
+ </string>
+ <string name="Spiked Hair">
+ とげとげヘア
+ </string>
+ <string name="Square">
+ 角張った
+ </string>
+ <string name="Square Toe">
+ スクエアトゥ
+ </string>
+ <string name="Squash Head">
+ カボチャ型
+ </string>
+ <string name="Squash/Stretch Head">
+ カボチャ/縦長頭
+ </string>
+ <string name="Stretch Head">
+ 縦長
+ </string>
+ <string name="Sunken">
+ こけた
+ </string>
+ <string name="Sunken Chest">
+ 小
+ </string>
+ <string name="Sunken Eyes">
+ くぼんだ目
+ </string>
+ <string name="Sweep Back">
+ 後ろへ
+ </string>
+ <string name="Sweep Forward">
+ 前へ
+ </string>
+ <string name="Swept Back">
+ オールバック
+ </string>
+ <string name="Swept Back Hair">
+ オールバックヘア
+ </string>
+ <string name="Swept Forward">
+ 前へ
+ </string>
+ <string name="Swept Forward Hair">
+ 後ろへ
+ </string>
+ <string name="Tall">
+ 高
+ </string>
+ <string name="Taper Back">
+ 後ろに先細
+ </string>
+ <string name="Taper Front">
+ 前に先細
+ </string>
+ <string name="Thick Heels">
+ 幅広
+ </string>
+ <string name="Thick Neck">
+ 太
+ </string>
+ <string name="Thick Toe">
+ 厚め
+ </string>
+ <string name="Thickness">
+ 厚み
+ </string>
+ <string name="Thin">
+ 薄い
+ </string>
+ <string name="Thin Eyebrows">
+ 細
+ </string>
+ <string name="Thin Lips">
+ 小
+ </string>
+ <string name="Thin Nose">
+ 細い鼻
+ </string>
+ <string name="Tight Chin">
+ ひきしまったあご
+ </string>
+ <string name="Tight Cuffs">
+ タイト
+ </string>
+ <string name="Tight Pants">
+ タイト
+ </string>
+ <string name="Tight Shirt">
+ タイト
+ </string>
+ <string name="Tight Skirt">
+ タイト
+ </string>
+ <string name="Tight Sleeves">
+ タイト
+ </string>
+ <string name="Tilt Left">
+ 左に傾斜
+ </string>
+ <string name="Tilt Right">
+ 右に傾斜
+ </string>
+ <string name="Toe Shape">
+ つま先の形
+ </string>
+ <string name="Toe Thickness">
+ つま先の厚み
+ </string>
+ <string name="Torso Length">
+ 上半身の長さ
+ </string>
+ <string name="Torso Muscles">
+ 上半身の筋肉
+ </string>
+ <string name="Torso Scrawny">
+ 上半身の骨張り
+ </string>
+ <string name="Unattached">
+ 大
+ </string>
+ <string name="Uncreased">
+ 軽いまぶた
+ </string>
+ <string name="Underbite">
+ 受け口
+ </string>
+ <string name="Unnatural">
+ ユニーク
+ </string>
+ <string name="Upper Bridge">
+ 両目のあいだ
+ </string>
+ <string name="Upper Cheeks">
+ ほおの上部
+ </string>
+ <string name="Upper Chin Cleft">
+ あご上部の割れ具合
+ </string>
+ <string name="Upper Eyelid Fold">
+ 二重の幅
+ </string>
+ <string name="Upturned">
+ 上向き
+ </string>
+ <string name="Very Red">
+ 真っ赤
+ </string>
+ <string name="Waist Height">
+ ウエストの高さ
+ </string>
+ <string name="Well-Fed">
+ つまった
+ </string>
+ <string name="White Hair">
+ 白髪
+ </string>
+ <string name="Wide">
+ 広
+ </string>
+ <string name="Wide Back">
+ 広
+ </string>
+ <string name="Wide Front">
+ 広
+ </string>
+ <string name="Wide Lips">
+ 大きい口
+ </string>
+ <string name="Wild">
+ ワイルド
+ </string>
+ <string name="Wrinkles">
+ しわあり
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ マイ ランドマークに追加
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ マイ ランドマークを編集
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] アップデート
+ </string>
+ <string name="UpdaterNowUpdating">
+ 只今 [APP_NAME] をアップデート中です...
+ </string>
+ <string name="UpdaterNowInstalling">
+ [APP_NAME] をインストール中です...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ お使いの [APP_NAME] ビューワが最新バージョンにアップデートされています。 数分かかることがありますのでしばらくお待ちください。
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ アップデートをダウンロード中です...
+ </string>
+ <string name="UpdaterProgressBarText">
+ アップデートをダウンロード中
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ アップデートのダウンロードに失敗しました
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ [APP_NAME] をアップデート中にエラーが発生しました。 www.secondlife.com から最新バージョンをダウンロードしてください。
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ アップデートのインストールに失敗しました
+ </string>
+ <string name="UpdaterFailStartTitle">
+ ビューワの起動に失敗しました
+ </string>
+ <string name="only_user_message">
+ このセッションにいるユーザーはあなただけです。
+ </string>
+ <string name="offline_message">
+ [FIRST] [LAST]はオフラインです。
+ </string>
+ <string name="invite_message">
+ このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。
+ </string>
+ <string name="generic_request_error">
+ 要求中にエラーが発生しました。後でもう一度試してください。
+ </string>
+ <string name="insufficient_perms_error">
+ あなたには充分な権限がありません。
+ </string>
+ <string name="session_does_not_exist_error">
+ このセッションは既に切断されています。
+ </string>
+ <string name="no_ability_error">
+ あなたにはその能力がありません。
+ </string>
+ <string name="no_ability">
+ あなたにはその能力がありません。
+ </string>
+ <string name="not_a_mod_error">
+ あなたはセッション・モデレータではありません。
+ </string>
+ <string name="muted_error">
+ グループモデレータがあなたのテキストチャットを無効化しました
+ </string>
+ <string name="add_session_event">
+ [RECIPIENT] とのチャット・セッションにユーザーを追加することができません
+ </string>
+ <string name="message_session_event">
+ [RECIPIENT] とのチャット・セッションにメッセージを送ることができません
+ </string>
+ <string name="removed_from_group">
+ あなたはグループから削除されました。
+ </string>
+ <string name="close_on_no_ability">
+ このチャット・セッションを継続することはできません
+ </string>
+</strings>
diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml
index ef7571cac4..440704eafa 100644
--- a/indra/newview/skins/default/xui/ja/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml
@@ -1,79 +1,79 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages name="">
- <message_set name="errors">
- <message name="invalid_tport">
- テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
- </message>
- <message name="invalid_region_handoff">
- リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
- </message>
- <message name="blocked_tport">
- 申し訳ございません。テレポートは現在、ブロックされています。もう少し後でやり直してください。
-やり直してもテレポートできない場合は、いったんログアウトし、再度ログインして問題を解決してください。
- </message>
- <message name="nolandmark_tport">
- 残念ながら、システムはランドマーク目的地を探せませんでした。
- </message>
- <message name="timeout_tport">
- 申し訳ございません。システムはテレポート接続を完了できませんでした。
-もう少し後でやり直してください。
- </message>
- <message name="noaccess_tport">
- 残念ながら、そのテレポート目的地へのアクセスがありません。
- </message>
- <message name="missing_attach_tport">
- 添付物は、まだ到着していません。あと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてからテレポートをやり直してださい。
- </message>
- <message name="too_many_uploads_tport">
- この地域の資産キューが現在込み合っているため、テレポート・リクエストを時間通りに処理することが難しい状況です。
-数分後にやり直すか、または混雑していない他の地域をお試しください。
- </message>
- <message name="expired_tport">
- 申し訳ございません。システムはテレポート・リクエストを時間どおりに完了できませんでした。数分後にやり直してください。
- </message>
- <message name="expired_region_handoff">
- 申し訳ございません。システムは地域間の移動を時間どおりに完了できませんでした。
-数分後にやり直してください。
- </message>
- <message name="no_host">
- テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。
- </message>
- <message name="no_inventory_host">
- 持ち物システムは現在利用できません。
- </message>
- </message_set>
- <message_set name="progress">
- <message name="sending_dest">
- 目的地に送信しています。
- </message>
- <message name="redirecting">
- 別の目的地に再案内しています。
- </message>
- <message name="relaying">
- 目的地に中継しています。
- </message>
- <message name="sending_home">
- ホーム位置リクエストを送信しています。
- </message>
- <message name="sending_landmark">
- ランドマーク位置リクエストを送信しています。
- </message>
- <message name="completing">
- テレポートを完了しています。
- </message>
- <message name="resolving">
- 目的地を解決しています。
- </message>
- <message name="contacting">
- 新しい地域にコンタクトしています。
- </message>
- <message name="arriving">
- 到着...
- </message>
- <message name="requesting">
- テレポートをリクエスト...
- </message>
- </message_set>
-</teleport_messages>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages name="">
+ <message_set name="errors">
+ <message name="invalid_tport">
+ テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
+このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
+ </message>
+ <message name="invalid_region_handoff">
+ リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
+このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。
+ </message>
+ <message name="blocked_tport">
+ 申し訳ございません。テレポートは現在、ブロックされています。もう少し後でやり直してください。
+やり直してもテレポートできない場合は、いったんログアウトし、再度ログインして問題を解決してください。
+ </message>
+ <message name="nolandmark_tport">
+ 残念ながら、システムはランドマーク目的地を探せませんでした。
+ </message>
+ <message name="timeout_tport">
+ 申し訳ございません。システムはテレポート接続を完了できませんでした。
+もう少し後でやり直してください。
+ </message>
+ <message name="noaccess_tport">
+ 残念ながら、そのテレポート目的地へのアクセスがありません。
+ </message>
+ <message name="missing_attach_tport">
+ 添付物は、まだ到着していません。あと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてからテレポートをやり直してださい。
+ </message>
+ <message name="too_many_uploads_tport">
+ この地域の資産キューが現在込み合っているため、テレポート・リクエストを時間通りに処理することが難しい状況です。
+数分後にやり直すか、または混雑していない他の地域をお試しください。
+ </message>
+ <message name="expired_tport">
+ 申し訳ございません。システムはテレポート・リクエストを時間どおりに完了できませんでした。数分後にやり直してください。
+ </message>
+ <message name="expired_region_handoff">
+ 申し訳ございません。システムは地域間の移動を時間どおりに完了できませんでした。
+数分後にやり直してください。
+ </message>
+ <message name="no_host">
+ テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。
+ </message>
+ <message name="no_inventory_host">
+ 持ち物システムは現在利用できません。
+ </message>
+ </message_set>
+ <message_set name="progress">
+ <message name="sending_dest">
+ 目的地に送信しています。
+ </message>
+ <message name="redirecting">
+ 別の目的地に再案内しています。
+ </message>
+ <message name="relaying">
+ 目的地に中継しています。
+ </message>
+ <message name="sending_home">
+ ホーム位置リクエストを送信しています。
+ </message>
+ <message name="sending_landmark">
+ ランドマーク位置リクエストを送信しています。
+ </message>
+ <message name="completing">
+ テレポートを完了しています。
+ </message>
+ <message name="resolving">
+ 目的地を解決しています。
+ </message>
+ <message name="contacting">
+ 新しい地域にコンタクトしています。
+ </message>
+ <message name="arriving">
+ 到着...
+ </message>
+ <message name="requesting">
+ テレポートをリクエスト...
+ </message>
+ </message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/nl/panel_edit_profile.xml b/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
index 00f8c087de..172395e20a 100644
--- a/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Inwoner" />
- <string name="AcctTypeTrial"
- value="Proef" />
- <string name="AcctTypeCharterMember"
- value="Charter lid" />
- <string name="AcctTypeEmployee"
- value="Linden Lab werknemer" />
- <string name="PaymentInfoUsed"
- value="Betalingsinformatie gebruikt" />
- <string name="PaymentInfoOnFile"
- value="Betalingsinformatie aanwezig" />
- <string name="NoPaymentInfoOnFile"
- value="Geen betalingsinfo aanwezig" />
- <string name="AgeVerified"
- value="Leeftijd geverifieerd" />
- <string name="NotAgeVerified"
- value="Leeftijd niet geverifieerd" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=nl
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Antwoord bij Niet Storen:
- </text>
- </panel>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident"
+ value="Inwoner" />
+ <string name="AcctTypeTrial"
+ value="Proef" />
+ <string name="AcctTypeCharterMember"
+ value="Charter lid" />
+ <string name="AcctTypeEmployee"
+ value="Linden Lab werknemer" />
+ <string name="PaymentInfoUsed"
+ value="Betalingsinformatie gebruikt" />
+ <string name="PaymentInfoOnFile"
+ value="Betalingsinformatie aanwezig" />
+ <string name="NoPaymentInfoOnFile"
+ value="Geen betalingsinfo aanwezig" />
+ <string name="AgeVerified"
+ value="Leeftijd geverifieerd" />
+ <string name="NotAgeVerified"
+ value="Leeftijd niet geverifieerd" />
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=nl
+ </string>
+ <panel name="scroll_content_panel">
+ <panel name="data_panel" >
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text">
+ [SECOND_LIFE]:
+ </text>
+ </panel>
+ </panel>
+ <text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="text_box3">
+ Antwoord bij Niet Storen:
+ </text>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
index e449a92d7e..97fa3118f8 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Rezydent" />
- <string name="AcctTypeTrial"
- value="Próbne" />
- <string name="AcctTypeCharterMember"
- value="Członek-zalożyciel" />
- <string name="AcctTypeEmployee"
- value="Pracownik Linden Lab" />
- <string name="PaymentInfoUsed"
- value="Dane Konta Używane" />
- <string name="PaymentInfoOnFile"
- value="Dane Konta Dostępne" />
- <string name="NoPaymentInfoOnFile"
- value="Brak Danych Konta" />
- <string name="AgeVerified"
- value="Wiek Zweryfikowany" />
- <string name="NotAgeVerified"
- value="Brak Weryfikacji Wieku" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=pl
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Partner:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Pracuś Mówi:
- </text>
- </panel>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident"
+ value="Rezydent" />
+ <string name="AcctTypeTrial"
+ value="Próbne" />
+ <string name="AcctTypeCharterMember"
+ value="Członek-zalożyciel" />
+ <string name="AcctTypeEmployee"
+ value="Pracownik Linden Lab" />
+ <string name="PaymentInfoUsed"
+ value="Dane Konta Używane" />
+ <string name="PaymentInfoOnFile"
+ value="Dane Konta Dostępne" />
+ <string name="NoPaymentInfoOnFile"
+ value="Brak Danych Konta" />
+ <string name="AgeVerified"
+ value="Wiek Zweryfikowany" />
+ <string name="NotAgeVerified"
+ value="Brak Weryfikacji Wieku" />
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=pl
+ </string>
+ <panel name="scroll_content_panel">
+ <panel name="data_panel" >
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text">
+ [SECOND_LIFE]:
+ </text>
+ </panel>
+ </panel>
+ <text name="title_partner_text" value="Partner:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="text_box3">
+ Pracuś Mówi:
+ </text>
+ </panel>
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
index e97e77cfe6..a989cab167 100644
--- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
- <string name="CaptionTextAcctInfo">
- [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
- </string>
- <string name="AcctTypeResident"
- value="Residente" />
- <string name="AcctTypeTrial"
- value="Teste" />
- <string name="AcctTypeCharterMember"
- value="Estatuto do membro" />
- <string name="AcctTypeEmployee"
- value="Contratado da Linden Lab" />
- <string name="PaymentInfoUsed"
- value="Infor. de pagamento utilizadas" />
- <string name="PaymentInfoOnFile"
- value="Infor. de pagamento no arquivo" />
- <string name="NoPaymentInfoOnFile"
- value="Sem infor. de pagamento no arquivo" />
- <string name="AgeVerified"
- value="Idade Verificada" />
- <string name="NotAgeVerified"
- value="Idade não Verificada" />
- <string name="partner_edit_link_url">
- http://www.secondlife.com/account/partners.php?lang=pt
- </string>
- <panel name="scroll_content_panel">
- <panel name="data_panel" >
- <panel name="lifes_images_panel">
- <panel name="second_life_image_panel">
- <text name="second_life_photo_title_text">
- [SECOND_LIFE]:
- </text>
- </panel>
- </panel>
- <text name="title_partner_text" value="Parceiro:"/>
- <panel name="partner_data_panel">
- <text name="partner_text" value="[FIRST] [LAST]"/>
- </panel>
- <text name="text_box3">
- Resposta no Modo Ocupado:
- </text>
- </panel>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="edit_profile_panel">
+ <string name="CaptionTextAcctInfo">
+ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
+ </string>
+ <string name="AcctTypeResident"
+ value="Residente" />
+ <string name="AcctTypeTrial"
+ value="Teste" />
+ <string name="AcctTypeCharterMember"
+ value="Estatuto do membro" />
+ <string name="AcctTypeEmployee"
+ value="Contratado da Linden Lab" />
+ <string name="PaymentInfoUsed"
+ value="Infor. de pagamento utilizadas" />
+ <string name="PaymentInfoOnFile"
+ value="Infor. de pagamento no arquivo" />
+ <string name="NoPaymentInfoOnFile"
+ value="Sem infor. de pagamento no arquivo" />
+ <string name="AgeVerified"
+ value="Idade Verificada" />
+ <string name="NotAgeVerified"
+ value="Idade não Verificada" />
+ <string name="partner_edit_link_url">
+ http://www.secondlife.com/account/partners.php?lang=pt
+ </string>
+ <panel name="scroll_content_panel">
+ <panel name="data_panel" >
+ <panel name="lifes_images_panel">
+ <panel name="second_life_image_panel">
+ <text name="second_life_photo_title_text">
+ [SECOND_LIFE]:
+ </text>
+ </panel>
+ </panel>
+ <text name="title_partner_text" value="Parceiro:"/>
+ <panel name="partner_data_panel">
+ <text name="partner_text" value="[FIRST] [LAST]"/>
+ </panel>
+ <text name="text_box3">
+ Resposta no Modo Ocupado:
+ </text>
+ </panel>
+ </panel>
+</panel>