Skip to content

Commit 4f07ccd

Browse files
heiskrCopilot
andauthored
Fix russian learning track errors round 2 (#55332)
Co-authored-by: Copilot <[email protected]>
1 parent 73d0e53 commit 4f07ccd

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

src/learning-track/lib/get-link-data.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import findPage from '#src/frame/lib/find-page.js'
33
import nonEnterpriseDefaultVersion from '#src/versions/lib/non-enterprise-default-version.js'
44
import removeFPTFromPath from '#src/versions/lib/remove-fpt-from-path.js'
55
import { renderContent } from '#src/content-render/index.js'
6+
import { executeWithFallback } from '#src/languages/lib/render-with-fallback.js'
67

78
// rawLinks is an array of paths: [ '/foo' ]
89
// we need to convert it to an array of localized objects: [ { href: '/en/foo', title: 'Foo', intro: 'Description here' } ]
@@ -41,7 +42,13 @@ async function processLink(link, context, option) {
4142
const opts = { textOnly: true }
4243
const linkHref = link.href || link
4344
// Parse the link in case it includes Liquid conditionals
44-
const linkPath = linkHref.includes('{') ? await renderContent(linkHref, context, opts) : linkHref
45+
const linkPath = linkHref.includes('{')
46+
? await executeWithFallback(
47+
context,
48+
() => renderContent(linkHref, context, opts),
49+
() => '', // todo get english linkHref
50+
)
51+
: linkHref
4552
// If the link was `{% ifversion ghes %}/admin/foo/bar{% endifversion %}`
4653
// the `context.currentVersion` was `enterprise-cloud`, the final
4754
// output would become '' (empty string).

src/learning-track/lib/process-learning-tracks.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { renderContent } from '#src/content-render/index.js'
21
import getLinkData from './get-link-data.js'
32
import getApplicableVersions from '#src/versions/lib/get-applicable-versions.js'
43
import { getDataByLanguage } from '#src/data-directory/lib/get-data.js'
4+
import { renderContent } from '#src/content-render/index.js'
55
import { executeWithFallback } from '#src/languages/lib/render-with-fallback.js'
66

77
const renderOpts = { textOnly: true }
@@ -18,7 +18,11 @@ export default async function processLearningTracks(rawLearningTracks, context)
1818
for (const rawTrackName of rawLearningTracks) {
1919
// Track names in frontmatter may include Liquid conditionals.
2020
const renderedTrackName = rawTrackName.includes('{')
21-
? await renderContent(rawTrackName, context, renderOpts)
21+
? await executeWithFallback(
22+
context,
23+
() => renderContent(rawTrackName, context, renderOpts),
24+
() => '', // todo use english rawTrackName
25+
)
2226
: rawTrackName
2327
if (!renderedTrackName) continue
2428

src/learning-track/middleware/learning-track.ts

+11-18
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type {
1111
import { getPathWithoutLanguage, getPathWithoutVersion } from '@/frame/lib/path-utils.js'
1212
import getLinkData from '../lib/get-link-data.js'
1313
import { renderContent } from '@/content-render/index.js'
14+
import { executeWithFallback } from '@/languages/lib/render-with-fallback.js'
1415
import { getDeepDataByLanguage } from '@/data-directory/lib/get-data.js'
1516

1617
export default async function learningTrack(
@@ -87,13 +88,11 @@ export default async function learningTrack(
8788
const renderOpts = { textOnly: true }
8889
// Some translated titles are known to have broken Liquid, so we need to
8990
// try rendering them in English as a fallback.
90-
let trackTitle = ''
91-
try {
92-
trackTitle = (await renderContent(track.title, req.context, renderOpts)) as string
93-
} catch {
94-
const englishFallbackContext = { ...req.context, currentLanguage: 'en' }
95-
trackTitle = (await renderContent(track.title, englishFallbackContext, renderOpts)) as string
96-
}
91+
const trackTitle = await executeWithFallback(
92+
req.context,
93+
() => renderContent(track.title, req.context, renderOpts),
94+
() => '', // todo use english track.title
95+
)
9796

9897
const currentLearningTrack: LearningTrack = { trackName, trackProduct, trackTitle }
9998
const guidePath = getPathWithoutLanguage(getPathWithoutVersion(req.pagePath))
@@ -179,17 +178,11 @@ async function indexOfLearningTrackGuide(
179178
const renderOpts = { textOnly: true }
180179
for (let i = 0; i < trackGuidePaths.length; i++) {
181180
// Learning track URLs may have Liquid conditionals.
182-
let renderedGuidePath = ''
183-
try {
184-
renderedGuidePath = await renderContent(trackGuidePaths[i], context, renderOpts)
185-
} catch {
186-
const englishFallbackContext = { ...context, currentLanguage: 'en' }
187-
renderedGuidePath = await renderContent(
188-
trackGuidePaths[i],
189-
englishFallbackContext,
190-
renderOpts,
191-
)
192-
}
181+
let renderedGuidePath = await executeWithFallback(
182+
context,
183+
() => renderContent(trackGuidePaths[i], context, renderOpts),
184+
() => '', // todo use english trackGuidePaths[i]
185+
)
193186

194187
if (!renderedGuidePath) continue
195188

0 commit comments

Comments
 (0)