@@ -895,6 +895,26 @@ let rec private readXmlDoc (reader: XmlReader) (indentationSize: int) (acc: Map<
895895let private xmlDocCache =
896896 Collections.Concurrent.ConcurrentDictionary< string, Map< string, XmlDocMember>>()
897897
898+ let private findCultures v =
899+ let rec loop state ( v : System.Globalization.CultureInfo ) =
900+ let state ' = v.Name :: state
901+
902+ if v.Parent = System.Globalization.CultureInfo.InvariantCulture then
903+ " " :: state' |> List.rev
904+ else
905+ loop state' v.Parent
906+
907+ loop [] v
908+
909+ let private findLocalizedXmlFile ( xmlFile : string ) =
910+ let xmlName = Path.GetFileName xmlFile
911+ let path = Path.GetDirectoryName xmlFile
912+
913+ findCultures System.Globalization.CultureInfo.CurrentUICulture
914+ |> List.map ( fun culture -> Path.Combine( path, culture, xmlName))
915+ |> List.tryFind ( fun i -> File.Exists i)
916+ |> Option.defaultValue xmlFile
917+
898918let private getXmlDoc dllFile =
899919 let xmlFile = Path.ChangeExtension( dllFile, " .xml" )
900920 //Workaround for netstandard.dll
@@ -908,6 +928,8 @@ let private getXmlDoc dllFile =
908928 else
909929 xmlFile
910930
931+ let xmlFile = findLocalizedXmlFile xmlFile
932+
911933 if xmlDocCache.ContainsKey xmlFile then
912934 Some xmlDocCache.[ xmlFile]
913935 else
0 commit comments