# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: joseph.lee22590@gmail.com-20130208145651-\
#   5higt3a0i15bwubp
# target_branch: http://bzr.nvaccess.org/nvda/main/
# testament_sha1: 3a3a7533e2692cec1ec2f243b9355990974b5943
# timestamp: 2013-02-08 07:06:04 -0800
# source_branch: http://bzr.nvaccess.org/nvda/main/
# base_revision_id: jamie@jantrid.net-20130208001117-075fifc1zomwsbsf
# 
# Begin patch
=== modified file 'source/IAccessibleHandler.py'
--- source/IAccessibleHandler.py	2012-11-30 05:54:16 +0000
+++ source/IAccessibleHandler.py	2013-02-03 23:31:46 +0000
@@ -669,6 +669,7 @@
 		return clsList
 
 	def _get_name(self):
+		# Translators: Message to indicate User Account Control (UAC) or other secure desktop screen is active.
 		return _("Secure Desktop")
 
 	def _get_role(self):

=== modified file 'source/NVDAHelper.py'
--- source/NVDAHelper.py	2013-02-06 23:48:25 +0000
+++ source/NVDAHelper.py	2013-02-07 02:42:41 +0000
@@ -236,6 +236,7 @@
 	11: _("katakana"),
 	# Translators: For Japanese character input: half-shaped (single-byte) alpha numeric (roman/english) mode.
 	16: _("half alphanumeric"),
+	# Translators: For Japanese character input: half katakana roman input mode.
 	19: _("half katakana roman"),
 	# Translators: For Japanese character input: alpha numeric (roman/english) mode.
 	24: _("alphanumeric"),

=== modified file 'source/appModuleHandler.py'
--- source/appModuleHandler.py	2012-08-17 04:58:28 +0000
+++ source/appModuleHandler.py	2013-02-03 02:43:50 +0000
@@ -140,6 +140,7 @@
 		except:
 			log.error("error in appModule %r"%modName, exc_info=True)
 			# We can't present a message which isn't unicode, so use appName, not modName.
+			# Translators: This is presented when errors are found in an appModule (example output: error in appModule explorer).
 			ui.message(_("Error in appModule %s")%appName)
 
 	# Use the base AppModule.

=== modified file 'source/appModules/explorer.py'
--- source/appModules/explorer.py	2012-10-27 00:49:02 +0000
+++ source/appModules/explorer.py	2013-02-05 01:07:13 +0000
@@ -40,6 +40,7 @@
 
 class ClassicStartMenu(Window):
 	# Override the name, as Windows names this the "Application" menu contrary to all documentation.
+	# Translators: The title of Start menu/screen in your language (only the word start).
 	name = _("Start")
 
 	def event_gainFocus(self):

=== modified file 'source/appModules/foobar2000.py'
--- source/appModules/foobar2000.py	2010-11-26 07:31:58 +0000
+++ source/appModules/foobar2000.py	2013-02-05 01:07:13 +0000
@@ -41,12 +41,14 @@
 	def script_reportRemainingTime(self,gesture):
 		times=self.getElapsedAndTotal()
 		if times is None:
+			# Translators: Reported when no track is playing in Foobar 2000.
 			ui.message(_("No track playing"))
 			return
 		elapsedTime,totalTime = times
 		remainingTime = totalTime-elapsedTime
 		msg = time.strftime(getOutputFormat(remainingTime),time.gmtime(remainingTime))
 		ui.message(msg)
