@@ -23,6 +23,8 @@ internal abstract class Transformer
2323 protected readonly Dictionary < string , ( string book , string url , string titleEn ) > PageLinks ;
2424 protected readonly Dictionary < string , string > MovedPages ;
2525
26+ protected readonly Dictionary < string , Dictionary < string , string > > Titles = [ ] ;
27+
2628 readonly Dictionary < string , List < ( string message , TextPosition ? position ) > > Problems = [ ] ;
2729 readonly Dictionary < string , int > ProblemCounts = [ ] ;
2830
@@ -105,13 +107,29 @@ protected void Transform(string sourceFile, string destinationFile, Nav nav, str
105107 document . ToHtml ( sw , HtmlMarkupFormatter . Instance ) ;
106108 }
107109
108- void Transform ( IHtmlDocument document , string sourceFile , Nav nav , string language , INodeList headerNodes , INodeList ? bannerNodes )
110+ protected static string GetPageTitle ( string sourceFile )
109111 {
110- if ( document . QuerySelector ( "h1.firstHeading" ) is IElement firstHeading )
112+ using var fs = new FileStream ( sourceFile , FileMode . Open , FileAccess . Read ) ;
113+ var parser = new HtmlParser ( ) ;
114+ var document = parser . ParseDocument ( fs ) ;
115+
116+ return GetPageTitle ( document ) ;
117+ }
118+
119+ private static string GetPageTitle ( IHtmlDocument document )
120+ {
121+ if ( document . QuerySelector ( "h1" ) is IElement firstHeading )
111122 {
112- document . Title = firstHeading . Text ( ) ;
123+ return firstHeading . Text ( ) ;
113124 }
114125
126+ return "" ;
127+ }
128+
129+ void Transform ( IHtmlDocument document , string sourceFile , Nav nav , string language , INodeList headerNodes , INodeList ? bannerNodes )
130+ {
131+ document . Title = GetPageTitle ( document ) ;
132+
115133 var head = document . Head ! ;
116134 var body = document . Body ! ;
117135
@@ -134,8 +152,8 @@ void Transform(IHtmlDocument document, string sourceFile, Nav nav, string langua
134152 TransformImage ( img , sourceFile , language , sourceDir ) ;
135153 }
136154
137- var familyDiv = CreateNavDiv ( document , nav , sourceDir , language ) ;
138- body . AppendChild ( familyDiv ) ;
155+ var navDataDiv = CreateNavDataDiv ( document , nav , sourceDir , language ) ;
156+ body . AppendChild ( navDataDiv ) ;
139157
140158 var loading = document . CreateElement < IHtmlDivElement > ( ) ;
141159 loading . ClassName = "loading" ;
@@ -150,38 +168,38 @@ void Transform(IHtmlDocument document, string sourceFile, Nav nav, string langua
150168 body . AppendNodes ( loading , mainContent ) ;
151169 }
152170
153- private IHtmlDivElement CreateNavDiv ( IHtmlDocument document , Nav nav , string sourceDir , string language )
171+ private IHtmlDivElement CreateNavDataDiv ( IHtmlDocument document , Nav nav , string sourceDir , string language )
154172 {
155- var familyDiv = document . CreateElement < IHtmlDivElement > ( ) ;
173+ var navDataDiv = document . CreateElement < IHtmlDivElement > ( ) ;
156174
157- familyDiv . Id = "doc-nav-data" ;
158- familyDiv . IsHidden = true ;
175+ navDataDiv . Id = "doc-nav-data" ;
176+ navDataDiv . IsHidden = true ;
159177
160178 if ( ! String . IsNullOrEmpty ( nav . Parent ) )
161179 {
162180 if ( TryResolveHref ( sourceDir , language , "../" + nav . Parent , out var url , out var _ ) )
163181 {
164- familyDiv . SetAttribute ( "data-parent-link" , url ) ;
182+ navDataDiv . SetAttribute ( "data-parent-link" , url ) ;
165183 }
166184 }
167185 else
168186 {
169- familyDiv . SetAttribute ( "data-parent-link" , language == "en" ? "/" : $ "/{ language } ") ;
187+ navDataDiv . SetAttribute ( "data-parent-link" , language == "en" ? "/" : $ "/{ language } ") ;
170188 }
171189
172190 if ( nav . Siblings is not null )
173191 {
174192 var ul = CreateDataUL ( "doc-siblings-data" , nav . Siblings ) ;
175- familyDiv . AppendChild ( ul ) ;
193+ navDataDiv . AppendChild ( ul ) ;
176194 }
177195
178196 if ( nav . Children is not null )
179197 {
180198 var ul = CreateDataUL ( "doc-children-data" , nav . Children ) ;
181- familyDiv . AppendChild ( ul ) ;
199+ navDataDiv . AppendChild ( ul ) ;
182200 }
183201
184- return familyDiv ;
202+ return navDataDiv ;
185203
186204 IHtmlUnorderedListElement CreateDataUL ( string id , string [ ] files )
187205 {
@@ -193,12 +211,12 @@ IHtmlUnorderedListElement CreateDataUL(string id, string[] files)
193211 {
194212 var li = document . CreateElement < IHtmlListItemElement > ( ) ;
195213
196- if ( TryResolveHref ( sourceDir , language , "../" + path , out var url , out var titleEn ) )
214+ if ( TryResolveHref ( sourceDir , language , "../" + path , out var url , out var _ ) )
197215 {
198216 var a = document . CreateElement < IHtmlAnchorElement > ( ) ;
199217
200218 a . SetAttribute ( "href" , url ) ;
201- a . TextContent = titleEn ?? "" ;
219+ a . TextContent = Titles [ language ] [ path ] ;
202220
203221 li . AppendChild ( a ) ;
204222 }
0 commit comments