# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: manish10@gmail.com-20130222110106-qqs68d0y28k2nixv
# target_branch: http://bzr.nvaccess.org/nvda/main/
# testament_sha1: 1326762369902dfa5774c1758b4a88fa0b66d49f
# timestamp: 2013-02-22 16:48:03 +0530
# base_revision_id: manish10@gmail.com-20130204084635-r63czp1ocfnbkzh6
# 
# Begin patch
=== modified file 'nvdaHelper/remote/winword.cpp'
--- nvdaHelper/remote/winword.cpp	2013-02-01 04:54:31 +0000
+++ nvdaHelper/remote/winword.cpp	2013-02-22 11:01:06 +0000
@@ -12,7 +12,7 @@
 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 */
 
-#define WIN32_LEAN_AND_MEAN 
+#define WIN32_LEAN_AND_MEAN
 
 #include <sstream>
 #include <comdef.h>
@@ -46,6 +46,7 @@
 #define wdDISPID_RANGE_END 4
 #define wdDISPID_RANGE_INFORMATION 313
 #define wdDISPID_RANGE_STYLE 151
+#define wdDISPID_RANGE_LANGUAGEID 153
 #define wdDISPID_STYLE_NAMELOCAL 0
 #define wdDISPID_RANGE_SPELLINGERRORS 316
 #define wdDISPID_SPELLINGERRORS_COUNT 1
@@ -76,7 +77,7 @@
 #define wdDISPID_ENDNOTE_INDEX 6
 #define wdDISPID_RANGE_INLINESHAPES 319
 #define wdDISPID_INLINESHAPES_COUNT 1
-#define wdDISPID_INLINESHAPES_ITEM 0 
+#define wdDISPID_INLINESHAPES_ITEM 0
 #define wdDISPID_INLINESHAPE_TYPE 6
 #define wdDISPID_INLINESHAPE_ALTERNATIVETEXT 131
 #define wdDISPID_RANGE_HYPERLINKS 156
@@ -117,6 +118,9 @@
 #define wdAlignParagraphCenter 1
 #define wdAlignParagraphRight 2
 #define wdAlignParagraphJustify 3
+#define wdLanguageNone 0  //&H0
+#define wdNoProofing 1024  //&H400
+#define wdLanguageUnknown 9999999
 
 #define formatConfig_reportFontName 1
 #define formatConfig_reportFontSize 2
@@ -132,10 +136,11 @@
 #define formatConfig_reportLinks 2048
 #define formatConfig_reportComments 4096
 #define formatConfig_reportHeadings 8192
+#define formatConfig_reportLanguage 16384
 
 #define formatConfig_fontFlags (formatConfig_reportFontName|formatConfig_reportFontSize|formatConfig_reportFontAttributes|formatConfig_reportColor)
 #define formatConfig_initialFormatFlags (formatConfig_reportPage|formatConfig_reportLineNumber|formatConfig_reportTables|formatConfig_reportHeadings)
- 
+
 UINT wm_winword_expandToLine=0;
 typedef struct {
 	int offset;
@@ -391,7 +396,7 @@
 				}
 			}
 		}
-	} 
+	}
 	if(formatConfig&formatConfig_reportSpellingErrors) {
 		IDispatchPtr pDispatchSpellingErrors=NULL;
 		if(_com_dispatch_raw_propget(pDispatchRange,wdDISPID_RANGE_SPELLINGERRORS,VT_DISPATCH,&pDispatchSpellingErrors)==S_OK&&pDispatchSpellingErrors) {
@@ -400,7 +405,13 @@
 				formatAttribsStream<<L"invalid-spelling=\""<<iVal<<L"\" ";
 			}
 		}