+	# Translators: The description of an NVDA command for Foobar 2000.
 	script_reportRemainingTime.__doc__ = _("Reports the remaining time of the currently playing track, if any")
 
 	__gestures = {

=== modified file 'source/appModules/miranda32.py'
--- source/appModules/miranda32.py	2012-01-18 21:39:22 +0000
+++ source/appModules/miranda32.py	2013-02-05 01:07:13 +0000
@@ -116,6 +116,7 @@
 		else:
 			# Translators: This is presented to inform the user that no instant message has been received.
 			ui.message(_("No message yet"))
+	# Translators: The description of an NVDA command to view one of the recent messages.
 	script_readMessage.__doc__=_("Displays one of the recent messages")
 
 	def __init__(self, *args, **kwargs):

=== modified file 'source/appModules/outlook.py'
--- source/appModules/outlook.py	2012-07-12 23:40:16 +0000
+++ source/appModules/outlook.py	2013-02-05 01:07:13 +0000
@@ -23,13 +23,16 @@
 def getReceivedMessageString(obj):
 	nameList=[]
 	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 time
 	nameList.append(_("received: %s")%obj.receivedTime)
 
 	text=", ".join(nameList)
 	if obj.unread:
 		text="%s %s"%(_("unread"),text)
 	if obj.attachments.count>0:
+		# Translators: This is presented in outlook or live mail, indicating email attachments
 		text="%s %s"%(_("attachment"),text)
 	return text
 
@@ -37,6 +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
 	nameList.append(_("sent: %s")%obj.sentOn)
 	return ", ".join(nameList)
 

=== modified file 'source/braille.py'
--- source/braille.py	2013-02-08 00:11:17 +0000
+++ source/braille.py	2013-02-08 06:59:44 +0000
@@ -1532,7 +1532,7 @@
 
 	#: Automatic port constant to be used by braille displays that support the "automatic" port
 	#: @type: Tupple
-	# Translators String representing the automatic port selection for braille displays.
+	# Translators: String representing the automatic port selection for braille displays.
 	AUTOMATIC_PORT = ("auto", _("Automatic"))
 
 	@classmethod

=== modified file 'source/brailleDisplayDrivers/hims/__init__.py'
--- source/brailleDisplayDrivers/hims/__init__.py	2012-08-13 04:33:38 +0000
+++ source/brailleDisplayDrivers/hims/__init__.py	2013-02-06 11:04:48 +0000
@@ -106,6 +106,7 @@
 	""" HIMS Braille Sense/Braille EDGE braille displays.
 	"""
 	name = "hims"
+	# Translators: The name of a series of braille displays.
 	description = _("HIMS Braille Sense/Braille EDGE series")
 
 	@classmethod

=== modified file 'source/brailleDisplayDrivers/papenmeier.py'
--- source/brailleDisplayDrivers/papenmeier.py	2013-01-20 20:09:12 +0000
+++ source/brailleDisplayDrivers/papenmeier.py	2013-02-05 01:07:13 +0000
@@ -191,6 +191,7 @@
 	"""papenmeier braille display driver.
 	"""
 	name = "papenmeier"
+# Translators: Names of braille displays.
 	description = _("Papenmeier BRAILLEX newer models")
 
 	@classmethod

=== modified file 'source/brailleDisplayDrivers/papenmeier_serial.py'
--- source/brailleDisplayDrivers/papenmeier_serial.py	2013-01-11 00:15:56 +0000
+++ source/brailleDisplayDrivers/papenmeier_serial.py	2013-02-05 01:07:13 +0000
@@ -154,6 +154,7 @@
 		globalCommands.commands.script_braille_routeTo(gesture)
 		wx.CallLater(50, scriptHandler.executeScript, globalCommands.commands.script_reportFormatting, gesture)
 
+	# Translators: Describes action of routing buttons on a braille display.
 	script_upperRouting.__doc__ = _("Route to and report formatting")
 
 	def terminate(self):

=== modified file 'source/brailleDisplayDrivers/seika.py'
--- source/brailleDisplayDrivers/seika.py	2012-08-22 23:54:30 +0000
+++ source/brailleDisplayDrivers/seika.py	2013-02-05 01:07:13 +0000
@@ -27,6 +27,7 @@
 
 class BrailleDisplayDriver(braille.BrailleDisplayDriver):
 	name = "seika"
+	# Translators: Names of braille displays.
 	description = _("Seika braille displays")
 	numCells = 0
 

=== modified file 'source/brailleDisplayDrivers/syncBraille/__init__.py'
--- source/brailleDisplayDrivers/syncBraille/__init__.py	2012-06-07 08:00:43 +0000
+++ source/brailleDisplayDrivers/syncBraille/__init__.py	2013-02-06 11:04:48 +0000
@@ -69,6 +69,7 @@
 	""" HIMS SyncBraille braille display.
 	"""
 	name = "syncBraille"
+	# Translators: The name of a braille display.
 	description = _("HIMS SyncBraille")
 
 	@classmethod

=== modified file 'source/colors.py'
--- source/colors.py	2012-01-16 22:26:31 +0000
+++ source/colors.py	2013-02-04 03:23:17 +0000
@@ -72,6 +72,7 @@
 		if foundName:
 			return foundName
 		longestDistance=255.0
+		# Translators: Reported when text is written in unknown color.
 		closestName=_("unknown color")
 		for possibleRGB,possibleName  in RGBToNames.iteritems():
 			distance=math.sqrt(abs(self.red-possibleRGB.red)**2+abs(self.green-possibleRGB.green)**2+abs(self.blue-possibleRGB.blue)**2)
@@ -85,22 +86,34 @@
 
 RGBToNames={
 	#Standard 16 HTML 4 colors
+	# Translators: The color black.
 	RGB(0x00,0x00,0x00):_('black'),
+	# Translators: The color green.
 	RGB(0x00,0x80,0x00):_('green'),
+	# Translators: The light gray color.
 	RGB(0xc0,0xc0,0xc0):_('light grey'),
 	# Translators: The color lime.
 	# For more info see: http://en.wikipedia.org/wiki/Lime_%28color%29
 	RGB(0x00,0xff,0x00):_('lime'),
+	# Translators: The color gray (halfway between white and black).
 	RGB(0x80,0x80,0x80):_('grey'),
 	# Translators: the color olive.
 	# For more info see: http://en.wikipedia.org/wiki/Olive_%28color%29#Olive
 	RGB(0x80,0x80,0x00):_('olive'),
+	# Translators: The color white.
 	RGB(0xff,0xff,0xff):_('white'),
+	# Translators: The color yellow.
 	RGB(0xff,0xff,0x00):_('yellow'),
+	# Translators: The dark red color.
 	RGB(0x80,0x00,0x00):_('dark red'),
+	# Translators: The color navy blue (dark blue).
+	# For more info see http://en.wikipedia.org/wiki/Navy_blue
 	RGB(0x00,0x00,0xa0):_('navy blue'),
+	# Translators: The color red.
 	RGB(0xff,0x00,0x00):_('red'),
+	# Translators: The color blue.
 	RGB(0x00,0x00,0xff):_('blue'),
+	# Translators: The color purple.
 	RGB(0x80,0x00,0x80):_('purple'),
 	# Translators: The color teal, which is a mix of green and blue, mostly green.
 	# For more info see http://en.wikipedia.org/wiki/Teal

=== modified file 'source/controlTypes.py'
--- source/controlTypes.py	2012-11-19 01:20:43 +0000
+++ source/controlTypes.py	2013-02-03 07:40:04 +0000
@@ -185,74 +185,132 @@
 STATE_HASLONGDESC=0x400000000
 
 roleLabels={
+	# Translators: The word for an unknown control type.
 	ROLE_UNKNOWN:_("unknown"),
+	# Translators: The word for window of a program suchas document window.
 	ROLE_WINDOW:_("window"),
+	# Translators: Used to identify title bar of a program.
 	ROLE_TITLEBAR:_("title bar"),
+	# Translators: The word used for pane such as desktop pane.
 	ROLE_PANE:_("pane"),
+	# Translators: The word used to denote a dialog box such as open dialog.
 	ROLE_DIALOG:_("dialog"),
+	# Translators: The text used to identify check boxes such as select check box.
 	ROLE_CHECKBOX:_("check box"),
+	# Translators: The text used to identify radio buttons such as yes or no radio button.
 	ROLE_RADIOBUTTON:_("radio button"),
+	# Translators: The word used to identify a static text such as dialog text.
 	ROLE_STATICTEXT:_("text"),
+	# Translators: The word used to identify edit fields such as subject edit field.
 	ROLE_EDITABLETEXT:_("edit"),
+	# Translators: The word used to identify a button such as OK button.
 	ROLE_BUTTON:_("button"),
+	# Translators: Text used to identify menu bar of a program.
 	ROLE_MENUBAR:_("menu bar"),
+	# Translators: Used to identify a menu item such as an item in file menu.
 	ROLE_MENUITEM:_("menu item"),
+	# Translators: The word used for menus such as edit menu.
 	ROLE_POPUPMENU:_("menu"),
+	# Translators: Used to identify combo boxes such as file type combo box.
 	ROLE_COMBOBOX:_("combo box"),
+	# Translators: The word used for lists such as folder list.
 	ROLE_LIST:_("list"),
+	# Translators: Used to identify a list item such as email list items.
 	ROLE_LISTITEM:_("list item"),
+	# Translators: The word used to identify graphics such as webpage graphics.
 	ROLE_GRAPHIC:_("graphic"),
+	# Translators: Used to identify help balloon (a circular window with helpful text such as notification text).
 	ROLE_HELPBALLOON:_("help balloon"),
+	# Translators: Used to identify a tooltip (a small window with additional text about selected item such as file information).
 	ROLE_TOOLTIP:_("tool tip"),
+	# Translators: Identifies a link in webpage documents.
 	ROLE_LINK:_("link"),
+	# Translators: Identifies a treeview (a tree-like structure such as treeviews for subfolders).
 	ROLE_TREEVIEW:_("tree view"),
+	# Translators: Identifies a tree view item.
 	ROLE_TREEVIEWITEM:_("tree view item"),
 	# Translators: The word presented for tabs in a tab enabled window.
 	ROLE_TAB: pgettext("controlType", "tab"),
+	# Translators: Identifies a tab control such as webpage tabs in web browsers.
 	ROLE_TABCONTROL:_("tab control"),
+	# Translators: Identifies a slider such as volume slider.
 	ROLE_SLIDER:_("slider"),
+	# Translators: Identifies a progress bar such as NvDA update progress.
 	ROLE_PROGRESSBAR:_("progress bar"),
+	# Translators: Identifies a scroll bar.
 	ROLE_SCROLLBAR:_("scroll bar"),
+	# Translators: Identifies a status bar (text at the bottom bar of the screen such as cursor position in a document).
 	ROLE_STATUSBAR:_("status bar"),
+	# Translators: Identifies a table such as ones used in various websites.
 	ROLE_TABLE:_("table"),
+	# Translators: Identifies a cell in a table.
 	ROLE_TABLECELL:_("cell"),
+	# Translators: Identifies a column (a group of vertical cells in a table).
 	ROLE_TABLECOLUMN:_("column"),
+	# Translators: Identifies a row (a group of horizontal cells in a table).
 	ROLE_TABLEROW:_("row"),
+	# Translators: Identifies a frame (a smaller window in a webpage or a document).
 	ROLE_FRAME:_("frame"),
+	# Translators: Identifies a tool bar.
 	ROLE_TOOLBAR:_("tool bar"),
+	# Translators: Identifies a column header in tables and spreadsheets.
 	ROLE_TABLECOLUMNHEADER:_("column header"),
+	# Translators: Identifies a row header in tables and spreadsheets.
 	ROLE_TABLEROWHEADER:_("row header"),
+	# Translators: Identifies a drop down button (a button that, when clicked, opens a menu of its own).
 	ROLE_DROPDOWNBUTTON:_("drop down button"),
+	# Translators: Identifies an element.
 	ROLE_CLOCK:_("clock"),
+	# Translators: Identifies a separator (a horizontal line drawn on the screen).
 	ROLE_SEPARATOR:_("separator"),
+	# Translators: Identifies a form (controls such as edit boxes, combo boxes and so on).
 	ROLE_FORM:_("form"),
+	# Translators: Identifies a heading (a bold text used for identifying a section).
 	ROLE_HEADING:_("heading"),
+	# Translators: Identifies a heading level.
 	ROLE_HEADING1:_("heading 1"),
+	# Translators: Identifies a heading level.
 	ROLE_HEADING2:_("heading 2"),
+	# Translators: Identifies a heading level.
 	ROLE_HEADING3:_("heading 3"),
+	# Translators: Identifies a heading level.
 	ROLE_HEADING4:_("heading 4"),
+	# Translators: Identifies a heading level.
 	ROLE_HEADING5:_("heading 5"),
+	# Translators: Identifies a heading level.
 	ROLE_HEADING6:_("heading 6"),
+	# Translators: Identifies a paragraph (a group of text surrounded by blank lines).
 	ROLE_PARAGRAPH:_("paragraph"),
 	# Translators: Presented for a section in a document which is a block quotation;
 	# i.e. a long quotation in a separate paragraph distinguished by indentation, etc.
 	# See http://en.wikipedia.org/wiki/Block_quotation
 	ROLE_BLOCKQUOTE:_("block quote"),
+	# Translators: Identifies a table header (a short text at the start of a table which describes what the table is about).
 	ROLE_TABLEHEADER:_("table header"),
+	# Translators: Identifies a table body (the main body of the table).
 	ROLE_TABLEBODY:_("table body"),
+	# Translators: Identifies a table footer (text placed at the end of the table).
 	ROLE_TABLEFOOTER:_("table footer"),
+	# Translators: Identifies a document (for example, a webpage document).
 	ROLE_DOCUMENT:_("document"),
+	# Translators: Identifies an animation in a document or a webpage.
 	ROLE_ANIMATION:_("animation"),
+	# Translators: Identifies an application in webpages.
 	ROLE_APPLICATION:_("application"),
+	# Translators: Identifies a box element.
 	ROLE_BOX:_("box"),
+	# Translators: Identifies a grouping (a number of related items grouped together, such as related options in dialogs).
 	ROLE_GROUPING:_("grouping"),
+	# Translators: Identifies a property page such as drive properties dialog.
 	ROLE_PROPERTYPAGE:_("property page"),
 	ROLE_CANVAS:_("canvas"),
 	ROLE_CAPTION:_("caption"),
 	ROLE_CHECKMENUITEM:_("check menu item"),
 	ROLE_DATEEDITOR:_("date edit"),
+	# Translators: Identifies an icon.
 	ROLE_ICON:_("icon"),
 	ROLE_DIRECTORYPANE:_("directory pane"),
+	# Translators: Identifies an embedded object such as flash content.
 	ROLE_EMBEDDEDOBJECT:_("embedded object"),
 	ROLE_ENDNOTE:_("end note"),
 	ROLE_FOOTER:_("footer"),
@@ -261,11 +319,16 @@
 	# a pane that is guaranteed to be on top of all panes beneath it.
 	ROLE_GLASSPANE:_("glass pane"),
 	ROLE_HEADER:_("header"),
+	# Translators: Identifies an image map (a type of graphical link).
 	ROLE_IMAGEMAP:_("image map"),
+	# Translators: Identifies an input window.
 	ROLE_INPUTWINDOW:_("input window"),
+	# Translators: Identifies a label.
 	ROLE_LABEL:_("label"),
 	ROLE_NOTE:_("note"),
+	# Translators: Identifies a page.
 	ROLE_PAGE:_("page"),
+	# Translators: Identifies a radio menu item.
 	ROLE_RADIOMENUITEM:_("radio menu item"),
 	ROLE_LAYEREDPANE:_("layered pane"),
 	ROLE_REDUNDANTOBJECT:_("redundant object"),
@@ -273,12 +336,17 @@
 	# Translators: May be reported for an editable text object in a toolbar.
 	# This is deprecated and is not often (if ever) used.
 	ROLE_EDITBAR:_("edit bar"),
+	# Translators: Identifies a terminal window such as command prompt.
 	ROLE_TERMINAL:_("terminal"),
 	ROLE_RICHEDIT:_("rich edit"),
 	ROLE_RULER:_("ruler"),
+	# Translators: Identifies a scroll pane.
 	ROLE_SCROLLPANE:_("scroll pane"),
+	# Translators: Identifies a section of text.
 	ROLE_SECTION:_("section"),
+	# Translators: Identifies a shape.
 	ROLE_SHAPE:_("shape"),
+	# Translators: Identifies a split pane.
 	ROLE_SPLITPANE:_("split pane"),
 	# Translators: Reported for a view port; i.e. an object usually used in a scroll pane
 	# which represents the portion of the entire data that the user can see.
@@ -289,6 +357,7 @@
 	# to exist as a separate window.
 	ROLE_TEAROFFMENU:_("tear off menu"),
 	ROLE_TEXTFRAME:_("text frame"),
+	# Translators: Identifies a toggle button (a button used to toggle something).
 	ROLE_TOGGLEBUTTON:_("toggle button"),
 	ROLE_BORDER:_("border"),
 	ROLE_CARET:_("caret"),
@@ -302,39 +371,63 @@
 	ROLE_MENUBUTTON:_("menu button"),
 	# Translators: Reported for a button which expands a grid when it is pressed.
 	ROLE_DROPDOWNBUTTONGRID:_("drop down button grid"),
+	# Translators: Identifies an equation.
 	ROLE_EQUATION:_("equation"),
 	ROLE_GRIP:_("grip"),
+	# Translators: Identifies a hot key field (a field where one can enter a hot key for something, such as assigning shortcut for icons on the desktop).
 	ROLE_HOTKEYFIELD:_("hot key field"),
 	ROLE_INDICATOR:_("indicator"),
+	# Translators: Identifies a spin button (a button used to go through options in a spinning fashion).
 	ROLE_SPINBUTTON:_("spin button"),
+	# Translators: Identifies a sound clip on websites.
 	ROLE_SOUND:_("sound"),
+	# Translators: Identifies a whitespace.
 	ROLE_WHITESPACE:_("white space"),
+	# Translators: Identifies a tree view button.
 	ROLE_TREEVIEWBUTTON:_("tree view button"),
+	# Translators: Identifies an IP address (an IP address field element).
 	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.
 	ROLE_ALERT:_("alert"),
 	ROLE_INTERNALFRAME:_("IFrame"),
+	# Translators: Identifies desktop pane (the desktop window).
 	ROLE_DESKTOPPANE:_("desktop pane"),
 	ROLE_OPTIONPANE:_("option pane"),
 	ROLE_COLORCHOOSER:_("color chooser"),
 	ROLE_FILECHOOSER:_("file chooser"),
 	ROLE_FILLER:_("filler"),
+	# Translators: Identifies a menu such as file menu.
 	ROLE_MENU:_("menu"),
 	ROLE_PANEL:_("panel"),
+	# Translators: Identifies a password field (a protected edit field for entering passwords such as when logging into web-based email sites).
 	ROLE_PASSWORDEDIT:_("password edit"),
 	ROLE_FONTCHOOSER:_("font chooser"),
 	ROLE_LINE:_("line"),
+	# Translators: Identifies a font name.
 	ROLE_FONTNAME:_("font name"),
+	# Translators: Identifies font size.
 	ROLE_FONTSIZE:_("font size"),
+	# Translators: Describes text formatting.
 	ROLE_BOLD:_("bold"),
+	# Translators: Describes text formatting.
 	ROLE_ITALIC:_("ITALIC"),
+	# Translators: Describes text formatting.
 	ROLE_UNDERLINE:_("underline"),
+	# Translators: Describes text formatting.
 	ROLE_FGCOLOR:_("foreground color"),
+	# Translators: Describes text formatting.
 	ROLE_BGCOLOR:_("background color"),
+	# Translators: Describes text formatting.
 	ROLE_SUPERSCRIPT:_("superscript"),
+	# Translators: Describes text formatting.
 	ROLE_SUBSCRIPT:_("subscript"),
+	# Translators: Describes style of text.
 	ROLE_STYLE:_("style"),
+	# Translators: Describes text formatting.
 	ROLE_INDENT:_("indent"),
+	# Translators: Describes text formatting.
 	ROLE_ALIGNMENT:_("alignment"),
 	ROLE_ALERT:_("alert"),
 	ROLE_DATAGRID:_("data grid"),
@@ -345,28 +438,47 @@
 }
 
 stateLabels={
+	# Translators: This is presented when a control or document is unavailable.
 	STATE_UNAVAILABLE:_("unavailable"),
+	# Translators: This is presented when a control has focus.
 	STATE_FOCUSED:_("focused"),
+	# Translators: This is presented when the control is selected.
 	STATE_SELECTED:_("selected"),
+	# Translators: This is presented when a document is busy.
 	STATE_BUSY:_("busy"),
+	# Translators: This is presented when a button is pressed.
 	STATE_PRESSED:_("pressed"),
+	# Translators: This is presented when a check box is checked.
 	STATE_CHECKED:_("checked"),
+	# Translators: This is presented when a three state check box is half checked.
 	STATE_HALFCHECKED:_("half checked"),
+	# Translators: This is presented when the control is a read-only control such as read-only edit box.
 	STATE_READONLY:_("read only"),
+	# Translators: This is presented when a tree view or submenu item is expanded.
 	STATE_EXPANDED:_("expanded"),
+	# Translators: This is presented when a tree view or submenu is collapsed.
 	STATE_COLLAPSED:_("collapsed"),
+	# Translators: This is presented when a control or a document becomes invisible.
 	STATE_INVISIBLE:_("invisible"),
+	# Translators: This is presented when a visited link is encountered.
 	STATE_VISITED:_("visited"),
+	# Translators: This is presented when a link is encountered.
 	STATE_LINKED:_("linked"),
+	# Translators: This is presented when the control menu item has a submenu.
 	STATE_HASPOPUP:_("subMenu"),
+	# Translators: This is presented when a protected control or a document is encountered.
 	STATE_PROTECTED:_("protected"),
+	# Translators: This is presented when a required form field is encountered.
 	STATE_REQUIRED:_("required"),
 	# Translators: Reported when an object no longer exists in the user interface;
 	# i.e. it is dead and is no longer usable.
 	STATE_DEFUNCT:_("defunct"),
+	# Translators: This is presented when an invalid entry has been made.
 	STATE_INVALID_ENTRY:_("invalid entry"),
 	STATE_MODAL:_("modal"),
+	# Translators: This is presented when a field supports auto completion of entered text such as email address field in Microsoft Outlook.
 	STATE_AUTOCOMPLETE:_("has auto complete"),
+	# Translators: This is presented when an edit field allows typing multiple lines of text such as comment fields on websites.
 	STATE_MULTILINE:_("multi line"),
 	STATE_ICONIFIED:_("iconified"),
 	STATE_OFFSCREEN:_("off screen"),

=== modified file 'source/core.py'
--- source/core.py	2013-02-04 03:17:43 +0000
+++ source/core.py	2013-02-04 06:25:35 +0000
@@ -156,6 +156,7 @@
 	speech.initialize()
 	if not globalVars.appArgs.minimal and (time.time()-globalVars.startTime)>5:
 		log.debugWarning("Slow starting core (%.2f sec)" % (time.time()-globalVars.startTime))
+		# Translators: This is spoken when NVDA is starting.
 		speech.speakMessage(_("Loading NVDA. Please wait..."))
 	import wx
 	log.info("Using wx version %s"%wx.version())
@@ -256,6 +257,7 @@
 		wx.CallAfter(gui.installerGui.doSilentInstall)
 	elif not globalVars.appArgs.minimal:
 		try:
+			# Translators: This is shown on a braille display (if one is connected) when NVDA starts.
 			braille.handler.message(_("NVDA started"))
 		except:
 			log.error("", exc_info=True)

=== modified file 'source/globalCommands.py'
--- source/globalCommands.py	2013-02-04 00:50:19 +0000
+++ source/globalCommands.py	2013-02-04 06:25:35 +0000
@@ -61,7 +61,7 @@
 		else:
 			eventHandler.executeEvent("loseFocus",curFocus)
 			curApp.sleepMode=True
-			# Translators: This is presented when sleep mode is activated, the focused application is self vocing, such as klango or openbook.
+			# 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"))
 	script_toggleCurrentAppSleepMode.__doc__=_("Toggles  sleep mode on and off for  the active application.")
 	script_toggleCurrentAppSleepMode.allowInSleepMode=True
@@ -83,12 +83,14 @@
 	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):
+		# Translators: Reported when left mouse button is clicked.
 		ui.message(_("left click"))
 		winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
 		winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
 	script_leftMouseClick.__doc__=_("Clicks the left mouse button once at the current mouse position")
 
 	def script_rightMouseClick(self,gesture):
+		# Translators: Reported when right mouse button is clicked.
 		ui.message(_("right click"))
 		winUser.mouse_event(winUser.MOUSEEVENTF_RIGHTDOWN,0,0,None,None)
 		winUser.mouse_event(winUser.MOUSEEVENTF_RIGHTUP,0,0,None,None)
@@ -142,6 +144,7 @@
 	def script_increaseSynthSetting(self,gesture):
 		settingName=globalVars.settingsRing.currentSettingName
 		if not settingName:
+			# Translators: Reported when there are no settings to configure in synth settings ring (example: when there is no setting for language).
 			ui.message(_("No settings"))
 			return
 		settingValue=globalVars.settingsRing.increase()
@@ -239,6 +242,7 @@
 			try:
 				(left,top,width,height)=obj.location
 			except:
+				# Translators: Reported when the object has no location for the mouse to move to it.
 				ui.message(_("object has no location"))
 				return
 			x=left+(width/2)
@@ -248,6 +252,7 @@
 	script_moveMouseToNavigatorObject.__doc__=_("Moves the mouse pointer to the current navigator object")
 
 	def script_moveNavigatorObjectToMouse(self,gesture):
+		# Translators: Reported when attempting to move the navigator object to the object under mouse pointer.
 		ui.message(_("Move navigator object to mouse"))
 		obj=api.getMouseObject()
 		api.setNavigatorObject(obj)
@@ -265,6 +270,7 @@
 			pos.expand(textInfos.UNIT_LINE)
 			speech.speakTextInfo(pos)
 		else:
+			# Translators: reported when object does not support flat review (example: some graphic window).
 			speech.speakMessage(_("No flat review for this object"))
 	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")
 
@@ -278,6 +284,7 @@
 			api.setNavigatorObject(obj)
 			speech.speakObject(obj,reason=controlTypes.REASON_FOCUS)
 		else:
+			# Translators: Reported when there is no object at flat review position.
 			speech.speakMessage(_("No object at flat review position"))
 	script_navigatorObject_moveToObjectAtFlatReviewPosition.__doc__=_("Moves navigator object to the object represented by the text at the position of the review cursor within flat review")
 
@@ -312,6 +319,7 @@
 					speech.speakSpelling(text)
 				else:
 					if api.copyToClip(text):
+						# Translators: Indicates something has been copied to clipboard (example output: title text copied to clipboard).
 						speech.speakMessage(_("%s copied to clipboard")%text)
 		else:
 			speech.speakObject(curObject,reason=controlTypes.REASON_QUERY)
@@ -323,16 +331,19 @@
 			ui.message(_("no navigator object"))
 		location=obj.location
 		if not location:
+			# Translators: Reported when attempting to find out the navigator object's dimensions (width, height) but cannot obtain object's location.
 			ui.message(_("No location information for navigator object"))
 		(left,top,width,height)=location
 		deskLocation=api.getDesktopObject().location
 		if not deskLocation:
+			# Translators: Reported when attempting to find out the navigator object's dimensions but the screen does not provide location information.
 			ui.message(_("No location information for screen"))
 		(deskLeft,deskTop,deskWidth,deskHeight)=deskLocation
 		percentFromLeft=(float(left-deskLeft)/deskWidth)*100
 		percentFromTop=(float(top-deskTop)/deskHeight)*100
 		percentWidth=(float(width)/deskWidth)*100
 		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))
 	script_navigatorObject_currentDimensions.__doc__=_("Reports the hight, width and position of the current navigator object")
 
