# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: joseph.lee22590@gmail.com-20130203074004-\
#   6sjtjox9hxuwrl98
# target_branch: http://bzr.nvaccess.org/nvda/main/
# testament_sha1: d77635bae2fc3097ff195307266ca40a5ff392b6
# timestamp: 2013-02-02 23:40:46 -0800
# base_revision_id: mick@kulgan.net-20130201184515-5ijj51pjyuq7swiw
# 
# Begin patch
=== modified file 'source/NVDAHelper.py'
--- source/NVDAHelper.py	2012-11-04 01:03:14 +0000
+++ source/NVDAHelper.py	2013-02-03 02:43:50 +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/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/colors.py'
--- source/colors.py	2012-01-16 22:26:31 +0000
+++ source/colors.py	2013-02-03 02:43:50 +0000
@@ -85,22 +85,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-01 04:18:13 +0000
+++ source/core.py	2013-02-03 02:43:50 +0000
@@ -153,6 +153,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())
@@ -253,6 +254,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-01-09 09:35:39 +0000
+++ source/globalCommands.py	2013-02-03 02:43:50 +0000
@@ -877,6 +877,7 @@
 		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).
 			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")

=== modified file 'source/installer.py'
--- source/installer.py	2012-12-10 03:40:58 +0000
+++ source/installer.py	2013-02-03 07:40:04 +0000
@@ -155,8 +155,11 @@
 	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"))
@@ -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/speech.py'
--- source/speech.py	2012-12-06 00:38:28 +0000
+++ source/speech.py	2013-02-03 07:40:04 +0000
@@ -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

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