# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: joseph.lee22590@gmail.com-20130206111712-\
#   yo0k7i363d3jc799
# target_branch: http://bzr.nvaccess.org/nvda/main/
# testament_sha1: 5e730799e3fc31b49656876e586cb91206030885
# timestamp: 2013-02-06 03:41:21 -0800
# base_revision_id: jamie@jantrid.net-20130206094107-uiuvb7y8cj34dosw
# 
# 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 04:44:26 +0000
+++ source/NVDAHelper.py	2013-02-06 05:13:47 +0000
@@ -237,6 +237,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-01 04:18:13 +0000
+++ source/braille.py	2013-02-03 02:43:50 +0000
@@ -1527,7 +1527,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/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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
U//i7kinChIMlDV+YA==