@@ -343,6 +354,7 @@
 		except (NotImplementedError,RuntimeError):
 			pos=obj.makeTextInfo(textInfos.POSITION_FIRST)
 		api.setReviewPosition(pos)
+		# Translators: Reported when attempting to move the navigator object to focus.
 		speech.speakMessage(_("move to focus"))
 		speech.speakObject(obj,reason=controlTypes.REASON_FOCUS)
 	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.")
@@ -350,8 +362,12 @@
 	def script_navigatorObject_moveFocus(self,gesture):
 		obj=api.getNavigatorObject()
 		if not isinstance(obj,NVDAObject):
+			# Translators: Reported when:
+			# 1. There is no focusable object e.g. cannot use tab and shift tab to move to controls.
+			# 2. Trying to move focus to navigator object but there is no focus.
 			speech.speakMessage(_("no focus"))
 		if scriptHandler.getLastScriptRepeatCount()==0:
+			# Translators: Reported when attempting to move focus to navigator object.
 			ui.message(_("move focus"))
 			obj.setFocus()
 		else:
@@ -359,6 +375,7 @@
 			try:
 				review.updateCaret()
 			except NotImplementedError:
+				# Translators: Reported when trying to move caret to the position of the review cursor but there is no caret.
 				ui.message(_("no caret"))
 				return
 			info=review.copy()
