# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: joseph.lee22590@gmail.com-20130203024350-\
#   j24mshlh43tuiitj
# target_branch: http://bzr.nvaccess.org/nvda/main/
# testament_sha1: 90f176d9c3bc45bc35044a9c387cd416eb415e6f
# timestamp: 2013-02-02 18:56:58 -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/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/speech.py'
--- source/speech.py	2012-12-06 00:38:28 +0000
+++ source/speech.py	2013-02-03 02:43:50 +0000
@@ -831,6 +831,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 +845,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 +853,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 +861,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 +937,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 +964,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 +997,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 +1168,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 +1178,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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
P+LuSKcKEh4Nt0FA
