# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: joseph.lee22590@gmail.com-20130411040320-\
#   9fad8y7alp4ynkag
# target_branch: http://bzr.nvaccess.org/nvda/main/
# testament_sha1: a2c7a1bfd56ebef0f3d7b9e5bd1dd93be6b24ac9
# timestamp: 2013-04-10 21:20:57 -0700
# base_revision_id: mhameed@src.gnome.org-20130407140912-\
#   nxcewil6sl1abcuh
# 
# Begin patch
=== modified file 'source/appModules/explorer.py'
--- source/appModules/explorer.py	2013-02-15 21:23:36 +0000
+++ source/appModules/explorer.py	2013-03-14 13:25:35 +0000
@@ -40,7 +40,7 @@
 
 class ClassicStartMenu(Window):
 	# Override the name, as Windows names this the "Application" menu contrary to all documentation.
-	# Translators: The title of the Start menu/screen in your language (only the word start).
+	# Translators: The title of Start menu/screen in your language (only the word start).
 	name = _("Start")
 
 	def event_gainFocus(self):

=== modified file 'source/appModules/outlook.py'
--- source/appModules/outlook.py	2013-02-15 21:23:36 +0000
+++ source/appModules/outlook.py	2013-03-14 13:25:35 +0000
@@ -25,7 +25,7 @@
 	nameList.append(obj.senderName)
 	# Translators: This is presented in outlook or live mail, email subject
 	nameList.append(_("subject: %s")%obj.subject)
-	# Translators: This is presented in outlook or live mail, email received date/time.
+	# Translators: This is presented in outlook or live mail, email received time
 	nameList.append(_("received: %s")%obj.receivedTime)
 
 	text=", ".join(nameList)
@@ -40,7 +40,7 @@
 	nameList=[]
 	nameList.append(obj.to)
 	nameList.append(_("subject: %s")%obj.subject)
-	# Translators: This is presented in outlook or live mail, email sent date/time.
+	# Translators: This is presented in outlook or live mail, email sent date
 	nameList.append(_("sent: %s")%obj.sentOn)
 	return ", ".join(nameList)
 

=== modified file 'source/brailleDisplayDrivers/freedomScientific.py'
--- source/brailleDisplayDrivers/freedomScientific.py	2013-01-11 18:54:20 +0000
+++ source/brailleDisplayDrivers/freedomScientific.py	2013-03-14 13:25:35 +0000
@@ -135,7 +135,7 @@
 	wizWheelActions=[
 		# Translators: The name of a key on a braille display, that scrolls the display to show previous/next part of a long line.
 		(_("display scroll"),("globalCommands","GlobalCommands","braille_scrollBack"),("globalCommands","GlobalCommands","braille_scrollForward")),
-		# Translators: The name of a key on a braille display, that scrolls the display to show the next/previous line..
+		# Translators: The name of a key on a braille display, that scrolls the display to show the next/previous line.
 		(_("line scroll"),("globalCommands","GlobalCommands","braille_previousLine"),("globalCommands","GlobalCommands","braille_nextLine")),
 	]
 

=== modified file 'source/brailleDisplayDrivers/papenmeier.py'
--- source/brailleDisplayDrivers/papenmeier.py	2013-03-04 08:41:15 +0000
+++ source/brailleDisplayDrivers/papenmeier.py	2013-03-14 13:25:35 +0000
@@ -13,7 +13,6 @@
 from logHandler import log
 
 import inputCore
-import brailleInput
 import ftdi2
 import struct
 
@@ -88,16 +87,16 @@
 
 def brl_poll(dev):
 	"""read sequence from braille display"""
-	if dev.inWaiting() > 3:
-		status = []
-		status.append(dev.read(4))
-		if(ord(status[0][0])==STX):#first char must be an STX
-			if status[0][1] == 'K' or status[0][1] == 'L': l = (2*(((ord(status[0][2]) - 0x50) << 4) + (ord(status[0][3]) - 0x50)) +1)
-			else: l=6
-			status.append(dev.read(l))
-		if ord(status[-1][-1]) == ETX:
-			return "".join(status)[1:-1] # strip STX and ETX
-	return ""
+	q = dev.inWaiting()
+	status = []
+	if(q>0):
+		d=dev.read(1)
+		if(ord(d[0])==STX):#first char must be an STX
+			d=dev.read(1)
+			while(ord(d[0])!=ETX): #read until ETX
+				status.append(d[0])
+				d=dev.read(1)
+	return "".join(status)
 
 def brl_decode_trio(keys):
 	"""decode routing keys on Trio"""
@@ -192,7 +191,7 @@
 	"""papenmeier braille display driver.
 	"""
 	name = "papenmeier"
-	# Translators: Names of braille displays.
+# Translators: Names of braille displays.
 	description = _("Papenmeier BRAILLEX newer models")
 
 	@classmethod
@@ -229,7 +228,6 @@
 							self._dev = serial.Serial(port, baudrate = 57600,timeout = BLUETOOTH_TIMEOUT, writeTimeout = BLUETOOTH_TIMEOUT)
 							self.numCells = 40
 							self._proto = 'B'
-							self._voffset = 0
 							log.info("connectBluetooth success")
 						except:
 							log.debugWarning("connectBluetooth failed")
@@ -258,6 +256,7 @@
 		self._proto = None
 		self.connectBrxCom()
 		if(self._baud == 1): return #brxcom is running, skip bluetooth and USB
+		self._modstate = 0
 
 		#try to connect to usb device,
 		#if no usb device is found there may be a bluetooth device
@@ -394,8 +393,6 @@
 			self._keynamesrepeat = {16: 'left2', 17: 'right2', 18: 'left', 19: 'right', 20: 'dn2', 21: 'dn', 22: 'up', 23: 'up2'}
 			x = self.numCells * 2
 			self._keynames = {16: 'left2', 17: 'right2', 18: 'left', 19: 'right', 20: 'dn2', 21: 'dn', 22: 'up', 23: 'up2', x+38: 'r2', x+39: 'r1', 30: 'l2', 31: 'l1'}
-			self._dotNames={32: 'd6', 1: 'd1', 2: 'd2', 4: 'd3', 8: 'd4', 64: 'd7', 128: 'd8', 16: 'd5'}
-			self._thumbs = {1:"rt", 2:"space", 4:"lt"}
 
 	def terminate(self):
 		"""free resources used by this driver"""
@@ -424,7 +421,7 @@
 	def executeGesture(self,gesture):
 		"""executes a gesture"""
 		if(gesture.id == 'r1'):  gesture.id = next(self._r1next)
-		if gesture.id or (gesture.dots or gesture.space): inputCore.manager.executeGesture(gesture)
+		if gesture.id: inputCore.manager.executeGesture(gesture)
 
 	def _handleKeyPresses(self):
 		"""handles key presses and performs a gesture"""
@@ -482,17 +479,6 @@
 
 			"title": ("br(papenmeier):l1,up",),
 			"reportStatusLine": ("br(papenmeier):l2,dn",),
-			"kb:enter": ("br(papenmeier):d8",),
-			"kb:backspace": ("br(papenmeier):d7",),
-			"kb:alt": ("br(papenmeier):lt+d3",),
-			"kb:control": ("br(papenmeier):lt+d2",),
-			"kb:escape": ("br(papenmeier):space+d7",),
-			"kb:control+escape": ("br(papenmeier):lt+d1+d2+d3+d4+d5+d6",),
-			"kb:tab": ("br(papenmeier):space+d3+d7",),
-			"kb:upArrow": ("br(papenmeier):space+d2",),
-			"kb:downArrow": ("br(papenmeier):space+d5",),
-			"kb:leftArrow": ("br(papenmeier):space+d1",),
-			"kb:rightArrow": ("br(papenmeier):space+d4",),
 		}
 	})
 
@@ -500,11 +486,12 @@
 	 "br(papenmeier):upperRouting": "upperRouting",
 	}
 
-class InputGesture(braille.BrailleDisplayGesture, brailleInput.BrailleInputGesture):
+class InputGesture(braille.BrailleDisplayGesture):
 	"""Input gesture for papenmeier displays"""
+
 	source = BrailleDisplayDriver.name
 
-	def __init__(self, keys, driver):
+	def __init__(self, keys,driver):
 		"""create an input gesture and decode keys"""
 		super(InputGesture, self).__init__()
 		self.id=''
@@ -513,29 +500,6 @@
 			self.id=brl_join_keys(brl_decode_key_names_repeat(driver))
 			return
 
-		if keys[0] == 'L' and driver._baud!=1:
-			#get dots
-			z  = ord('0')
-			b = ord(keys[4])-z
-			c = ord(keys[5])-z
-			d = ord(keys[6])-z
-			dots = c << 4 | d
-			thumbs = b&7
-			if thumbs and dots: 
-				names = set()
-				names.update(driver._thumbs[1 << i] for i in xrange(3) if (1 << i) & thumbs)
-				names.update(driver._dotNames[1 << i] for i in xrange(8)if (1 << i) & dots)
-				self.id = "+".join(names)
-				self.space = True
-				self.dots = dots
-			elif dots == 64:
-				self.id = "d7"
-			elif dots == 128:
-				self.id = "d8"
-			elif thumbs == 2: self.space = True
-			else:self.dots = dots
-			return
-
 		if(driver._baud==1):#brxcom
 			if(keys>255 and keys<512):
 				self.routingIndex = keys-256-driver._voffset