@@ -377,6 +394,7 @@
 			api.setNavigatorObject(curObject)
 			speech.speakObject(curObject,reason=controlTypes.REASON_FOCUS)
 		else:
+			# Translators: Reported when there is no containing (parent) object such as when focused on desktop.
 			speech.speakMessage(_("No containing object"))
 	script_navigatorObject_parent.__doc__=_("Moves the navigator object to the object containing it")
 
@@ -391,6 +409,7 @@
 			api.setNavigatorObject(curObject)
 			speech.speakObject(curObject,reason=controlTypes.REASON_FOCUS)
 		else:
+			# Translators: Reported when there is no next object (current object is the last object).
 			speech.speakMessage(_("No next"))
 	script_navigatorObject_next.__doc__=_("Moves the navigator object to the next object")
 
@@ -405,6 +424,7 @@
 			api.setNavigatorObject(curObject)
 			speech.speakObject(curObject,reason=controlTypes.REASON_FOCUS)
 		else:
+			# Translators: Reported when there is no previous object (current object is the first object).
 			speech.speakMessage(_("No previous"))
 	script_navigatorObject_previous.__doc__=_("Moves the navigator object to the previous object")
 
@@ -419,6 +439,7 @@
 			api.setNavigatorObject(curObject)
 			speech.speakObject(curObject,reason=controlTypes.REASON_FOCUS)
 		else:
