Skip to content

Commit

Permalink
sitedata per translation (github#26496)
Browse files Browse the repository at this point in the history
* sitedata per translation

* be safer

* remove test that no longer makes sense
  • Loading branch information
peterbe authored Mar 30, 2022
1 parent 7cbc56c commit 347a170
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 17 deletions.
9 changes: 6 additions & 3 deletions lib/site-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,17 @@ export default function loadSiteData() {
en: loadSiteDataFromDir(languages.en.dir),
}

// load and add other language data to siteData where keys match english keys,
// filling holes with english site data
const englishKeys = Object.keys(flat(siteData.en))
for (const language of Object.values(languages)) {
if (language.code === 'en') continue
const data = loadSiteDataFromDir(language.dir)
const keys = Object.keys(flat(data))
// First set the fallback, which might get used if not overridden
for (const key of englishKeys) {
set(siteData, `${language.code}.${key}`, get(data, key) || get(siteData.en, key))
set(siteData, `${language.code}.${key}`, get(siteData.en, key))
}
for (const key of keys) {
set(siteData, `${language.code}.${key}`, get(data, key))
}
}

Expand Down
15 changes: 1 addition & 14 deletions tests/content/site-data.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { fileURLToPath } from 'url'
import path from 'path'
import { get, isPlainObject, has } from 'lodash-es'
import { get, isPlainObject } from 'lodash-es'
import flat from 'flat'
import walkSync from 'walk-sync'
import { ParseError } from 'liquidjs'
Expand Down Expand Up @@ -88,17 +88,4 @@ describe('siteData module (English)', () => {
)}`
expect(yamlReusables.length, message).toBe(0)
})

test('all non-English data has matching English data', async () => {
for (const languageCode of Object.keys(data)) {
if (languageCode === 'en') continue

const nonEnglishKeys = Object.keys(flat(data[languageCode]))
for (const key of nonEnglishKeys) {
if (!has(data.en, key)) {
throw new Error(`matching data not found for ${languageCode}.${key}`)
}
}
}
})
})

0 comments on commit 347a170

Please sign in to comment.