#
# Copyright (C) 2012 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

#################################################################################
#
# Android Emulator Core Plugin properties
#
#################################################################################

pluginName=MOTODEV Studio for Android Emulator
providerName=Motorola Mobility, Inc.
copyright=Copyright (C) 2012 The Android Open Source Project


# Extension point related labels
extensionPointSkin=Android Emulator Skin
extensionPointVm=Android Emulator VM
extensionPointEmulatorDefinition=Android Emulator Definition

android.emulator.device.name=Android Virtual Device

status.offlineNoData=Offline (no user data)
status.offline=Offline
status.online=Online
status.notavailable=Not available

android.emulator.device.wizard.name=Android Virtual Device
android.emulator.device.property.page.name=Android Virtual Device
android.emulator.device.property.page.startupOptions.name=Startup Options
android.emulator.device.properties.page.name=Device Properties

initEmulatorServiceName=Initialize Device

command.newwizard.name=New Android Virtual Device

toolbarRefreshList=Refresh Android Virtual Devices List

newAvdWizardName=New Android Virtual Device...

resetServiceName=Reset
resetServiceDescription=Service to reset an Android Emulator
stopServiceName=Stop
stopDescription=Service to stop a Android Emulator
startServiceName=Start
startDescription=Service to start a Android Emulator
repairServiceName=Repair
repairDescription=Service to repair a Android Virtual Device

# Perspective related labels
androidEmulatorPerspective=Android Emulator

# View related labels
androidEmulatorViewCategory=Android Emulator
androidEmulatorViewName=Android Emulator
androidMainDisplayViewName=Emulator Main Display

# View menu/toolbar related labels
menuName=Android Emulator Menu
submenuZoom=Zoom
menuZoom25=25%
menuZoom50=50%
menuZoom75=75%
menuZoom100=100%
menuZoomFit=Fit To Window
menuZoomIn = In
menuZoomOut = Out
menuZoomDefault = Default(100%)
toolbarZoomIn = Zoom In
toolbarZoomOut = Zoom Out

# Switch layout labels
submenuLayout=Emulator Layout
toolbarSwitchLayout=Switch Layout
menuSwitchToNextLayout=Switch to Next Layout

# Wizard related labels
android.emulator.wizard.category=Android Emulator
emulatorDefName=Android Emulator 1.0

StartUp_Options_DpiDevice_Label=Screen Resolution (dpi)
StartUp_Options_DpiDevice_Description=Scale the resolution of the emulator to match the screen size of a physical device
StartUp_Options_Scale_Label=Scale
StartUp_Options_Scale_Description=Scale the emulator window
StartUp_Options_BootAnim_Label=Disable Boot Animation
StartUp_Options_BootAnim_Description=Disable the boot animation during emulator startup
StartUp_Options_NoSkin_Label=Don't Show Emulator Skin
StartUp_Options_NoSkin_Description=Disable the emulator's skin
StartUp_Options_Cache_Label=Cache
StartUp_Options_Cache_Description=Use a specific file as the working cache partition image
StartUp_Options_UserData_Label=User Data
StartUp_Options_UserData_Description=Use a specific file as the working user-data disk image
StartUp_Options_InitData_Label=Init User Data
StartUp_Options_InitData_Description=When resetting the user-data image (through -wipe-data), copy the contents of this file to the new user-data disk image. By default, the emulator copies -system/userdata.img.
StartUp_Options_RAM_Label=RAM
StartUp_Options_RAM_Description=Use a specific file as the ramdisk image.
StartUp_Options_SDCard_Label=SD Card
StartUp_Options_SDCard_Description=Use a specific file as the SD card image
StartUp_Options_NoCache_Label=Disable Cache Partition
StartUp_Options_NoCache_Description=Start the emulator without a cache partition
StartUp_Options_WipeData_Label=Wipe User Data
StartUp_Options_WipeData_Description=Reset the current user-data disk image (that is, the file specified by -datadir and -data, or the default file). The emulator deletes all data from the user-data image file, then copies the contents of the file at -inidata data to the image file before starting.
StartUp_Options_DNSServer_Label=DNS Server
StartUp_Options_DNSServer_Description=Use the specified DNS server(s)
StartUp_Options_HTTPProxy_Label=HTTP Proxy
StartUp_Options_HTTPProxy_Description=Make all TCP connections through a specified HTTP/HTTPS proxy
StartUp_Options_NetDelay_Label=Network Latency
StartUp_Options_NetDelay_Description=Set network latency emulation
StartUp_Options_NetSpeed_Label=Network Speed
StartUp_Options_NetSpeed_Description=Set network speed emulation
StartUp_Options_Port_Label=Port Number
StartUp_Options_Port_Description=Set the console port number for this emulator instance
StartUp_Options_NetFast_Label=Max Network Speed / Min Network Latency
StartUp_Options_NetFast_Description=Shortcut for -netspeed full -netdelay none
StartUp_Options_OtherOptions_Label=Other Startup Options
StartUp_Options_OtherOptions_Description=Other Emulator options
StartUp_Options_NoJni_Label=Disable JNI checks
StartUp_Options_NoJni_Description=Disable JNI checks in the Dalvik runtime
StartUp_Options_GPS_Label=Redirect GPS
StartUp_Options_GPS_Description=Redirect NMEA GPS to character device
StartUp_Options_CPUDelay_Description=Slow down emulated CPU speed
StartUp_Options_CPUDelay_Label=CPU Delay
StartUp_UserInterface_Tab_Label=User Interface
StartUp_DiskImages_Tab_Label=Disk Images
StartUp_Network_Tab_Label=Network
StartUp_System_Tab_Label=System
StartUp_Others_Tab_Label=Others