+			# Translators: Reported when there is no contained (first child) object such as inside a document.
 			speech.speakMessage(_("No objects inside"))
 	script_navigatorObject_firstChild.__doc__=_("Moves the navigator object to the first object inside it")
 
@@ -616,7 +637,7 @@
 		speech.speechMode=speech.speechMode_talk
 		newMode=(curMode+1)%3
 		if newMode==speech.speechMode_off:
-			# Translators: A speech mode which dissables speech output.
+			# Translators: A speech mode which disables speech output.
 			name=_("speech mode off")
 		elif newMode==speech.speechMode_beeps:
 			# Translators: A speech mode which will cause NVDA to beep instead of speaking.
@@ -703,6 +724,7 @@
 			textList.append(text)
 
 		if not textList:
+			# Translators: Reported when trying to obtain formatting information (such as font name, indentation and so on) but there is no formatting information for the text under cursor.
 			ui.message(_("No formatting information"))
 			return
 
@@ -738,6 +760,7 @@
 				api.setReviewPosition(info)
 				found=True
 		if not found:
+			# Translators: Reported when there is no status line for the current program or window.
 			ui.message(_("No status line found"))
 			return
 		if scriptHandler.getLastScriptRepeatCount()==0:
@@ -764,6 +787,7 @@
 		if not isinstance(title,basestring) or not title or title.isspace():
 			title=obj.appModule.appName  if obj.appModule else None
 			if not isinstance(title,basestring) or not title or title.isspace():