-	} 
+	}
+	int languageId = 0;
+	if (formatConfig&formatConfig_reportLanguage && _com_dispatch_raw_propget(pDispatchRange,	wdDISPID_RANGE_LANGUAGEID, VT_I4, &languageId)==S_OK) {
+		if (languageId != wdLanguageNone && languageId != wdNoProofing && languageId != wdLanguageUnknown) {
+			formatAttribsStream<<L"wdLanguageId=\""<<languageId<<L"\" ";
+		}
+	}
 }
 
 inline int getInlineShapesCount(IDispatch* pDispatchRange) {
@@ -411,7 +422,7 @@
 	}
 	if(_com_dispatch_raw_propget(pDispatchShapes,wdDISPID_INLINESHAPES_COUNT,VT_I4,&count)!=S_OK||count<=0) {
 		return 0;
-	} 
+	}
 	return count;
 }
 
@@ -474,7 +485,7 @@
 	BSTR text;
 } winword_getTextInRange_args;
 void winword_getTextInRange_helper(HWND hwnd, winword_getTextInRange_args* args) {
-	//Fetch all needed objects
+		//Fetch all needed objects
 	//Get the window object
 	IDispatchPtr pDispatchWindow=NULL;
 	if(AccessibleObjectFromWindow(hwnd,OBJID_NATIVEOM,IID_IDispatch,(void**)&pDispatchWindow)!=S_OK) {
@@ -501,6 +512,7 @@
 	wostringstream XMLStream;
 	int neededClosingControlTagCount=0;
 	int storyType=0;
+
 	_com_dispatch_raw_propget(pDispatchRange,wdDISPID_RANGE_STORYTYPE,VT_I4,&storyType);
 	XMLStream<<L"<control wdStoryType=\""<<storyType<<L"\">";
 	neededClosingControlTagCount+=1;
@@ -632,7 +644,7 @@
 	return RPC_S_OK;
 }
 
-error_status_t nvdaInProcUtils_winword_getTextInRange(handle_t bindingHandle, const long windowHandle, const int startOffset, const int endOffset, const long formatConfig, BSTR* text) { 
+error_status_t nvdaInProcUtils_winword_getTextInRange(handle_t bindingHandle, const long windowHandle, const int startOffset, const int endOffset, const long formatConfig, BSTR* text) {
 	winword_getTextInRange_args args={startOffset,endOffset,formatConfig,NULL};
 	SendMessage((HWND)windowHandle,wm_winword_getTextInRange,(WPARAM)&args,0);
 	*text=args.text;

=== modified file 'source/NVDAObjects/window/winword.py'
--- source/NVDAObjects/window/winword.py	2012-07-18 04:58:51 +0000
+++ source/NVDAObjects/window/winword.py	2013-02-22 11:01:06 +0000
@@ -8,6 +8,8 @@
 from comtypes import COMError, GUID, BSTR
 import comtypes.client
 import comtypes.automation
+import locale
+import languageHandler
 import ui
 import NVDAHelper
 import XMLFormatting
@@ -124,6 +126,7 @@
 	"reportLinks":2048,
 	"reportComments":4096,
 	"reportHeadings":8192,
+	"autoLanguageSwitching":16384,	
 }
 
 class WordDocumentTextInfo(textInfos.TextInfo):
@@ -172,6 +175,7 @@
 	def getTextWithFields(self,formatConfig=None):
 		if not formatConfig:
 			formatConfig=config.conf['documentFormatting']
+		formatConfig['autoLanguageSwitching']=config.conf['speech'].get('autoLanguageSwitching',False)
 		startOffset=self._rangeObj.start
 		endOffset=self._rangeObj.end
 		if startOffset==endOffset:
@@ -227,7 +231,15 @@
 	def _normalizeFormatField(self,field):
 		color=field.pop('color',None)
 		if color is not None:
-			field['color']=colors.RGB.fromCOLORREF(int(color))
+			field['color']=colors.RGB.fromCOLORREF(int(color))		
+		languageId = int(field.pop('wdLanguageId',0))
+		if languageId:
+			try:
+				lang = locale.windows_locale[languageId]
+				if lang:
+					field['language']=languageHandler.normalizeLanguage(lang)
+			except:
+				pass			
 		return field
 
 	def expand(self,unit):

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