=== modified file 'source/controlTypes.py'
--- source/controlTypes.py	2013-02-14 08:49:17 +0000
+++ source/controlTypes.py	2013-04-08 07:50:25 +0000
@@ -187,7 +187,7 @@
 roleLabels={
 	# Translators: The word for an unknown control type.
 	ROLE_UNKNOWN:_("unknown"),
-	# Translators: The word for window of a program suchas document window.
+	# Translators: The word for window of a program such as document window.
 	ROLE_WINDOW:_("window"),
 	# Translators: Used to identify title bar of a program.
 	ROLE_TITLEBAR:_("title bar"),
@@ -303,14 +303,19 @@
 	ROLE_GROUPING:_("grouping"),
 	# Translators: Identifies a property page such as drive properties dialog.
 	ROLE_PROPERTYPAGE:_("property page"),
+	# Translators: Identifies a canvas element on webpages (a box with some background color with some text drawn on the box, like a canvas).
 	ROLE_CANVAS:_("canvas"),
+	# Translators: Identifies a caption (usually a short text identifying a picture or a graphic on websites).
 	ROLE_CAPTION:_("caption"),
+	# Translators: Identifies a check menu item (a menu item with a checkmark as part of the menu item's name).
 	ROLE_CHECKMENUITEM:_("check menu item"),
+	# Translators: Identifies a data edit field.
 	ROLE_DATEEDITOR:_("date edit"),
 	# Translators: Identifies an icon.
 	ROLE_ICON:_("icon"),
+	# Translators: Identifies a directory pane.
 	ROLE_DIRECTORYPANE:_("directory pane"),
-	# Translators: Identifies an embedded object such as flash content.
+	# Translators: Identifies an embedded object such as flash content on webpages.
 	ROLE_EMBEDDEDOBJECT:_("embedded object"),
 	ROLE_ENDNOTE:_("end note"),
 	ROLE_FOOTER:_("footer"),
@@ -338,6 +343,7 @@
 	ROLE_EDITBAR:_("edit bar"),
 	# Translators: Identifies a terminal window such as command prompt.
 	ROLE_TERMINAL:_("terminal"),
+	# Translators: Identifies a rich edit box (an edit box which allows entering formatting commands in addition to text; encountered on webpages and NvDA log viewer).
 	ROLE_RICHEDIT:_("rich edit"),
 	ROLE_RULER:_("ruler"),
 	# Translators: Identifies a scroll pane.
@@ -356,6 +362,7 @@
 	# but which can be undocked from or torn off the menu system
 	# to exist as a separate window.
 	ROLE_TEAROFFMENU:_("tear off menu"),
+	# Translators: Identifies a text frame (a frame window which contains text).
 	ROLE_TEXTFRAME:_("text frame"),
 	# Translators: Identifies a toggle button (a button used to toggle something).
 	ROLE_TOGGLEBUTTON:_("toggle button"),
@@ -389,7 +396,7 @@
 	ROLE_IPADDRESS:_("IP address"),
 	# Translators: Identifies a desktop icon (the icons on the desktop such as computer and various shortcuts for programs).
 	ROLE_DESKTOPICON:_("desktop icon"),
-	# Translators: Identifies an alert message.
+	# Translators: Identifies an alert message such as file download alert in Internet explorer 9 and above.
 	ROLE_ALERT:_("alert"),
 	ROLE_INTERNALFRAME:_("IFrame"),
 	# Translators: Identifies desktop pane (the desktop window).

=== modified file 'source/globalCommands.py'
--- source/globalCommands.py	2013-03-20 07:31:28 +0000
+++ source/globalCommands.py	2013-04-11 04:03:20 +0000
@@ -48,6 +48,7 @@
 		stateOff = _("input help off")
 		state = stateOn if inputCore.manager.isInputHelpActive else stateOff
 		ui.message(state)
+	# Translators: Input help mode message for toggle input help command.
 	script_toggleInputHelp.__doc__=_("Turns input help on or off. When on, any input such as pressing a key on the keyboard will tell you what script is associated with that input, if any.")
 
 	def script_toggleCurrentAppSleepMode(self,gesture):
@@ -63,6 +64,7 @@
 			curApp.sleepMode=True
 			# Translators: This is presented when sleep mode is activated, the focused application is self voicing, such as klango or openbook.
 			ui.message(_("Sleep mode on"))
+	# Translators: Input help mode message for toggle sleep mode command.
 	script_toggleCurrentAppSleepMode.__doc__=_("Toggles  sleep mode on and off for  the active application.")
 	script_toggleCurrentAppSleepMode.allowInSleepMode=True
 
@@ -80,6 +82,7 @@
 			speech.speakTextInfo(info,unit=textInfos.UNIT_LINE,reason=controlTypes.REASON_CARET)
 		else:
 			speech.speakSpelling(info.text)
+	# Translators: Input help mode message for report current line command.
 	script_reportCurrentLine.__doc__=_("Reports the current line under the application cursor. Pressing this key twice will spell the current line")
 
 	def script_leftMouseClick(self,gesture):
@@ -87,6 +90,7 @@
 		ui.message(_("left click"))
 		winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
 		winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
+	# Translators: Input help mode message for left mouse click command.
 	script_leftMouseClick.__doc__=_("Clicks the left mouse button once at the current mouse position")
 
 	def script_rightMouseClick(self,gesture):
@@ -94,6 +98,7 @@
 		ui.message(_("right click"))
 		winUser.mouse_event(winUser.MOUSEEVENTF_RIGHTDOWN,0,0,None,None)
 		winUser.mouse_event(winUser.MOUSEEVENTF_RIGHTUP,0,0,None,None)
+	# Translators: Input help mode message for right mouse click command.
 	script_rightMouseClick.__doc__=_("Clicks the right mouse button once at the current mouse position")
 
 	def script_toggleLeftMouseButton(self,gesture):
@@ -105,6 +110,7 @@
 			# Translators: This is presented when the left mouse button is locked down (used for drag and drop).
 			ui.message(_("left mouse button lock"))
 			winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
+	# Translators: Input help mode message for left mouse lock/unlock toggle command.
 	script_toggleLeftMouseButton.__doc__=_("Locks or unlocks the left mouse button")
 
 	def script_toggleRightMouseButton(self,gesture):
@@ -116,6 +122,7 @@
 			# Translators: This is presented when the right mouse button is locked down (used for drag and drop).
 			ui.message(_("right mouse button lock"))
 			winUser.mouse_event(winUser.MOUSEEVENTF_RIGHTDOWN,0,0,None,None)
+	# Translators: Input help mode message for right mouse lock/unlock command.
 	script_toggleRightMouseButton.__doc__=_("Locks or unlocks the right mouse button")
 
 	def script_reportCurrentSelection(self,gesture):
@@ -131,6 +138,7 @@
 			speech.speakMessage(_("no selection"))
 		else:
 			speech.speakMessage(_("selected %s")%info.text)
+	# Translators: Input help mode message for report current selection command.
 	script_reportCurrentSelection.__doc__=_("Announces the current selection in edit controls and documents. If there is no selection it says so.")
 
 	def script_dateTime(self,gesture):
@@ -139,6 +147,7 @@
 		else:
 			text=winKernel.GetDateFormat(winKernel.LOCALE_USER_DEFAULT, winKernel.DATE_LONGDATE, None, None)
 		ui.message(text)
+	# Translators: Input help mode message for report date and time command.
 	script_dateTime.__doc__=_("If pressed once, reports the current time. If pressed twice, reports the current date")
 
 	def script_increaseSynthSetting(self,gesture):
@@ -149,6 +158,7 @@
 			return
 		settingValue=globalVars.settingsRing.increase()
 		ui.message("%s %s" % (settingName,settingValue))
+	# Translators: Input help mode message for increase synth setting value command.
 	script_increaseSynthSetting.__doc__=_("Increases the currently active setting in the synth settings ring")
 
 	def script_decreaseSynthSetting(self,gesture):
@@ -158,6 +168,7 @@
 			return
 		settingValue=globalVars.settingsRing.decrease()
 		ui.message("%s %s" % (settingName,settingValue))
+	# Translators: Input help mode message for decrease synth setting value command.
 	script_decreaseSynthSetting.__doc__=_("Decreases the currently active setting in the synth settings ring")
 
 	def script_nextSynthSetting(self,gesture):
@@ -167,6 +178,7 @@
 			return
 		nextSettingValue=globalVars.settingsRing.currentSettingValue
 		ui.message("%s %s"%(nextSettingName,nextSettingValue))
+	# Translators: Input help mode message for next synth setting command.
 	script_nextSynthSetting.__doc__=_("Moves to the next available setting in the synth settings ring")
 
 	def script_previousSynthSetting(self,gesture):
@@ -176,6 +188,7 @@
 			return
 		previousSettingValue=globalVars.settingsRing.currentSettingValue
 		ui.message("%s %s"%(previousSettingName,previousSettingValue))
+	# Translators: Input help mode message for previous synth setting command.
 	script_previousSynthSetting.__doc__=_("Moves to the previous available setting in the synth settings ring")
 
 	def script_toggleSpeakTypedCharacters(self,gesture):
@@ -188,6 +201,7 @@
 			state = _("speak typed characters on")
 			config.conf["keyboard"]["speakTypedCharacters"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle speaked typed characters command.
 	script_toggleSpeakTypedCharacters.__doc__=_("Toggles on and off the speaking of typed characters")
 
 	def script_toggleSpeakTypedWords(self,gesture):
@@ -200,6 +214,7 @@
 			state = _("speak typed words on")
 			config.conf["keyboard"]["speakTypedWords"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle speak typed words command.
 	script_toggleSpeakTypedWords.__doc__=_("Toggles on and off the speaking of typed words")
 
 	def script_toggleSpeakCommandKeys(self,gesture):
@@ -212,6 +227,7 @@
 			state = _("speak command keys on")
 			config.conf["keyboard"]["speakCommandKeys"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle speak command keys command.
 	script_toggleSpeakCommandKeys.__doc__=_("Toggles on and off the speaking of typed keys, that are not specifically characters")
 
 	def script_cycleSpeechSymbolLevel(self,gesture):
@@ -227,6 +243,7 @@
 		# which determine what symbols are spoken.
 		# %s will be replaced with the symbol level; e.g. none, some, most and all.
 		ui.message(_("symbol level %s") % name)
+	# Translators: Input help mode message for cycle speech symbol level command.
 	script_cycleSpeechSymbolLevel.__doc__=_("Cycles through speech symbol levels which determine what symbols are spoken")
 
 	def script_moveMouseToNavigatorObject(self,gesture):
@@ -249,6 +266,7 @@
 			y=top+(height/2)
 		winUser.setCursorPos(x,y)
 		mouseHandler.executeMouseMoveEvent(x,y)
+	# Translators: Input help mode message for move mouse to navigator object command.
 	script_moveMouseToNavigatorObject.__doc__=_("Moves the mouse pointer to the current navigator object")
 
 	def script_moveNavigatorObjectToMouse(self,gesture):
@@ -257,6 +275,7 @@
 		obj=api.getMouseObject()
 		api.setNavigatorObject(obj)
 		speech.speakObject(obj)
+	# Translators: Input help mode message for move navigator object to mouse command.
 	script_moveNavigatorObjectToMouse.__doc__=_("Sets the navigator object to the current object under the mouse pointer and speaks it")
 
 	def script_navigatorObject_moveToFlatReviewAtObjectPosition(self,gesture):
@@ -272,6 +291,7 @@
 		else:
 			# Translators: reported when object does not support flat review (example: some graphic window).
 			speech.speakMessage(_("No flat review for this object"))
+	# Translators: Input help mode message for move to flat review command.
 	script_navigatorObject_moveToFlatReviewAtObjectPosition.__doc__=_("Moves to flat review for the screen (or document if currently inside one) and positions the review cursor at the location of the current object")
 
 	def script_navigatorObject_moveToObjectAtFlatReviewPosition(self,gesture):
@@ -286,6 +306,7 @@
 		else:
 			# Translators: Reported when there is no object at flat review position.
 			speech.speakMessage(_("No object at flat review position"))
+	# Translators: Input help mode message for flat review to object command.
 	script_navigatorObject_moveToObjectAtFlatReviewPosition.__doc__=_("Moves navigator object to the object represented by the text at the position of the review cursor within flat review")
 
 	def script_navigatorObject_current(self,gesture):
@@ -323,6 +344,7 @@
 						speech.speakMessage(_("%s copied to clipboard")%text)
 		else:
 			speech.speakObject(curObject,reason=controlTypes.REASON_QUERY)
+	# Translators: Input help mode message for report current navigator object command.
 	script_navigatorObject_current.__doc__=_("Reports the current navigator object. Pressing twice spells this information,and pressing three times Copies name and value of this  object to the clipboard")
 
 	def script_navigatorObject_currentDimensions(self,gesture):
@@ -345,6 +367,7 @@
 		percentHeight=(float(height)/deskHeight)*100
 		# Translators: Reports navigator object's dimensions (example output: object edges positioned 20 per cent from left edge of screen, 10 per cent from top edge of screen, width is 40 per cent of screen, height is 50 per cent of screen).
 		ui.message(_("Object edges positioned {left:.1f} per cent from left edge of screen, {top:.1f} per cent from top edge of screen, width is {width:.1f} per cent of screen, height is {height:.1f} per cent of screen").format(left=percentFromLeft,top=percentFromTop,width=percentWidth,height=percentHeight))
+	# Translators: Input help mode message for report object dimensions command.
 	script_navigatorObject_currentDimensions.__doc__=_("Reports the hight, width and position of the current navigator object")
 
 	def script_navigatorObject_toFocus(self,gesture):
@@ -357,6 +380,7 @@
 		# Translators: Reported when attempting to move the navigator object to focus.
 		speech.speakMessage(_("move to focus"))
 		speech.speakObject(obj,reason=controlTypes.REASON_FOCUS)
+	# Translators: Input help mode message for move navigator object to current focus command.
 	script_navigatorObject_toFocus.__doc__=_("Sets the navigator object to the current focus, and the review cursor to the position of the caret inside it, if possible.")
 
 	def script_navigatorObject_moveFocus(self,gesture):
@@ -381,6 +405,7 @@
 			info=review.copy()
 			info.expand(textInfos.UNIT_LINE)
 			speech.speakTextInfo(info,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move focus to current navigator object command.
 	script_navigatorObject_moveFocus.__doc__=_("Pressed once Sets the keyboard focus to the navigator object, pressed twice sets the system caret to the position of the review cursor")
 
 	def script_navigatorObject_parent(self,gesture):
@@ -396,6 +421,7 @@
 		else:
 			# Translators: Reported when there is no containing (parent) object such as when focused on desktop.
 			speech.speakMessage(_("No containing object"))
+	# Translators: Input help mode message for move to parent object command.
 	script_navigatorObject_parent.__doc__=_("Moves the navigator object to the object containing it")
 
 	def script_navigatorObject_next(self,gesture):
@@ -411,6 +437,7 @@
 		else:
 			# Translators: Reported when there is no next object (current object is the last object).
 			speech.speakMessage(_("No next"))
+	# Translators: Input help mode message for move to next object command.
 	script_navigatorObject_next.__doc__=_("Moves the navigator object to the next object")
 
 	def script_navigatorObject_previous(self,gesture):
@@ -426,6 +453,7 @@
 		else:
 			# Translators: Reported when there is no previous object (current object is the first object).
 			speech.speakMessage(_("No previous"))
+	# Translators: Input help mode message for move to previous object command.
 	script_navigatorObject_previous.__doc__=_("Moves the navigator object to the previous object")
 
 	def script_navigatorObject_firstChild(self,gesture):
@@ -441,6 +469,7 @@
 		else:
 			# Translators: Reported when there is no contained (first child) object such as inside a document.
 			speech.speakMessage(_("No objects inside"))
+	# Translators: Input help mode message for move to first child object command.
 	script_navigatorObject_firstChild.__doc__=_("Moves the navigator object to the first object inside it")
 
 	def script_review_activate(self,gesture):
@@ -473,6 +502,7 @@
 			obj=obj.parent
 		# Translators: the message reported when there is no action to perform on the review position or navigator object.
 		ui.message(_("No action"))
+	# Translators: Input help mode message for activate current object command.
 	script_review_activate.__doc__=_("Performs the default action on the current navigator object (example: presses it if it is a button).")
 
 	def script_review_top(self,gesture):
@@ -481,6 +511,7 @@
 		info.expand(textInfos.UNIT_LINE)
 		speech.speakMessage(_("top"))
 		speech.speakTextInfo(info,unit=textInfos.UNIT_LINE,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to top line command.
 	script_review_top.__doc__=_("Moves the review cursor to the top line of the current navigator object and speaks it")
 
 	def script_review_previousLine(self,gesture):
@@ -493,6 +524,7 @@
 		if res==0:
 			speech.speakMessage(_("top"))
 		speech.speakTextInfo(info,unit=textInfos.UNIT_LINE,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to previous line command.
 	script_review_previousLine.__doc__=_("Moves the review cursor to the previous line of the current navigator object and speaks it")
 
 	def script_review_currentLine(self,gesture):
@@ -503,6 +535,7 @@
 			speech.speakTextInfo(info,unit=textInfos.UNIT_LINE,reason=controlTypes.REASON_CARET)
 		else:
 			speech.spellTextInfo(info,useCharacterDescriptions=scriptCount>1)
+	# Translators: Input help mode message for read current line under review cursor command.
 	script_review_currentLine.__doc__=_("Reports the line of the current navigator object where the review cursor is situated. If this key is pressed twice, the current line will be spelled. Pressing three times will spell the line using character descriptions.")
  
 	def script_review_nextLine(self,gesture):
@@ -515,6 +548,7 @@
 		if res==0:
 			speech.speakMessage(_("bottom"))
 		speech.speakTextInfo(info,unit=textInfos.UNIT_LINE,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to next line command.
 	script_review_nextLine.__doc__=_("Moves the review cursor to the next line of the current navigator object and speaks it")
 
 	def script_review_bottom(self,gesture):
@@ -523,6 +557,7 @@
 		info.expand(textInfos.UNIT_LINE)
 		speech.speakMessage(_("bottom"))
 		speech.speakTextInfo(info,unit=textInfos.UNIT_LINE,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to bottom line command.
 	script_review_bottom.__doc__=_("Moves the review cursor to the bottom line of the current navigator object and speaks it")
 
 	def script_review_previousWord(self,gesture):
@@ -535,6 +570,7 @@
 		if res==0:
 			speech.speakMessage(_("top"))
 		speech.speakTextInfo(info,reason=controlTypes.REASON_CARET,unit=textInfos.UNIT_WORD)
+	# Translators: Input help mode message for move review cursor to previous word command.
 	script_review_previousWord.__doc__=_("Moves the review cursor to the previous word of the current navigator object and speaks it")
 
 	def script_review_currentWord(self,gesture):
@@ -545,6 +581,7 @@
 			speech.speakTextInfo(info,reason=controlTypes.REASON_CARET,unit=textInfos.UNIT_WORD)
 		else:
 			speech.spellTextInfo(info,useCharacterDescriptions=scriptCount>1)
+	# Translators: Input help mode message for report current word under review cursor command.
 	script_review_currentWord.__doc__=_("Speaks the word of the current navigator object where the review cursor is situated. Pressing twice spells the word. Pressing three times spells the word using character descriptions")
 
 	def script_review_nextWord(self,gesture):
@@ -557,6 +594,7 @@
 		if res==0:
 			speech.speakMessage(_("bottom"))
 		speech.speakTextInfo(info,reason=controlTypes.REASON_CARET,unit=textInfos.UNIT_WORD)
+	# Translators: Input help mode message for move review cursor to next word command.
 	script_review_nextWord.__doc__=_("Moves the review cursor to the next word of the current navigator object and speaks it")
 
 	def script_review_startOfLine(self,gesture):
@@ -567,6 +605,7 @@
 		info.expand(textInfos.UNIT_CHARACTER)
 		speech.speakMessage(_("left"))
 		speech.speakTextInfo(info,unit=textInfos.UNIT_CHARACTER,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to start of current line command.
 	script_review_startOfLine.__doc__=_("Moves the review cursor to the first character of the line where it is situated in the current navigator object and speaks it")
 
 	def script_review_previousCharacter(self,gesture):
@@ -585,6 +624,7 @@
 			api.setReviewPosition(charInfo.copy())
 			charInfo.expand(textInfos.UNIT_CHARACTER)
 			speech.speakTextInfo(charInfo,unit=textInfos.UNIT_CHARACTER,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to previous character command.
 	script_review_previousCharacter.__doc__=_("Moves the review cursor to the previous character of the current navigator object and speaks it")
 
 	def script_review_currentCharacter(self,gesture):
@@ -602,6 +642,7 @@
 				speech.speakSpelling(hex(c))
 			except:
 				speech.speakTextInfo(info,unit=textInfos.UNIT_CHARACTER,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for report current character under review cursor command.
 	script_review_currentCharacter.__doc__=_("Reports the character of the current navigator object where the review cursor is situated. Pressing twice reports a description or example of that character. Pressing three times reports the numeric value of the character in decimal and hexadecimal")
 
 	def script_review_nextCharacter(self,gesture):
@@ -620,6 +661,7 @@
 			api.setReviewPosition(charInfo.copy())
 			charInfo.expand(textInfos.UNIT_CHARACTER)
 			speech.speakTextInfo(charInfo,unit=textInfos.UNIT_CHARACTER,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to next character command.
 	script_review_nextCharacter.__doc__=_("Moves the review cursor to the next character of the current navigator object and speaks it")
 
 	def script_review_endOfLine(self,gesture):
@@ -631,6 +673,7 @@
 		info.expand(textInfos.UNIT_CHARACTER)
 		speech.speakMessage(_("right"))
 		speech.speakTextInfo(info,unit=textInfos.UNIT_CHARACTER,reason=controlTypes.REASON_CARET)
+	# Translators: Input help mode message for move review cursor to end of current line command.
 	script_review_endOfLine.__doc__=_("Moves the review cursor to the last character of the line where it is situated in the current navigator object and speaks it")
 
 	def script_speechMode(self,gesture):
@@ -649,6 +692,7 @@
 		speech.cancelSpeech()
 		ui.message(name)
 		speech.speechMode=newMode
+	# Translators: Input help mode message for toggle speech mode command.
 	script_speechMode.__doc__=_("Toggles between the speech modes of off, beep and talk. When set to off NVDA will not speak anything. If beeps then NVDA will simply beep each time it its supposed to speak something. If talk then NVDA wil just speak normally.")
 
 	def script_moveToParentTreeInterceptor(self,gesture):
@@ -666,6 +710,7 @@
 			import eventHandler
 			import wx
 			wx.CallLater(50,eventHandler.executeEvent,"gainFocus",parent.treeInterceptor.rootNVDAObject)
+	# Translators: Input help mode message for move to next document with focus command, mostly used in web browsing to move from embedded object to the webpage document.
 	script_moveToParentTreeInterceptor.__doc__=_("Moves the focus to the next closest document that contains the focus")
 
 	def script_toggleVirtualBufferPassThrough(self,gesture):
@@ -678,22 +723,27 @@
 		# If we're disabling pass-through, re-enable auto-pass-through.
 		vbuf.disableAutoPassThrough = vbuf.passThrough
 		virtualBuffers.reportPassThrough(vbuf)
+	# Translators: Input help mode message for toggle focus and browse mode command in web browsing and other situations.
 	script_toggleVirtualBufferPassThrough.__doc__=_("Toggles between browse mode and focus mode. When in focus mode, keys will pass straight through to the application, allowing you to interact directly with a control. When in browse mode, you can navigate the document with the cursor, quick navigation keys, etc.")
 
 	def script_quit(self,gesture):
 		gui.quit()
+	# Translators: Input help mode message for quit NVDA command.
 	script_quit.__doc__=_("Quits NVDA!")
 
 	def script_showGui(self,gesture):
 		gui.showGui()
+	# Translators: Input help mode message for show NVDA menu command.
 	script_showGui.__doc__=_("Shows the NVDA menu")
 
 	def script_review_sayAll(self,gesture):
 		sayAllHandler.readText(sayAllHandler.CURSOR_REVIEW)
+	# Translators: Input help mode message for say all in review cursor command.
 	script_review_sayAll.__doc__ = _("reads from the review cursor  up to end of current text, moving the review cursor as it goes")
 
 	def script_sayAll(self,gesture):
 		sayAllHandler.readText(sayAllHandler.CURSOR_CARET)
+	# Translators: Input help mode message for say all with system caret command.
 	script_sayAll.__doc__ = _("reads from the system caret up to the end of the text, moving the caret as it goes")
 
 	def script_reportFormatting(self,gesture):
@@ -730,6 +780,7 @@
 			return
 
 		ui.message(" ".join(textList))
+	# Translators: Input help mode message for report formatting command.
 	script_reportFormatting.__doc__ = _("Reports formatting info for the current review cursor position within a document")
 
 	def script_reportCurrentFocus(self,gesture):
@@ -741,6 +792,7 @@
 				speech.speakSpelling(focusObject.name)
 		else:
 			speech.speakMessage(_("no focus"))
+	# Translators: Input help mode message for report current focus command.
 	script_reportCurrentFocus.__doc__ = _("reports the object with focus")
 
 	def script_reportStatusLine(self,gesture):
@@ -768,6 +820,7 @@
 			ui.message(text)
 		else:
 			speech.speakSpelling(text)
+	# Translators: Input help mode message for report status line text command.
 	script_reportStatusLine.__doc__ = _("reads the current application status bar and moves the navigator to it")
 
 	def script_toggleMouseTracking(self,gesture):
@@ -780,6 +833,7 @@
 			state = _("Mouse tracking on")
 			config.conf["mouse"]["enableMouseTracking"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle mouse tracking command.
 	script_toggleMouseTracking.__doc__=_("Toggles the reporting of information as the mouse moves")
 
 	def script_title(self,gesture):
@@ -798,12 +852,14 @@
 		else:
 			if api.copyToClip(title):
 				ui.message(_("%s copied to clipboard")%title)
+	# Translators: Input help mode message for report title bar command.
 	script_title.__doc__=_("Reports the title of the current application or foreground window. If pressed twice, spells the title. If pressed three times, copies the title to the clipboard")
 
 	def script_speakForeground(self,gesture):
 		obj=api.getForegroundObject()
 		if obj:
 			sayAllHandler.readObjects(obj)
+	# Translators: Input help mode message for read foreground object command (usually the foreground window).
 	script_speakForeground.__doc__ = _("speaks the current foreground object")
 
 	def script_test_navigatorDisplayModelText(self,gesture):
@@ -815,6 +871,7 @@
 	def script_navigatorObject_devInfo(self,gesture):
 		obj=api.getNavigatorObject()
 		log.info("Developer info for navigator object:\n%s" % "\n".join(obj.devInfo), activateLogViewer=True)
+	# Translators: Input help mode message for developer info for current navigator object command, used by developers to examine technical info on navigator object. This command also serves as a shortcut to open NVDA log viewer.
 	script_navigatorObject_devInfo.__doc__ = _("Logs information about the current navigator object which is useful to developers and activates the log viewer so the information can be examined.")
 
 	def script_toggleProgressBarOutput(self,gesture):
@@ -836,6 +893,7 @@
 			# Translators: A mode where both speech and beeps will indicate progress bar updates.
 			ui.message(_("beep and speak progress bar updates"))
 		config.conf["presentation"]["progressBarUpdates"]["progressBarOutputMode"]=outputMode
+	# Translators: Input help mode message for toggle progress bar output command.
 	script_toggleProgressBarOutput.__doc__=_("Toggles between beeps, speech, beeps and speech, and off, for reporting progress bar updates")
 
 	def script_toggleReportDynamicContentChanges(self,gesture):
@@ -848,6 +906,7 @@
 			state = _("report dynamic content changes on")
 			config.conf["presentation"]["reportDynamicContentChanges"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle dynamic content changes command.
 	script_toggleReportDynamicContentChanges.__doc__=_("Toggles on and off the reporting of dynamic content changes, such as new text in dos console windows")
 
 	def script_toggleCaretMovesReviewCursor(self,gesture):
@@ -860,6 +919,7 @@
 			state = _("caret moves review cursor on")
 			config.conf["reviewCursor"]["followCaret"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle caret moves review cursor command.
 	script_toggleCaretMovesReviewCursor.__doc__=_("Toggles on and off the movement of the review cursor due to the caret moving.")
 
 	def script_toggleFocusMovesNavigatorObject(self,gesture):
@@ -872,6 +932,7 @@
 			state = _("focus moves navigator object on")
 			config.conf["reviewCursor"]["followFocus"]=True
 		ui.message(state)
+	# Translators: Input help mode message for toggle focus moves navigator object command.
 	script_toggleFocusMovesNavigatorObject.__doc__=_("Toggles on and off the movement of the navigator object due to focus changes") 
 
 	#added by Rui Batista<ruiandrebatista@gmail.com> to implement a battery status script
@@ -895,12 +956,14 @@
 			# Translators: This is the estimated remaining runtime of the laptop battery.
 			text += _("{hours:d} hours and {minutes:d} minutes remaining") .format(hours=sps.BatteryLifeTime / 3600, minutes=(sps.BatteryLifeTime % 3600) / 60)
 		ui.message(text)
+	# Translators: Input help mode message for report battery status command.
 	script_say_battery_status.__doc__ = _("reports battery status and time remaining if AC is not plugged in")
 
 	def script_passNextKeyThrough(self,gesture):
 		keyboardHandler.passNextKeyThrough()
 		# Translators: Spoken to indicate that the next key press will be sent straight to the current program as though NVDA is not running.
 		ui.message(_("Pass next key through"))
+	# Translators: Input help mode message for pass next key through command.
 	script_passNextKeyThrough.__doc__=_("The next key that is pressed will not be handled at all by NVDA, it will be passed directly through to Windows.")
 
 	def script_reportAppModuleInfo(self,gesture):
@@ -917,42 +980,52 @@
 			# This message will not be presented if there is no module for the current program.
 			message += _(" and currently loaded module is %s") % mod.appModuleName.split(".")[0]
 		ui.message(message)
+	# Translators: Input help mode message for report current program name and app module name command.
 	script_reportAppModuleInfo.__doc__ = _("Speaks the filename of the active application along with the name of the currently loaded appModule")
 
 	def script_activateGeneralSettingsDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onGeneralSettingsCommand, None)
+	# Translators: Input help mode message for go to general settings dialog command.
 	script_activateGeneralSettingsDialog.__doc__ = _("Shows the NVDA general settings dialog")
 
 	def script_activateSynthesizerDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onSynthesizerCommand, None)
+	# Translators: Input help mode message for go to synthesizer dialog command.
 	script_activateSynthesizerDialog.__doc__ = _("Shows the NVDA synthesizer dialog")
 
 	def script_activateVoiceDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onVoiceCommand, None)
+	# Translators: Input help mode message for go to voice settings dialog command.
 	script_activateVoiceDialog.__doc__ = _("Shows the NVDA voice settings dialog")
 
 	def script_activateKeyboardSettingsDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onKeyboardSettingsCommand, None)
+	# Translators: Input help mode message for go to keyboard settings dialog command.
 	script_activateKeyboardSettingsDialog.__doc__ = _("Shows the NVDA keyboard settings dialog")
 
 	def script_activateMouseSettingsDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onMouseSettingsCommand, None)
+	# Translators: Input help mode message for go to mouse settings dialog command.
 	script_activateMouseSettingsDialog.__doc__ = _("Shows the NVDA mouse settings dialog")
 
 	def script_activateObjectPresentationDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame. onObjectPresentationCommand, None)
+	# Translators: Input help mode message for go to object presentation dialog command.
 	script_activateObjectPresentationDialog.__doc__ = _("Shows the NVDA object presentation settings dialog")
 
 	def script_activateBrowseModeDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onBrowseModeCommand, None)
+	# Translators: Input help mode message for go to browse mode dialog command.
 	script_activateBrowseModeDialog.__doc__ = _("Shows the NVDA browse mode settings dialog")
 
 	def script_activateDocumentFormattingDialog(self, gesture):
 		wx.CallAfter(gui.mainFrame.onDocumentFormattingCommand, None)
+	# Translators: Input help mode message for go to document formatting dialog command.
 	script_activateDocumentFormattingDialog.__doc__ = _("Shows the NVDA document formatting settings dialog")
 
 	def script_saveConfiguration(self,gesture):
 		wx.CallAfter(gui.mainFrame.onSaveConfigurationCommand, None)
+	# Translators: Input help mode message for save current configuration command.
 	script_saveConfiguration.__doc__ = _("Saves the current NVDA configuration")
 
 	def script_revertConfiguration(self,gesture):
@@ -961,6 +1034,7 @@
 			gui.mainFrame.onRevertToSavedConfigurationCommand(None)
 		elif scriptCount==2:
 			gui.mainFrame.onRevertToDefaultConfigurationCommand(None)
+	# Translators: Input help mode message for apply last saved or default settings command.
 	script_revertConfiguration.__doc__ = _("Pressing once reverts the current configuration to the most recently saved state. Pressing three times reverts to factory defaults.")
 
 	def script_activatePythonConsole(self,gesture):
@@ -971,6 +1045,7 @@
 			pythonConsole.initialize()
 		pythonConsole.consoleUI.console.updateNamespaceSnapshotVars()
 		pythonConsole.activate()
+	# Translators: Input help mode message for activate python console command.
 	script_activatePythonConsole.__doc__ = _("Activates the NVDA Python Console, primarily useful for development")
 
 	def script_braille_toggleTether(self, gesture):
@@ -982,6 +1057,7 @@
 			tetherMsg = _("focus")
 		# Translators: Reports which position braille is tethered to (braille can be tethered to either focus or review position).
 		ui.message(_("Braille tethered to %s") % tetherMsg)
+	# Translators: Input help mode message for toggle braille tether to command (tethered means connected to or follows).
 	script_braille_toggleTether.__doc__ = _("Toggle tethering of braille between the focus and the review position")
 
 	def script_reportClipboardText(self,gesture):
@@ -999,12 +1075,14 @@
 			# Translators: If the number of characters on the clipboard is greater than about 1000, it reports this message and gives number of characters on the clipboard.
 			# Example output: The clipboard contains a large portion of text. It is 2300 characters long.
 			ui.message(_("The clipboard contains a large portion of text. It is %s characters long") % len(text))
+	# Translators: Input help mode message for report clipboard text command.
 	script_reportClipboardText.__doc__ = _("Reports the text on the Windows clipboard")
 
 	def script_review_markStartForCopy(self, gesture):
 		self._copyStartMarker = api.getReviewPosition().copy()
 		# Translators: Indicates start of review cursor text to be copied to clipboard.
 		ui.message(_("Start marked"))
+	# Translators: Input help mode message for mark review cursor position for copy command (that is, marks the current review cursor position as the starting point for text to be copied).
 	script_review_markStartForCopy.__doc__ = _("Marks the current position of the review cursor as the start of text to be copied")
 
 	def script_review_copy(self, gesture):
@@ -1027,34 +1105,41 @@
 			ui.message(_("No text to copy"))
 			return
 		self._copyStartMarker = None
+	# Translators: Input help mode message for copy selected review cursor text to clipboard command.
 	script_review_copy.__doc__ = _("Retrieves the text from the previously set start marker up to and including the current position of the review cursor and copies it to the clipboard")
 
 	def script_braille_scrollBack(self, gesture):
 		braille.handler.scrollBack()
+	# Translators: Input help mode message for a braille command.
 	script_braille_scrollBack.__doc__ = _("Scrolls the braille display back")
 	script_braille_scrollBack.bypassInputHelp = True
 
 	def script_braille_scrollForward(self, gesture):
 		braille.handler.scrollForward()
+	# Translators: Input help mode message for a braille command.
 	script_braille_scrollForward.__doc__ = _("Scrolls the braille display forward")
 	script_braille_scrollForward.bypassInputHelp = True
 
 	def script_braille_routeTo(self, gesture):
 		braille.handler.routeTo(gesture.routingIndex)
+	# Translators: Input help mode message for a braille command.
 	script_braille_routeTo.__doc__ = _("Routes the cursor to or activates the object under this braille cell")
 
 	def script_braille_previousLine(self, gesture):
 		if braille.handler.buffer.regions: 
 			braille.handler.buffer.regions[-1].previousLine(start=True)
+	# Translators: Input help mode message for a braille command.
 	script_braille_previousLine.__doc__ = _("Moves the braille display to the previous line")
 
 	def script_braille_nextLine(self, gesture):
 		if braille.handler.buffer.regions: 
 			braille.handler.buffer.regions[-1].nextLine()
+	# Translators: Input help mode message for a braille command.
 	script_braille_nextLine.__doc__ = _("Moves the braille display to the next line")
 
 	def script_braille_dots(self, gesture):
 		brailleInput.handler.input(gesture.dots)
+	# Translators: Input help mode message for a braille command.
 	script_braille_dots.__doc__= _("Inputs braille dots via the braille keyboard")
 
 	def script_reloadPlugins(self, gesture):
@@ -1064,6 +1149,7 @@
 		NVDAObject.clearDynamicClassCache()
 		# Translators: Presented when plugins (app modules and global plugins) are reloaded.
 		ui.message(_("Plugins reloaded"))
+	# Translators: Input help mode message for reload plugins command.
 	script_reloadPlugins.__doc__=_("Reloads app modules and global plugins without restarting NVDA, which can be Useful for developers")
 
 	def script_navigatorObject_nextInFlow(self,gesture):
@@ -1085,7 +1171,7 @@
 		else:
 			# Translators: a message when there is no next object when navigating
 			ui.message(_("no next"))
-	script_navigatorObject_nextInFlow.__doc__=_("Moves to the next object in a flattened view of the object navigation hyrarchi")
+	script_navigatorObject_nextInFlow.__doc__=_("Moves to the next object in a flattened view of the object navigation hierarchy")
 
 	def script_navigatorObject_previousInFlow(self,gesture):
 		curObject=api.getNavigatorObject()
@@ -1101,7 +1187,7 @@
 		else:
 			# Translators: a message when there is no next object when navigating
 			ui.message(_("no next"))
-	script_navigatorObject_previousInFlow.__doc__=_("Moves to the previous object in a flattened view of the object navigation hyrarchi")
+	script_navigatorObject_previousInFlow.__doc__=_("Moves to the previous object in a flattened view of the object navigation hierarchy")
 
 	def script_touch_changeMode(self,gesture):
 		mode=touchHandler.handler._curTouchMode

=== modified file 'source/gui/__init__.py'
--- source/gui/__init__.py	2012-09-14 00:14:35 +0000
+++ source/gui/__init__.py	2013-02-08 13:39:56 +0000
@@ -131,20 +131,25 @@
 
 	def onRevertToSavedConfigurationCommand(self,evt):
 		queueHandler.queueFunction(queueHandler.eventQueue,core.resetConfiguration)
+		# Translators: Reported when last saved configuration has been applied by using revert to saved configuration option in NVDA menu.
 		queueHandler.queueFunction(queueHandler.eventQueue,ui.message,_("Configuration applied"))
 
 	def onRevertToDefaultConfigurationCommand(self,evt):
 		queueHandler.queueFunction(queueHandler.eventQueue,core.resetConfiguration,factoryDefaults=True)
+		# Translators: Reported when configuration has been restored to defaults by using restore configuration to factory defaults item in NVDA menu.
 		queueHandler.queueFunction(queueHandler.eventQueue,ui.message,_("Configuration restored to factory defaults"))
 
 	def onSaveConfigurationCommand(self,evt):
 		if globalVars.appArgs.secure:
+			# Translators: Reported when current configuration cannot be saved while NVDA is running in secure mode such as in Windows login screen.
 			queueHandler.queueFunction(queueHandler.eventQueue,ui.message,_("Cannot save configuration - NVDA in secure mode"))
 			return
 		try:
 			config.save()
+			# Translators: Reported when current configuration has been saved.
 			queueHandler.queueFunction(queueHandler.eventQueue,ui.message,_("Configuration saved"))
 		except:
+			# Translators: Message shown when current configuration cannot be saved such as when running NVDA from a CD.
 			messageBox(_("Could not save configuration - probably read only file system"),_("Error"),wx.OK | wx.ICON_ERROR)
 
 	def _popupSettingsDialog(self, dialog, *args, **kwargs):
@@ -154,6 +159,7 @@
 		try:
 			dialog(self, *args, **kwargs).Show()
 		except SettingsDialog.MultiInstanceError:
+			# Translators: Message shown when attempting to open another NVDA settings dialog when one is already open (example: when trying to open keyboard settings when general settings dialog is open).
 			messageBox(_("Please close the other NVDA settings dialog first"),_("Error"),style=wx.OK | wx.ICON_ERROR)
 		self.postPopup()
 
@@ -171,6 +177,7 @@
 		if config.conf["general"]["askToExit"]:
 			if isInMessageBox:
 				return
+			# Translators: Message shown to ask if user really wishes to quit NVDA.
 			if messageBox(_("Are you sure you want to quit NVDA?"), _("Exit NVDA"), wx.YES_NO|wx.ICON_WARNING) == wx.YES:
 				canExit=True
 		else:
@@ -468,14 +475,17 @@
 	)
 
 	def __init__(self, parent):
+		# Translators: The title of the Welcome dialog when user starts NVDA for the first time.
 		super(WelcomeDialog, self).__init__(parent, wx.ID_ANY, _("Welcome to NVDA"))
 		mainSizer=wx.BoxSizer(wx.VERTICAL)
 		welcomeText = wx.StaticText(self, wx.ID_ANY, self.WELCOME_MESSAGE)
 		mainSizer.Add(welcomeText,border=20,flag=wx.LEFT|wx.RIGHT|wx.TOP)
+		# Translators: The name of a group of options in NVDA welcome dialog.
 		optionsSizer = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Options")), wx.HORIZONTAL)
 		self.capsAsNVDAModifierCheckBox = wx.CheckBox(self, wx.ID_ANY, _("Use CapsLock as an NVDA modifier key"))
 		self.capsAsNVDAModifierCheckBox.SetValue(config.conf["keyboard"]["useCapsLockAsNVDAModifierKey"])
 		optionsSizer.Add(self.capsAsNVDAModifierCheckBox,flag=wx.TOP|wx.RIGHT,border=10)
+		# Translators: This is a label for a checkbox in welcome dialog to show welcome dialog at startup.
 		self.showWelcomeDialogAtStartupCheckBox = wx.CheckBox(self, wx.ID_ANY, _("Show this dialog when NVDA starts"))
 		self.showWelcomeDialogAtStartupCheckBox.SetValue(config.conf["general"]["showWelcomeDialogAtStartup"])
 		optionsSizer.Add(self.showWelcomeDialogAtStartupCheckBox,flag=wx.TOP|wx.LEFT,border=10)
@@ -517,6 +527,7 @@
 """)
 
 	def __init__(self, parent):
+		# Translators: The title of the dialog to tell users that there are erros in the configuration file.
 		super(ConfigFileErrorDialog, self).__init__(parent, wx.ID_ANY, _("Configuration File Error"))
 		mainSizer=wx.BoxSizer(wx.VERTICAL)
 		messageText = wx.StaticText(self, wx.ID_ANY, self.MESSAGE)
@@ -551,10 +562,12 @@
 		super(LauncherDialog, self).__init__(parent, title=versionInfo.name)
 		mainSizer = wx.BoxSizer(wx.VERTICAL)
 
+		# Translators: The label of the license text which will be shown when NVDA installation program starts.
 		sizer = wx.StaticBoxSizer(wx.StaticBox(self, label=_("License Agreement")), wx.VERTICAL)
 		ctrl = wx.TextCtrl(self, size=(500, 400), style=wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH)
 		ctrl.Value = codecs.open(getDocFilePath("copying.txt", False), "r", encoding="UTF-8").read()
 		sizer.Add(ctrl)
+		# Translators: The label for a checkbox in NvDA installation program to agree to the license agreement.
 		ctrl = self.licenseAgreeCheckbox = wx.CheckBox(self, label=_("I &agree"))
 		ctrl.Value = False
 		sizer.Add(ctrl)
@@ -563,14 +576,17 @@
 
 		sizer = wx.GridSizer(rows=2, cols=2)
 		self.actionButtons = []
+		# Translators: The label of the button in NVDA installation program to install NvDA on the user's computer.
 		ctrl = wx.Button(self, label=_("&Install NVDA on this computer"))
 		sizer.Add(ctrl)
 		ctrl.Bind(wx.EVT_BUTTON, lambda evt: self.onAction(evt, mainFrame.onInstallCommand))
 		self.actionButtons.append(ctrl)
+		# Translators: The label of the button in NVDA installation program to create a portable version of NVDA.
 		ctrl = wx.Button(self, label=_("Create &portable copy"))
 		sizer.Add(ctrl)
 		ctrl.Bind(wx.EVT_BUTTON, lambda evt: self.onAction(evt, mainFrame.onCreatePortableCopyCommand))
 		self.actionButtons.append(ctrl)
+		# Translators: The label of the button in NVDA installation program to continue using the installation program as a temporary copy of NVDA.
 		ctrl = wx.Button(self, label=_("&Continue running"))
 		sizer.Add(ctrl)
 		ctrl.Bind(wx.EVT_BUTTON, self.onContinueRunning)

=== modified file 'source/gui/addonGui.py'
--- source/gui/addonGui.py	2012-08-23 11:39:11 +0000
+++ source/gui/addonGui.py	2013-02-08 14:56:51 +0000
@@ -29,21 +29,30 @@
 		entriesLabel=wx.StaticText(self,-1,label=_("Installed Add-ons"))
 		entriesSizer.Add(entriesLabel)
 		self.addonsList=wx.ListCtrl(self,-1,style=wx.LC_REPORT|wx.LC_SINGLE_SEL,size=(550,350))
+		# Translators: The label for a column in add-ons list used to identify add-on package name (example: package is OCR).
 		self.addonsList.InsertColumn(0,_("Package"),width=150)
+		# Translators: The label for a column in add-ons list used to identify add-on's running status (example: status is running).
 		self.addonsList.InsertColumn(1,_("Status"),width=50)
+		# Translators: The label for a column in add-ons list used to identify add-on's version (example: version is 0.3).
 		self.addonsList.InsertColumn(2,_("Version"),width=50)
+		# Translators: The label for a column in add-ons list used to identify add-on's author (example: author is NV Access).
 		self.addonsList.InsertColumn(3,_("Author"),width=300)
 		self.addonsList.Bind(wx.EVT_LIST_ITEM_FOCUSED, self.onListItemSelected)
 		entriesSizer.Add(self.addonsList,proportion=8)
 		settingsSizer.Add(entriesSizer)
 		entryButtonsSizer=wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a button in Add-ons Manager dialog to show information about the selected add-on.
 		self.aboutButton=wx.Button(self,label=_("&About add-on..."))
 		self.aboutButton.Disable()
 		self.aboutButton.Bind(wx.EVT_BUTTON,self.onAbout)
 		entryButtonsSizer.Add(self.aboutButton)
+		# Translators: The label for a button in Add-ons Manager dialog to install an add-on.
 		self.addButton=wx.Button(self,label=_("&Install..."))
 		self.addButton.Bind(wx.EVT_BUTTON,self.OnAddClick)
 		entryButtonsSizer.Add(self.addButton)
+		# Translators: The label for a button to remove either:
+		# Remove the selected add-on in Add-ons Manager dialog.
+		# Remove a speech dictionary entry.
 		self.removeButton=wx.Button(self,label=_("&Remove"))
 		self.removeButton.Disable()
 		self.removeButton.Bind(wx.EVT_BUTTON,self.OnRemoveClick)

=== modified file 'source/gui/installerGui.py'
--- source/gui/installerGui.py	2012-08-05 01:39:37 +0000
+++ source/gui/installerGui.py	2013-02-08 13:39:56 +0000
@@ -63,7 +63,7 @@
 		# Translators: The message displayed to the user after NVDA is installed
 		# and the installed copy is about to be started.
 		gui.messageBox(msg+_("Please press OK to start the installed copy."),
-			# Translators: The title of a dialolg presented to indicate a successful operation.
+			# Translators: The title of a dialog presented to indicate a successful operation.
 			_("Success"))
 	shellapi.ShellExecute(None, None,
 		os.path.join(installer.defaultInstallPath,'nvda.exe'),

=== modified file 'source/gui/logViewer.py'
--- source/gui/logViewer.py	2011-06-02 04:47:23 +0000
+++ source/gui/logViewer.py	2013-02-08 13:39:56 +0000
@@ -14,6 +14,7 @@
 	"""
 
 	def __init__(self, parent):
+		# Translators: The title of the NVDA log viewer window.
 		super(LogViewer, self).__init__(parent, wx.ID_ANY, _("NVDA Log Viewer"))
 		self.Bind(wx.EVT_ACTIVATE, self.onActivate)
 		self.Bind(wx.EVT_CLOSE, self.onClose)
@@ -26,6 +27,7 @@
 
 		menuBar = wx.MenuBar()
 		menu = wx.Menu()
+		# Translators: The label for a menu item in NVDA log viewer to refresh log messages.
 		item = menu.Append(wx.ID_ANY, _("Refresh	F5"))
 		self.Bind(wx.EVT_MENU, self.refresh, item)
 		item = menu.Append(wx.ID_SAVEAS)

=== modified file 'source/gui/settingsDialogs.py'
--- source/gui/settingsDialogs.py	2013-01-28 19:28:35 +0000
+++ source/gui/settingsDialogs.py	2013-02-08 14:56:51 +0000
@@ -112,18 +112,24 @@
 	# Translators: This is the label for the general settings dialog.
 	title = _("General Settings")
 	LOG_LEVELS = (
+		# Translators: One of the log levels of NVDA (the info mode shows info as NVDA runs).
 		(log.INFO, _("info")),
+		# Translators: One of the log levels of NVDA (the debug warning shows debugging messages and warnings as NVDA runs).
 		(log.DEBUGWARNING, _("debug warning")),
+		# Translators: One of the log levels of NVDA (the input/output shows keyboard commands and/or braille commands as well as speech and/or braille output of NVDA).
 		(log.IO, _("input/output")),
+		# Translators: One of the log levels of NVDA (the debug mode shows debug messages as NVDA runs).
 		(log.DEBUG, _("debug"))
 	)
 
 	def makeSettings(self, settingsSizer):
 		languageSizer=wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in general settings to select NVDA's interface language (once selected, NVDA must be restarted; the option user default means the user's Windows language will be used).
 		languageLabel=wx.StaticText(self,-1,label=_("&Language (requires restart to fully take effect):"))
 		languageSizer.Add(languageLabel)
 		languageListID=wx.NewId()
 		self.languageNames=languageHandler.getAvailableLanguages()
+		# Translators: The list of languages for NVDA.
 		self.languageList=wx.Choice(self,languageListID,name=_("Language"),choices=[x[1] for x in self.languageNames])
 		self.languageList.SetToolTip(wx.ToolTip("Choose the language NVDA's messages and user interface should be presented in."))
 		try:
@@ -136,18 +142,22 @@
 		if globalVars.appArgs.secure:
 			self.languageList.Disable()
 		settingsSizer.Add(languageSizer,border=10,flag=wx.BOTTOM)
+		# Translators: The label for a setting in general settings to save current configuration when NVDA exits (if it is not checked, user needs to save configuration before quitting NVDA).
 		self.saveOnExitCheckBox=wx.CheckBox(self,wx.NewId(),label=_("&Save configuration on exit"))
 		self.saveOnExitCheckBox.SetValue(config.conf["general"]["saveConfigurationOnExit"])
 		if globalVars.appArgs.secure:
 			self.saveOnExitCheckBox.Disable()
 		settingsSizer.Add(self.saveOnExitCheckBox,border=10,flag=wx.BOTTOM)
+		# Translators: The label for a setting in general settings to ask before quitting NVDA (if not checked, NVDA will exit without asking the user for confirmation).
 		self.askToExitCheckBox=wx.CheckBox(self,wx.NewId(),label=_("&Warn before exiting NVDA"))
 		self.askToExitCheckBox.SetValue(config.conf["general"]["askToExit"])
 		settingsSizer.Add(self.askToExitCheckBox,border=10,flag=wx.BOTTOM)
 		logLevelSizer=wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in general settings to select logging level of NVDA as it runs (available options and what they are logged are found under comments for the logging level messages themselves).
 		logLevelLabel=wx.StaticText(self,-1,label=_("L&ogging level:"))
 		logLevelSizer.Add(logLevelLabel)
 		logLevelListID=wx.NewId()
+		# Translators: A combo box to choose log level (possible options are info, debug warning, input/output and debug).
 		self.logLevelList=wx.Choice(self,logLevelListID,name=_("Log level"),choices=[name for level, name in self.LOG_LEVELS])
 		curLevel = log.getEffectiveLevel()
 		for index, (level, name) in enumerate(self.LOG_LEVELS):
@@ -158,23 +168,26 @@
 			log.debugWarning("Could not set log level list to current log level") 
 		logLevelSizer.Add(self.logLevelList)
 		settingsSizer.Add(logLevelSizer,border=10,flag=wx.BOTTOM)
+		# Translators: The label for a setting in general settings to allow NVDA to start after logging onto Windows (if checked, NvDA will start automatically after loggin into Windows; if not, user must start NVDA by pressing the shortcut key (CTRL+Alt+N by default).
 		self.startAfterLogonCheckBox = wx.CheckBox(self, wx.ID_ANY, label=_("&Automatically start NVDA after I log on to Windows"))
 		self.startAfterLogonCheckBox.SetValue(config.getStartAfterLogon())
 		if globalVars.appArgs.secure or not config.isInstalledCopy():
 			self.startAfterLogonCheckBox.Disable()
 		settingsSizer.Add(self.startAfterLogonCheckBox)
+		# Translators: The label for a setting in general settings to allow NVDA to come up in Windows login screen (useful if user needs to enter passwords or if multiple user accounts are present to allow user to choose the correct account).
 		self.startOnLogonScreenCheckBox = wx.CheckBox(self, wx.ID_ANY, label=_("Use NVDA on the Windows logon screen (requires administrator privileges)"))
 		self.startOnLogonScreenCheckBox.SetValue(config.getStartOnLogonScreen())
 		if globalVars.appArgs.secure or not config.isServiceInstalled():
 			self.startOnLogonScreenCheckBox.Disable()
 		settingsSizer.Add(self.startOnLogonScreenCheckBox)
+		# Translators: The label for a button in general settings to copy current user settings to system settings (to allow current settings to be used in secure screens such as User Account Control (UAC) dialog).
 		self.copySettingsButton= wx.Button(self, wx.ID_ANY, label=_("Use currently saved settings on the logon and other secure screens (requires administrator privileges)"))
 		self.copySettingsButton.Bind(wx.EVT_BUTTON,self.onCopySettings)
 		if globalVars.appArgs.secure or not config.isServiceInstalled():
 			self.copySettingsButton.Disable()
 		settingsSizer.Add(self.copySettingsButton)
 		if updateCheck:
-			# Translators: The label of a checkbox to toggle automatic checking for updated versions of NVDA.
+			# Translators: The label of a checkbox in general settings to toggle automatic checking for updated versions of NVDA (if not checked, user must check for updates manually).
 			item=self.autoCheckForUpdatesCheckBox=wx.CheckBox(self,label=_("Automatically check for &updates to NVDA"))
 			item.Value=config.conf["update"]["autoCheck"]
 			if globalVars.appArgs.secure:
@@ -188,7 +201,9 @@
 		for packageType in ('addons','appModules','globalPlugins','brailleDisplayDrivers','synthDrivers'):
 			if len(os.listdir(os.path.join(globalVars.appArgs.configPath,packageType)))>0:
 				if gui.messageBox(
+					# Translators: A message to warn the user when attempting to copy current settings to system settings.
 					_("Custom plugins were detected in your user settings directory. Copying these to the system profile could be a security risk. Do you still wish to copy your settings?"),
+					# Translators: The title of the warning dialog displayed when trying to copy settings for use in secure screens.
 					_("Warning"),wx.YES|wx.NO|wx.ICON_WARNING,self
 				)==wx.NO:
 					return
@@ -220,8 +235,10 @@
 		progressDialog.done()
 		del progressDialog
 		if not res:
+			# Translators: The message displayed when errors were found while trying to copy current configuration to system settings.
 			gui.messageBox(_("Error copying NVDA user settings"),_("Error"),wx.OK|wx.ICON_ERROR,self)
 		else:
+			# Translators: The message displayed when copying configuration to system settings was successful.
 			gui.messageBox(_("Successfully copied NVDA user settings"),_("Success"),wx.OK|wx.ICON_INFORMATION,self)
 
 	def onOk(self,evt):
@@ -252,7 +269,9 @@
 			updateCheck.initialize()
 		if self.oldLanguage!=newLanguage:
 			if gui.messageBox(
+				# Translators: The message displayed after NVDA interface language has been changed.
 				_("For the new language to take effect, the configuration must be saved and NVDA must be restarted. Press enter to save and restart NVDA, or cancel to manually save and exit at a later time."),
+				# Translators: The title of the dialog which appears when the user changed NVDA's interface language.
 				_("Language Configuration Change"),wx.OK|wx.CANCEL|wx.ICON_WARNING,self
 			)==wx.OK:
 				config.save()
@@ -444,18 +463,18 @@
 		#Create controls for Synth Settings
 		self.updateVoiceSettings()
 		# Translators: This is the label for a checkbox in the
-		# voice settings dialog.
+		# voice settings dialog (if checked, text will be read using the voice for the language of the text).
 		self.autoLanguageSwitchingCheckbox=wx.CheckBox(self,wx.NewId(),label=_("Automatic language switching (when supported)"))
 		self.autoLanguageSwitchingCheckbox.SetValue(config.conf["speech"]["autoLanguageSwitching"])
 		settingsSizer.Add(self.autoLanguageSwitchingCheckbox,border=10,flag=wx.BOTTOM)
 		# Translators: This is the label for a checkbox in the
-		# voice settings dialog.
+		# voice settings dialog (if checked, different voices for dialects will be used to read text in that dialect).
 		self.autoDialectSwitchingCheckbox=wx.CheckBox(self,wx.NewId(),label=_("Automatic dialect switching (when supported)"))
 		self.autoDialectSwitchingCheckbox.SetValue(config.conf["speech"]["autoDialectSwitching"])
 		settingsSizer.Add(self.autoDialectSwitchingCheckbox,border=10,flag=wx.BOTTOM)
 		sizer=wx.BoxSizer(wx.HORIZONTAL)
 		# Translators: This is the label for a combobox in the
-		# voice settings dialog.
+		# voice settings dialog (possible choices are none, some, most and all).
 		sizer.Add(wx.StaticText(self,wx.ID_ANY,label=_("Punctuation/symbol &level:")))
 		symbolLevelLabels=characterProcessing.SPEECH_SYMBOL_LEVEL_LABELS
 		self.symbolLevelList=wx.Choice(self,wx.ID_ANY,choices=[symbolLevelLabels[level] for level in characterProcessing.CONFIGURABLE_SPEECH_SYMBOL_LEVELS])
@@ -463,6 +482,7 @@
 		self.symbolLevelList.SetSelection(characterProcessing.CONFIGURABLE_SPEECH_SYMBOL_LEVELS.index(curLevel))
 		sizer.Add(self.symbolLevelList)
 		settingsSizer.Add(sizer,border=10,flag=wx.BOTTOM)
+		# Translators: This is a label for a setting in voice settings (an edit box to change voice pitch for capital letters; the higher the value, the pitch will be higher).
 		capPitchChangeLabel=wx.StaticText(self,-1,label=_("Capital pitch change percentage"))
 		settingsSizer.Add(capPitchChangeLabel)
 		self.capPitchChangeEdit=wx.TextCtrl(self,wx.NewId())
@@ -1093,17 +1113,22 @@
 		super(DictionaryEntryDialog,self).__init__(parent,title=title)
 		mainSizer=wx.BoxSizer(wx.VERTICAL)
 		settingsSizer=wx.BoxSizer(wx.VERTICAL)
+		# Translators: This is a label for an edit field in add dictionary entry dialog.
 		settingsSizer.Add(wx.StaticText(self,-1,label=_("&Pattern")))
 		self.patternTextCtrl=wx.TextCtrl(self,wx.NewId())
 		settingsSizer.Add(self.patternTextCtrl)
+		# Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
 		settingsSizer.Add(wx.StaticText(self,-1,label=_("&Replacement")))
 		self.replacementTextCtrl=wx.TextCtrl(self,wx.NewId())
 		settingsSizer.Add(self.replacementTextCtrl)
+		# Translators: This is a label for an edit field in add dictionary entry dialog.
 		settingsSizer.Add(wx.StaticText(self,-1,label=_("&Comment")))
 		self.commentTextCtrl=wx.TextCtrl(self,wx.NewId())
 		settingsSizer.Add(self.commentTextCtrl)
+		# Translators: This is a label for a checkbox in add dictionary entry dialog.
 		self.caseSensitiveCheckBox=wx.CheckBox(self,wx.NewId(),label=_("Case &sensitive"))
 		settingsSizer.Add(self.caseSensitiveCheckBox)
+		# Translators: This is a label for a checkbox in add dictionary entry dialog.
 		self.regexpCheckBox=wx.CheckBox(self,wx.NewId(),label=_("Regular &expression"))
 		settingsSizer.Add(self.regexpCheckBox)
 		mainSizer.Add(settingsSizer,border=20,flag=wx.LEFT|wx.RIGHT|wx.TOP)
@@ -1126,13 +1151,19 @@
 	def makeSettings(self, settingsSizer):
 		dictListID=wx.NewId()
 		entriesSizer=wx.BoxSizer(wx.VERTICAL)
+		# Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
 		entriesLabel=wx.StaticText(self,-1,label=_("&Dictionary entries"))
 		entriesSizer.Add(entriesLabel)
 		self.dictList=wx.ListCtrl(self,dictListID,style=wx.LC_REPORT|wx.LC_SINGLE_SEL,size=(550,350))
+		# Translators: The label for a column in dictionary entries list used to identify comments for the entry.
 		self.dictList.InsertColumn(0,_("Comment"),width=150)
+		# Translators: The label for a column in dictionary entries list used to identify pattern (original word or a pattern).
 		self.dictList.InsertColumn(1,_("Pattern"),width=150)
+		# Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
 		self.dictList.InsertColumn(2,_("Replacement"),width=150)
+		# Translators: The label for a column in dictionary entries list used to identify whether the entry is case sensitive or not.
 		self.dictList.InsertColumn(3,_("case"),width=50)
+		# Translators: The label for a column in dictionary entries list used to identify whether the entry is a regular expression or not.
 		self.dictList.InsertColumn(4,_("Regexp"),width=50)
 		self.offOn = (_("off"),_("on"))
 		for entry in self.tempSpeechDict:
@@ -1142,9 +1173,11 @@
 		settingsSizer.Add(entriesSizer)
 		entryButtonsSizer=wx.BoxSizer(wx.HORIZONTAL)
 		addButtonID=wx.NewId()
+		# Translators: The label for a button in speech dictionaries dialog to add new entries.
 		addButton=wx.Button(self,addButtonID,_("&Add"),wx.DefaultPosition)
 		entryButtonsSizer.Add(addButton)
 		editButtonID=wx.NewId()
+		# Translators: The label for a button in speech dictionaries dialog to edit existing entries.
 		editButton=wx.Button(self,editButtonID,_("&Edit"),wx.DefaultPosition)
 		entryButtonsSizer.Add(editButton)
 		removeButtonID=wx.NewId()
@@ -1222,6 +1255,7 @@
 
 	def makeSettings(self, settingsSizer):
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to choose a braille display.
 		label = wx.StaticText(self, wx.ID_ANY, label=_("Braille &display:"))
 		driverList = braille.getDisplayList()
 		self.displayNames = [driver[0] for driver in driverList]
@@ -1237,6 +1271,7 @@
 		settingsSizer.Add(sizer, border=10, flag=wx.BOTTOM)
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to choose the connection port (if the selected braille display supports port selection).
 		label = wx.StaticText(self, wx.ID_ANY, label=_("&Port:"))
 		self.portsList = wx.Choice(self, wx.ID_ANY, choices=[])
 		sizer.Add(label)
@@ -1245,6 +1280,7 @@
 		self.updatePossiblePorts()
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to select the output table (the braille table used to read braille text on the braille display).
 		label = wx.StaticText(self, wx.ID_ANY, label=_("&Output table:"))
 		self.tableNames = [table[0] for table in braille.TABLES]
 		self.tableList = wx.Choice(self, wx.ID_ANY, choices=[table[1] for table in braille.TABLES])
@@ -1258,6 +1294,7 @@
 		settingsSizer.Add(sizer, border=10, flag=wx.BOTTOM)
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to select the input table (the braille table used to type braille characters on a braille keyboard).
 		label = wx.StaticText(self, wx.ID_ANY, label=_("&Input table:"))
 		self.inputTableNames = [table[0] for table in braille.INPUT_TABLES]
 		self.inputTableList = wx.Choice(self, wx.ID_ANY, choices=[table[1] for table in braille.INPUT_TABLES])
@@ -1270,11 +1307,13 @@
 		sizer.Add(self.inputTableList)
 		settingsSizer.Add(sizer, border=10, flag=wx.BOTTOM)
 
+		# Translators: The label for a setting in braille settings to expand the current word under cursor to computer braille.
 		self.expandAtCursorCheckBox = wx.CheckBox(self, wx.ID_ANY, label=_("E&xpand to computer braille for the word at the cursor"))
 		self.expandAtCursorCheckBox.SetValue(config.conf["braille"]["expandAtCursor"])
 		settingsSizer.Add(self.expandAtCursorCheckBox, border=10, flag=wx.BOTTOM)
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to change cursor blink rate in milliseconds (1 second is 1000 milliseconds).
 		label = wx.StaticText(self, wx.ID_ANY, label=_("Cursor blink rate (ms)"))
 		sizer.Add(label)
 		self.cursorBlinkRateEdit = wx.TextCtrl(self, wx.ID_ANY)
@@ -1283,6 +1322,7 @@
 		settingsSizer.Add(sizer, border=10, flag=wx.BOTTOM)
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to change how long a message stays on the braille display (in seconds).
 		label = wx.StaticText(self, wx.ID_ANY, label=_("Message timeout (sec)"))
 		sizer.Add(label)
 		self.messageTimeoutEdit = wx.TextCtrl(self, wx.ID_ANY)
@@ -1291,6 +1331,7 @@
 		settingsSizer.Add(sizer, border=10, flag=wx.BOTTOM)
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for a setting in braille settings to set whether braille should be tethered to focus or review cursor.
 		label = wx.StaticText(self, wx.ID_ANY, label=_("Braille tethered to:"))
 		self.tetherValues=[("focus",_("focus")),("review",_("review"))]
 		self.tetherList = wx.Choice(self, wx.ID_ANY, choices=[x[1] for x in self.tetherValues])
@@ -1304,10 +1345,12 @@
 		sizer.Add(self.tetherList)
 		settingsSizer.Add(sizer, border=10, flag=wx.BOTTOM)
 
+		# Translators: The label for a setting in braille settings to read by paragraph (if it is checked, the commands to move the display by lines moves the display by paragraphs instead).
 		item = self.readByParagraphCheckBox = wx.CheckBox(self, label=_("Read by &paragraph"))
 		item.Value = config.conf["braille"]["readByParagraph"]
 		settingsSizer.Add(item, border=10, flag=wx.BOTTOM)
 
+		# Translators: The label for a setting in braille settings to enable word wrap (try to avoid spliting words at the end of the braille display).
 		item = self.wordWrapCheckBox = wx.CheckBox(self, label=_("Avoid splitting &words when possible"))
 		item.Value = config.conf["braille"]["wordWrap"]
 		settingsSizer.Add(item, border=10, flag=wx.BOTTOM)
@@ -1383,10 +1426,13 @@
 		symbols = self.symbols = [copy.copy(symbol) for symbol in self.symbolProcessor.computedSymbols.itervalues()]
 
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for symbols list in symbol pronunciation dialog.
 		sizer.Add(wx.StaticText(self, wx.ID_ANY, _("&Symbols")))
 		self.symbolsList = wx.ListCtrl(self, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL, size=(360, 350))
+		# Translators: The label for a column in symbols list used to identify a symbol.
 		self.symbolsList.InsertColumn(0, _("Symbol"), width=150)
 		self.symbolsList.InsertColumn(1, _("Replacement"), width=150)
+		# Translators: The label for a column in symbols list used to identify a symbol's speech level (either none, some, most, all or character).
 		self.symbolsList.InsertColumn(2, _("Level"), width=60)
 		for symbol in symbols:
 			item = self.symbolsList.Append((symbol.displayName,))
@@ -1396,6 +1442,7 @@
 		sizer.Add(self.symbolsList)
 		settingsSizer.Add(sizer)
 
+		# Translators: The label for the edit field in symbol pronunciation dialog to change the pronunciation of a symbol.
 		changeSizer = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Change symbol")), wx.VERTICAL)
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
 		sizer.Add(wx.StaticText(self, wx.ID_ANY, _("&Replacement")))
@@ -1404,6 +1451,7 @@
 		sizer.Add(self.replacementEdit)
 		changeSizer.Add(sizer)
 		sizer = wx.BoxSizer(wx.HORIZONTAL)
+		# Translators: The label for the combo box in symbol pronunciation dialog to change the speech level of a symbol.
 		sizer.Add(wx.StaticText(self, wx.ID_ANY, _("&Level")))
 		symbolLevelLabels = characterProcessing.SPEECH_SYMBOL_LEVEL_LABELS
 		self.levelList = wx.Choice(self, wx.ID_ANY,choices=[

=== modified file 'source/virtualBuffers/__init__.py'
--- source/virtualBuffers/__init__.py	2013-02-15 21:23:36 +0000
+++ source/virtualBuffers/__init__.py	2013-04-10 08:56:34 +0000
@@ -848,6 +848,7 @@
 	def script_activatePosition(self,gesture):
 		info=self.makeTextInfo(textInfos.POSITION_CARET)
 		self._activatePosition(info)
+	# Translators: Input help mode message for activate position (space or enter key) command, used to activate a link, button or other web elements under cursor.
 	script_activatePosition.__doc__ = _("activates the current object in the document")
 
 	def script_refreshBuffer(self,gesture):
@@ -856,6 +857,7 @@
 			return
 		self.unloadBuffer()
 		self.loadBuffer()
+	# Translators: Input help mode message for refresh document (NVDA+F5) command, used to refresh the current document's content.
 	script_refreshBuffer.__doc__ = _("Refreshes the document content")
 
 	def script_toggleScreenLayout(self,gesture):
@@ -863,6 +865,7 @@
 		onOff=_("on") if config.conf["virtualBuffers"]["useScreenLayout"] else _("off")
 		# Translators: Presented when use screen layout option is toggled.
 		speech.speakMessage(_("use screen layout %s")%onOff)
+	# Translators: Input help mode message for toggle screen layout command.
 	script_toggleScreenLayout.__doc__ = _("Toggles on and off if the screen layout is preserved while rendering the document content")
 
 	def _searchableAttributesForNodeType(self,nodeType):
@@ -947,6 +950,7 @@
 			d.Destroy()
 			gui.mainFrame.postPopup()
 		wx.CallAfter(run)
+	# Translators: Input help mode message for elements list (NVDA+F7) command.
 	script_elementsList.__doc__ = _("Presents a list of links, headings or landmarks")
 
 	def shouldPassThrough(self, obj, reason=None):
@@ -1338,18 +1342,22 @@
 
 	def script_nextRow(self, gesture):
 		self._tableMovementScriptHelper(axis="row", movement="next")
+	# Translators: Input help mode message for move to next table row (CTRL+NVDA+down arrow) command.
 	script_nextRow.__doc__ = _("moves to the next table row")
 
 	def script_previousRow(self, gesture):
 		self._tableMovementScriptHelper(axis="row", movement="previous")
+	# Translators: Input help mode message for move to previous table row (CTRL+NVDA+up arrow) command.
 	script_previousRow.__doc__ = _("moves to the previous table row")
 
 	def script_nextColumn(self, gesture):
 		self._tableMovementScriptHelper(axis="column", movement="next")
+	# Translators: Input help mode message for move to next table column (CTRL+NVDA+right arrow) command.
 	script_nextColumn.__doc__ = _("moves to the next table column")
 
 	def script_previousColumn(self, gesture):
 		self._tableMovementScriptHelper(axis="column", movement="previous")
+	# Translators: Input help mode message for move to previous table column (CTRL+NVDA+left arrow) command.
 	script_previousColumn.__doc__ = _("moves to the previous table column")
 
 	APPLICATION_ROLES = (controlTypes.ROLE_APPLICATION, controlTypes.ROLE_DIALOG)

# Begin bundle
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
azu7l9d4nR5B6v+4u5IpwoSGC5CPuA==