+				# Translators: Reported when there is no title text for current program or window.
 				title=_("no title")
 		repeatCount=scriptHandler.getLastScriptRepeatCount()
 		if repeatCount==0:
@@ -796,15 +820,19 @@
 		outputMode=config.conf["presentation"]["progressBarUpdates"]["progressBarOutputMode"]
 		if outputMode=="both":
 			outputMode="off"
+			# Translators: A mode where no progress bar updates are given.
 			ui.message(_("no progress bar updates"))
 		elif outputMode=="off":
 			outputMode="speak"
+			# Translators: A mode where progress bar updates will be spoken.
 			ui.message(_("speak progress bar updates"))
 		elif outputMode=="speak":
 			outputMode="beep"
+			# Translators: A mode where beeps will indicate progress bar updates (beeps rise in pitch as progress bar updates).
 			ui.message(_("beep for progress bar updates"))
 		else:
 			outputMode="both"
+			# 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
 	script_toggleProgressBarOutput.__doc__=_("Toggles between beeps, speech, beeps and speech, and off, for reporting progress bar updates")
@@ -855,10 +883,12 @@
 			log.error("error accessing system power status")
 			return
 		if sps.BatteryFlag & NO_SYSTEM_BATTERY:
+			# Translators: This is presented when there is no battery such as desktop computers and laptops with battery pack removed.
 			ui.message(_("no system battery"))
 			return
 		# Translators: This is presented to inform the user of the current battery percentage.
 		text = _("%d percent") % sps.BatteryLifePercent + " "
+		# Translators: This is presented when AC power is connected such as when recharging a laptop battery.
 		if sps.ACLineStatus & AC_ONLINE: text += _("AC power on")
 		elif sps.BatteryLifeTime!=0xffffffff: 
 			# Translators: This is the estimated remaining runtime of the laptop battery.
@@ -868,15 +898,22 @@
 
 	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"))
 	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):
 		focus=api.getFocusObject()
 		appName=appModuleHandler.getAppNameFromProcessID(focus.processID,True)
+		# Translators: Indicates the name of the current program (example output: Currently running application is explorer.exe).
+		# Note that it does not give friendly name such as Windows Explorer; it presents the file name of the current application.
+		# If there is an appModule for the current program, NVDA speaks the name of the module after presenting this message.
 		message = _("Currently running application is %s") % appName
 		mod=focus.appModule
 		if isinstance(mod,appModuleHandler.AppModule) and type(mod)!=appModuleHandler.AppModule:
+			# Translators: Indicates the name of the appModule for the current program (example output: and currently loaded module is explorer).
+			# For example, the complete message for Windows explorer is: Currently running application is explorer.exe and currently loaded module is explorer.
+			# 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)
 	script_reportAppModuleInfo.__doc__ = _("Speaks the filename of the active application along with the name of the currently loaded appModule")
@@ -942,6 +979,7 @@
 		else:
 			braille.handler.tether = braille.handler.TETHER_FOCUS
 			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)
 	script_braille_toggleTether.__doc__ = _("Toggle tethering of braille between the focus and the review position")
 
@@ -951,32 +989,40 @@
 		except:
 			text = None
 		if not text or not isinstance(text,basestring) or text.isspace():
