1
0
Fork 0

fix: Handle loading of plugin i18n data in workbench

This commit is contained in:
joostdecock 2023-09-06 10:30:52 +02:00
parent 24851967ef
commit 4aa3c2786b
5 changed files with 24 additions and 4 deletions

View file

@ -16,6 +16,7 @@
"onFold": "on the fold", "onFold": "on the fold",
"onFoldAndBias": "on the fold, and on bias", "onFoldAndBias": "on the fold, and on bias",
"sewTogether": "Sew together", "sewTogether": "Sew together",
"theBlackOutideOfThisBoxShouldMeasure": "The (black) outside of this box should measure", "supportFreeSewingBecomeAPatron": "Support FreeSewing, become a patron",
"theBlackOutsideOfThisBoxShouldMeasure": "The (black) outside of this box should measure",
"theWhiteInsideOfThisBoxShouldMeasure": "The (white) inside of this box should measure" "theWhiteInsideOfThisBoxShouldMeasure": "The (white) inside of this box should measure"
} }

View file

@ -14,7 +14,7 @@ const macroDefaults = {
}, },
lead: 'FreeSewing', lead: 'FreeSewing',
link: 'FreeSewing.org/patrons/join', link: 'FreeSewing.org/patrons/join',
text: 'plugin-annotations:supportFreesewingBecomeAPatron', text: 'plugin-annotations:supportFreeSewingBecomeAPatron',
title: false, title: false,
} }

View file

@ -39,6 +39,7 @@ export const ns = [
...logNs, ...logNs,
...inspectNs, ...inspectNs,
...measiesNs, ...measiesNs,
'plugin-annotations',
] ]
const defaultUi = { const defaultUi = {
@ -184,14 +185,13 @@ export const Workbench = ({ design, Design, DynamicDocs }) => {
const pattern = const pattern =
(Design.patternConfig.measurements.length === 0 || settings.measurements !== undefined) && (Design.patternConfig.measurements.length === 0 || settings.measurements !== undefined) &&
new Design({ layout, embed: true, ...settings }) new Design({ layout, embed: true, ...settings })
// Return early if the pattern is not initialized yet // Return early if the pattern is not initialized yet
if (typeof pattern.getConfig !== 'function') return null if (typeof pattern.getConfig !== 'function') return null
const patternConfig = pattern.getConfig() const patternConfig = pattern.getConfig()
if (ui.renderer === 'svg') { if (ui.renderer === 'svg') {
// Add theme to svg renderer // Add theme to svg renderer
pattern.use(pluginI18n, (key) => t(key, { ns: design })) pattern.use(pluginI18n, (key) => t(key))
pattern.use(pluginTheme, { skipGrid: ['pages'] }) pattern.use(pluginTheme, { skipGrid: ['pages'] })
} }

View file

@ -0,0 +1,5 @@
import { i18n as annotations } from '@freesewing/plugin-annotations'
export const plugins = {
'plugin-annotations': annotations,
}

View file

@ -5,6 +5,7 @@ import yaml from 'js-yaml'
import { fileURLToPath } from 'url' import { fileURLToPath } from 'url'
import allLanguages from '../../../config/languages.json' assert { type: 'json' } import allLanguages from '../../../config/languages.json' assert { type: 'json' }
import { designs } from '../i18n/designs.mjs' import { designs } from '../i18n/designs.mjs'
import { plugins } from '../i18n/plugins.mjs'
/* /*
* This is where we configure what folders we should check for * This is where we configure what folders we should check for
@ -209,6 +210,19 @@ export const prebuildI18n = async (store) => {
} }
for (const language of languages) writeJson(store.site, language, 'designs', designNs[language]) for (const language of languages) writeJson(store.site, language, 'designs', designNs[language])
/*
* Handle plugin translations
*/
const pluginNs = {}
for (const plugin in plugins) {
for (const language of languages) {
if (typeof pluginNs[language] === 'undefined') pluginNs[language] = {}
// Write out plugin namespace files
writeJson(store.site, language, plugin, plugins[plugin][language])
}
}
for (const language of languages) writeJson(store.site, language, 'plugins', pluginNs[language])
/* /*
* Update the store * Update the store
*/ */