+			# Translators: Presented when there is no text on the clipboard.
 			ui.message(_("There is no text on the clipboard"))
 			return
 		if len(text) < 1024: 
 			ui.message(text)
 		else:
+			# 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))
 	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"))
 	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):
 		if not getattr(self, "_copyStartMarker", None):
+			# Translators: Presented when attempting to copy some review cursor text but there is no start marker.
 			ui.message(_("No start marker set"))
 			return
 		pos = api.getReviewPosition().copy()
 		if self._copyStartMarker.obj != pos.obj:
+			# Translators: Presented when trying to copy text residing on a different object (that is, start marker is in object 1 but trying to copy text from object 2).
 			ui.message(_("The start marker must reside within the same object"))
 			return
 		pos.move(textInfos.UNIT_CHARACTER, 1, endPoint="end")
 		pos.setEndPoint(self._copyStartMarker, "startToStart")
 		if pos.compareEndPoints(pos, "startToEnd") < 0 and pos.copyToClipboard():
+			# Translators: Presented when some review text has been copied to clipboard.
 			ui.message(_("Review selection copied to clipboard"))
 		else:
+			# Translators: Presented when there is no text selection to copy from review cursor.
 			ui.message(_("No text to copy"))
 			return
 		self._copyStartMarker = None
@@ -1015,6 +1061,7 @@
 		appModuleHandler.reloadAppModules()
 		globalPluginHandler.reloadGlobalPlugins()
 		NVDAObject.clearDynamicClassCache()
+		# Translators: Presented when plugins (app modules and global plugins) are reloaded.
 		ui.message(_("Plugins reloaded"))
 	script_reloadPlugins.__doc__=_("Reloads app modules and global plugins without restarting NVDA, which can be Useful for developers")
 

=== 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/installer.py'
--- source/installer.py	2012-12-10 03:40:58 +0000
+++ source/installer.py	2013-02-05 01:07:13 +0000
@@ -155,14 +155,17 @@
 	if shouldCreateDesktopShortcut:
 		createShortcut(u"NVDA.lnk",targetPath=slaveExe,arguments="launchNVDA -r",hotkey="CTRL+ALT+N",workingDirectory=installDir,prependSpecialFolder="AllUsersDesktop")
 	createShortcut(os.path.join(startMenuFolder,"NVDA.lnk"),targetPath=NVDAExe,workingDirectory=installDir,prependSpecialFolder="AllUsersPrograms")
+	# Translators: A label for a shortcut in start menu and a menu entry in NVDA menu (to go to NVDA website).
 	createShortcut(os.path.join(startMenuFolder,_("NVDA web site")+".lnk"),targetPath=versionInfo.url,prependSpecialFolder="AllUsersPrograms")
+	# Translators: A label for a shortcut item in start menu to uninstall NVDA from the computer.
 	createShortcut(os.path.join(startMenuFolder,_("Uninstall NVDA")+".lnk"),targetPath=os.path.join(installDir,"uninstall.exe"),workingDirectory=installDir,prependSpecialFolder="AllUsersPrograms")
+	# Translators: A label for a shortcut item in start menu to open current user's NVDA configuration directory.
 	createShortcut(os.path.join(startMenuFolder,_("Explore NVDA user configuration directory")+".lnk"),targetPath=slaveExe,arguments="explore_userConfigPath",workingDirectory=installDir,prependSpecialFolder="AllUsersPrograms")
 	# Translators: The label of the NVDA Documentation menu in the Start Menu.
 	docFolder=os.path.join(startMenuFolder,_("Documentation"))
 	# Translators: The label of the Start Menu item to open the Commands Quick Reference document.
 	createShortcut(os.path.join(docFolder,_("Commands Quick Reference")+".lnk"),targetPath=getDocFilePath("keyCommands.html",installDir),prependSpecialFolder="AllUsersPrograms")
-	# Translators: The label of the Start Menu item to open the User Guide.
+	# Translators: A label for a shortcut in start menu and a menu entry in NVDA menu (to open the user guide).
 	createShortcut(os.path.join(docFolder,_("User Guide")+".lnk"),targetPath=getDocFilePath("userGuide.html",installDir),prependSpecialFolder="AllUsersPrograms")
 	registerAddonFileAssociation(slaveExe)
 
@@ -213,6 +216,7 @@
 	try:
 		# Create progID for NVDA ad-ons
 		with _winreg.CreateKeyEx(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Classes\\%s" % addonHandler.NVDA_ADDON_PROG_ID, 0, _winreg.KEY_WRITE) as k:
+			# Translators: A file extension label for NVDA add-on package.
 			_winreg.SetValueEx(k, None, 0, _winreg.REG_SZ, _("NVDA add-on package"))
 			with _winreg.CreateKeyEx(k, "DefaultIcon", 0, _winreg.KEY_WRITE) as k2:
 				_winreg.SetValueEx(k2, None, 0, _winreg.REG_SZ, "@{slaveExe},1".format(slaveExe=slaveExe))

=== modified file 'source/keyboardHandler.py'
--- source/keyboardHandler.py	2013-01-28 19:28:35 +0000
+++ source/keyboardHandler.py	2013-02-04 03:23:17 +0000
@@ -236,7 +236,9 @@
 	#: All possible keyboard layouts, where layout names are mapped to localised layout names.
 	#: @type: dict
 	LAYOUTS = {
+		# Translators: One of the keyboard layouts for NVDA.
 		"desktop": _("desktop"),
+		# Translators: One of the keyboard layouts for NVDA.
 		"laptop": _("laptop"),
 	}
 

=== modified file 'source/mouseHandler.py'
--- source/mouseHandler.py	2011-05-09 02:14:27 +0000
+++ source/mouseHandler.py	2013-02-04 03:23:17 +0000
@@ -133,6 +133,7 @@
 	if config.conf["mouse"]["reportMouseShapeChanges"] and mouseShapeChanged>0:
 		if mouseShapeChanged==10:
 			mouseShapeChanged=0
+			# Translators: Reported when mouse cursor shape changes (example output: edit cursor).
 			speech.speakMessage(_("%s cursor")%curMouseShape)
 		else:
 			mouseShapeChanged+=1

=== modified file 'source/speech.py'
--- source/speech.py	2012-12-06 00:38:28 +0000
+++ source/speech.py	2013-02-04 03:23:17 +0000
@@ -160,7 +160,7 @@
 		locale=defaultLanguage
 
 	if not text:
-		# Translators: This is spoken when nvda moves to an empty line.
+		# Translators: This is spoken when NVDA moves to an empty line.
 		return getSynth().speak((_("blank"),))
 	if not text.isspace():
 		text=text.rstrip()
@@ -521,6 +521,7 @@
 				# Translators: This is spoken to indicate what has been unselected. for example 'unselecting hello'
 				speakSelectionMessage(_("unselecting %s"),text)
 		elif len(unselectedTextList)>0:
+			# Translators: Reported when selection is removed.
 			speakMessage(_("selection removed"))
 			if not newInfo.isCollapsed:
 				text=newInfo.text
@@ -831,6 +832,7 @@
 				textList.insert(0,_("level %s")%level)
 				oldTreeLevel=level
 			else:
+				# Translators: Speaks the item level in treeviews (example output: level 2).
 				textList.append(_('level %s')%propertyValues['positionInfo_level'])
 	if cellCoordsText or rowNumber or columnNumber:
 		tableID = propertyValues.get("_tableID")
@@ -844,6 +846,7 @@
 			if rowHeaderText:
 				textList.append(rowHeaderText)
 			if includeTableCellCoords and not cellCoordsText: 
+				# Translators: Speaks current row number (example output: row 3).
 				textList.append(_("row %s")%rowNumber)
 			oldRowNumber = rowNumber
 		if columnNumber and (not sameTable or columnNumber != oldColumnNumber):
@@ -851,6 +854,7 @@
 			if columnHeaderText:
 				textList.append(columnHeaderText)
 			if includeTableCellCoords and not cellCoordsText:
+				# Translators: Speaks current column number (example output: column 3).
 				textList.append(_("column %s")%columnNumber)
 			oldColumnNumber = columnNumber
 	if includeTableCellCoords and cellCoordsText:
@@ -858,10 +862,13 @@
 	rowCount=propertyValues.get('rowCount',0)
 	columnCount=propertyValues.get('columnCount',0)
 	if rowCount and columnCount:
+		# Translators: Speaks number of columns and rows in a table (example output: with 3 rows and 2 columns).
 		textList.append(_("with {rowCount} rows and {columnCount} columns").format(rowCount=rowCount,columnCount=columnCount))
 	elif columnCount and not rowCount:
+		# Translators: Speaks number of columns (example output: with 4 columns).
 		textList.append(_("with %s columns")%columnCount)
 	elif rowCount and not columnCount:
+		# Translators: Speaks number of rows (example output: with 2 rows).
 		textList.append(_("with %s rows")%rowCount)
 	if rowCount or columnCount:
 		# The caller is entering a table, so ensure that it is treated as a new table, even if the previous table was the same.
@@ -931,6 +938,7 @@
 	# Special cases
 	if speakEntry and fieldType=="start_addedToControlFieldStack" and role==controlTypes.ROLE_LIST and controlTypes.STATE_READONLY in states:
 		# List.
+		# Translators: Speaks number of items in a list (example output: list with 5 items).
 		return roleText+" "+_("with %s items")%childCount
 	elif fieldType=="start_addedToControlFieldStack" and role==controlTypes.ROLE_TABLE and tableID:
 		# Table.
@@ -957,6 +965,7 @@
 	):
 		return CHUNK_SEPARATOR.join([x for x in nameText,(stateText if speakStatesFirst else roleText),(roleText if speakStatesFirst else stateText),valueText,descriptionText,levelText,keyboardShortcutText if x])
 	elif fieldType in ("end_removedFromControlFieldStack","end_relative") and roleText and ((not extraDetail and speakExitForLine) or (extraDetail and speakExitForOther)):
+		# Translators: Indicates end of something (example output: at the end of a list, speaks out of list).
 		return _("out of %s")%roleText
 
 	# Special cases
@@ -989,6 +998,7 @@
 		headingLevel=attrs.get("heading-level")
 		oldHeadingLevel=attrsCache.get("heading-level") if attrsCache is not None else None
 		if headingLevel and headingLevel!=oldHeadingLevel:
+			# Translators: Speaks the heading level (example output: heading level 2).
 			text=_("heading level %d")%headingLevel
 			textList.append(text)
 	if  formatConfig["reportStyle"]:
@@ -1159,6 +1169,7 @@
 	if tableInfo is None and oldTableInfo is None:
 		return ""
 	if tableInfo is None and oldTableInfo is not None:
+		# Translators: Indicates end of a table.
 		return _("out of table")
 	if not oldTableInfo or tableInfo.get("table-id")!=oldTableInfo.get("table-id"):
 		newTable=True
@@ -1168,6 +1179,7 @@
 	if newTable:
 		columnCount=tableInfo.get("column-count",0)
 		rowCount=tableInfo.get("row-count",0)
+		# Translators: reports number of columns and rows in a table (example output: table with 3 columns and 5 rows).
 		text=_("table with {columnCount} columns and {rowCount} rows").format(columnCount=columnCount,rowCount=rowCount)
 		textList.append(text)
 	oldColumnNumber=oldTableInfo.get("column-number",0) if oldTableInfo else 0

=== modified file 'source/virtualBuffers/__init__.py'
--- source/virtualBuffers/__init__.py	2013-01-28 19:42:09 +0000
+++ source/virtualBuffers/__init__.py	2013-02-06 11:04:48 +0000
@@ -245,6 +245,7 @@
 		textList = []
 		landmark = field.get("landmark")
 		if formatConfig["reportLandmarks"] and reportStart and landmark and field.get("_startOfNode"):
+			# Translators: This is spoken and brailled to indicate a landmark (example output: main landmark).
 			textList.append(_("%s landmark") % aria.landmarkRoles[landmark])
 		text = super(VirtualBufferTextInfo, self).getControlFieldBraille(field, ancestors, reportStart, formatConfig)
 		if text:
@@ -640,11 +641,13 @@
 			return
 		if self._hadFirstGainFocus:
 			# If this buffer has already had focus once while loaded, this is a refresh.
+			# Translators: Reported when a page reloads (example: after refreshing a webpage).
 			speech.speakMessage(_("Refreshed"))
 		if api.getFocusObject().treeInterceptor == self:
 			self.event_treeInterceptor_gainFocus()
 
 	def _loadProgress(self):
+		# Translators: Reported while loading a document.
 		ui.message(_("Loading document..."))
 
 	def unloadBuffer(self):
@@ -858,6 +861,7 @@
 	def script_toggleScreenLayout(self,gesture):
 		config.conf["virtualBuffers"]["useScreenLayout"]=not config.conf["virtualBuffers"]["useScreenLayout"]
 		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)
 	script_toggleScreenLayout.__doc__ = _("Toggles on and off if the screen layout is preserved while rendering the document content")
 

# Begin bundle
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
YLOqcA==
