- {t(`options:${props.pattern.config.name}.${props.option}.description`, props.app.locale)}
+ {props.ot(`${props.option}.d`)}
{editOption
diff --git a/packages/freesewing.shared/components/workbench/inputs/measurement.js b/packages/freesewing.shared/components/workbench/inputs/measurement.js
index 08fafe73f2e..c0021d4df67 100644
--- a/packages/freesewing.shared/components/workbench/inputs/measurement.js
+++ b/packages/freesewing.shared/components/workbench/inputs/measurement.js
@@ -12,7 +12,7 @@ import { useTranslation } from 'next-i18next'
const MeasurementInput = ({ m, gist, app, updateMeasurements }) => {
const { t } = useTranslation(['app', 'measurements'])
const prefix = (app.site === 'org') ? '' : 'https://freesewing.org'
- const title = t(m)
+ const title = t(`measurements:${m}`)
const isValid = input => {
if (input === '') return ''
return !isNaN(input)
@@ -62,10 +62,23 @@ const MeasurementInput = ({ m, gist, app, updateMeasurements }) => {
input input-lg input-bordered grow text-base-content
${valid === false && 'input-error'}
${valid === true && 'input-success'}
+ border-r-0
`}
value={val}
onChange={update}
/>
+
+ {valid === ''
+ ? ''
+ : valid
+ ? '👍'
+ : '🤔'
+ }
+
{
cm
-
)
}
diff --git a/packages/freesewing.shared/components/workbench/measurements/index.js b/packages/freesewing.shared/components/workbench/measurements/index.js
index fec3c8803e0..685f0e86117 100644
--- a/packages/freesewing.shared/components/workbench/measurements/index.js
+++ b/packages/freesewing.shared/components/workbench/measurements/index.js
@@ -52,7 +52,7 @@ const WorkbenchMeasurements = ({ app, pattern, gist, updateGist }) => {
{t('measurements')}
- {t('preloadMeasurements')}
+ {t('cfp:preloadMeasurements')}
{Object.keys(groups).map(group => (
diff --git a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-bool.js b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-bool.js
index 99d1b669024..9cdeff3bd2e 100644
--- a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-bool.js
+++ b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-bool.js
@@ -17,7 +17,7 @@ const CoreSettingBool = props => {
- { t(`settings.${props.setting}.title`) }
+ { t(`settings:${props.setting}.t`) }
{ t(value ? 'yes' : 'no')}
diff --git a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-list.js b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-list.js
index 3c3e491dfea..32fa66bca25 100644
--- a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-list.js
+++ b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-list.js
@@ -25,7 +25,7 @@ const CoreSettingList = props => {
return (
- {t(`settings:${props.setting}.description`)}
+ {t(`settings:${props.setting}.d`)}
diff --git a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-mm.js b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-mm.js
index c47a8e7b9bb..86bc18aa7a4 100644
--- a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-mm.js
+++ b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-mm.js
@@ -29,7 +29,7 @@ const CoreSettingMm = props => {
return (
- {t(`settings:${props.setting}.description`)}
+ {t(`settings:${props.setting}.d`)}
{
dangerouslySetInnerHTML={{__html: formatMm(min, props.gist.units)}}
/>
{
return (
- {t(`settings:${props.setting}.description`)}
+ {t(`settings:${props.setting}.d`)}
{min}
-
+
{val}
diff --git a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-only.js b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-only.js
index 5bbb3efaf0f..07cf086e878 100644
--- a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-only.js
+++ b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-only.js
@@ -23,7 +23,7 @@ const CoreSettingOnly = props => {
return (
- {t(`settings:only.description`)}
+ {t(`settings:only.d`)}
@@ -33,7 +33,7 @@ const CoreSettingOnly = props => {
onClick={() => togglePart(part.id)}
className={`
mr-1 mb-1 text-left text-lg w-full hover:text-secondary-focus px-2
- ${props.gist?.only && props.gist.only.indexOf(part.id) !== -1 && 'font-bold text-secondary'}
+ ${props.gist?.only && props.gist.only.indexOf(part.id) !== -1 && 'font-bold text-secondary-focus'}
`}
>
{
- { t(`settings:sa.title`) }
+ { t(`settings:sa.t`) }
[ { t(`yes`) }/
{ t(`no`) } ]
diff --git a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-sa-mm.js b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-sa-mm.js
index 0ca36fe4919..9418d2fe435 100644
--- a/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-sa-mm.js
+++ b/packages/freesewing.shared/components/workbench/menu/core-settings/core-setting-sa-mm.js
@@ -31,7 +31,7 @@ const CoreSettingMm = props => {
return (
- {t(`settings.sa.description`)}
+ {t(`settings:sa.d`)}
{
dangerouslySetInnerHTML={{__html: formatMm(min, props.gist.units)}}
/>
(props.gist?.only && props.gist.only.length > 0)
? {props.gist.only.length}
- : {props.t('default')}
+ : {props.t('default')}
}
const inputs = {
@@ -100,11 +100,11 @@ const Setting = props => {
{props.setting === 'saMm'
? (
<>
- {t(`settings:sa.title`)}
+ {t(`settings:sa.t`)}
[ {t(`size`)} ]
>
)
- : {t(`settings:${props.setting}.title`)}
+ : {t(`settings:${props.setting}.t`)}
}
diff --git a/packages/freesewing.shared/components/workbench/menu/design-options/index.js b/packages/freesewing.shared/components/workbench/menu/design-options/index.js
index 57bb34081a0..ee7a13ebb04 100644
--- a/packages/freesewing.shared/components/workbench/menu/design-options/index.js
+++ b/packages/freesewing.shared/components/workbench/menu/design-options/index.js
@@ -10,7 +10,7 @@ const DesignOptions = props => {
return (
}>
- {('designOptions')}
+ {t('designOptions')}
diff --git a/packages/freesewing.shared/components/workbench/menu/design-options/option-group.js b/packages/freesewing.shared/components/workbench/menu/design-options/option-group.js
index c04d2660341..71250816236 100644
--- a/packages/freesewing.shared/components/workbench/menu/design-options/option-group.js
+++ b/packages/freesewing.shared/components/workbench/menu/design-options/option-group.js
@@ -5,7 +5,7 @@ import { Li, Ul, Details, Summary, SumDiv, Deg } from 'shared/components/workben
import { useTranslation } from 'next-i18next'
const OptionGroup = props => {
- const { t } = useTranslation(['app'])
+ const { t } = useTranslation(['optiongroups'])
const config = props.config || props.pattern.config.optionGroups[props.group]
return (
-
@@ -14,7 +14,7 @@ const OptionGroup = props => {
- { t(`optiongroups.${props.group}`) }
+ { t(props.group) }
diff --git a/packages/freesewing.shared/components/workbench/menu/design-options/option-sub-group.js b/packages/freesewing.shared/components/workbench/menu/design-options/option-sub-group.js
index 9eee8c4a142..05b28c595b2 100644
--- a/packages/freesewing.shared/components/workbench/menu/design-options/option-sub-group.js
+++ b/packages/freesewing.shared/components/workbench/menu/design-options/option-sub-group.js
@@ -4,14 +4,14 @@ import { Li, Ul, Details, Summary, SumButton, SumDiv, Deg } from 'shared/compone
import { useTranslation } from 'next-i18next'
const OptionSubGroup = props => {
- const { t } = useTranslation(['app'])
+ const { t } = useTranslation(['optiongroups'])
return Object.keys(props.sub).map(name => (
-
- { t(`optiongroups.${name}`) }
+ { t(name) }
diff --git a/packages/freesewing.shared/components/workbench/menu/design-options/option.js b/packages/freesewing.shared/components/workbench/menu/design-options/option.js
index fc2552c0552..3349fb9053a 100644
--- a/packages/freesewing.shared/components/workbench/menu/design-options/option.js
+++ b/packages/freesewing.shared/components/workbench/menu/design-options/option.js
@@ -14,7 +14,7 @@ const values = {
return (
{formatPercentage(val)}
@@ -26,17 +26,18 @@ const values = {
)
},
bool: props => {
+ const { t } = useTranslation(['app'])
const dflt = props.pattern.config.options[props.option].bool
const current = props.gist?.options?.[props.option]
return (
{props.gist?.options?.[props.option]
- ? props.t('app.yes')
- : props.t('app.no')
+ ? t('yes')
+ : t('no')
}
)
@@ -45,22 +46,22 @@ const values = {
const dflt = props.pattern.config.options[props.option].count
const current = props.gist?.options?.[props.option]
return (dflt==current || typeof current === 'undefined')
- ? {dflt}
+ ? {dflt}
: {current}
},
list: props => {
const dflt = props.pattern.config.options[props.option].dflt
const current = props.gist?.options?.[props.option]
- const prefix = `options.${props.pattern.config.name}.${props.option}.options.`
+ const prefix = `${props.option}.o.`
return (dflt==current || typeof current === 'undefined')
- ? {props.t(prefix+dflt)}
+ ? {props.t(prefix+dflt)}
: {props.t(prefix+current)}
},
deg: props => {
const dflt = props.pattern.config.options[props.option].deg
const current = props.gist?.options?.[props.option]
return (dflt==current || typeof current === 'undefined')
- ? {dflt}°
+ ? {dflt}°
: {current}°
},
mm: props => {
@@ -84,7 +85,7 @@ const inputs = {
const Option = props => {
- const { t } = useTranslation(['app'])
+ const { t } = useTranslation([`o_${props.pattern.config.name}`])
const type = optionType(props.pattern.config.options[props.option])
const Input = inputs[type]
const Value = values[type]
@@ -103,9 +104,7 @@ const Option = props => {
-
- { t(`options.${props.pattern.config.name}.${props.option}.title`) }
-
+ {t(`${props.option}.t`) }
@@ -116,14 +115,12 @@ const Option = props => {
-
- { t(`options.${props.pattern.config.name}.${props.option}.title`) }
-
+ {t(`${props.option}.t`)}
-
+
)
diff --git a/packages/freesewing.shared/components/workbench/menu/index.js b/packages/freesewing.shared/components/workbench/menu/index.js
index 0d2b5dd2e1f..8351c19d6ba 100644
--- a/packages/freesewing.shared/components/workbench/menu/index.js
+++ b/packages/freesewing.shared/components/workbench/menu/index.js
@@ -78,8 +78,8 @@ export const TopSumTitle = props => (
)
export const SecText = props => props.raw
- ?
- : {props.children}
+ ?
+ : {props.children}
const WorkbenchMenu = props => {
return (
diff --git a/packages/freesewing.shared/components/workbench/menu/xray/disable.js b/packages/freesewing.shared/components/workbench/menu/xray/disable.js
index 5a3323fd9c2..3975f4b7dea 100644
--- a/packages/freesewing.shared/components/workbench/menu/xray/disable.js
+++ b/packages/freesewing.shared/components/workbench/menu/xray/disable.js
@@ -10,7 +10,7 @@ const DisableXray = props => {
- {t('cfp:thingIsEnabled', { thing: t('settings:xray.title') })}
+ {t('cfp:thingIsEnabled', { thing: t('settings:xray.t') })}
diff --git a/packages/freesewing.shared/components/workbench/menu/xray/index.js b/packages/freesewing.shared/components/workbench/menu/xray/index.js
index d213616ba44..9504fa4261a 100644
--- a/packages/freesewing.shared/components/workbench/menu/xray/index.js
+++ b/packages/freesewing.shared/components/workbench/menu/xray/index.js
@@ -16,7 +16,7 @@ const Xray = props => {
? (
<>
- {t('settings:xray.title')}
+ {t('settings:xray.t')}
>
@@ -26,10 +26,10 @@ const Xray = props => {
className={`grow ${linkClasses} hover:cursor-resize uppercase font-bold text-left`}
onClick={() => props.updateGist(['xray', 'enabled'], true)}
>
- {t('settings:xray.title')}
+ {t('settings:xray.t')}
- {t('cfp:thingIsDisabled', { thing: t('settings:xray.title') })}
+ {t('cfp:thingIsDisabled', { thing: t('settings:xray.t') })}
>
)
diff --git a/packages/freesewing.shared/components/workbench/menu/xray/list.js b/packages/freesewing.shared/components/workbench/menu/xray/list.js
index 1134dee3be3..3cfc68e707f 100644
--- a/packages/freesewing.shared/components/workbench/menu/xray/list.js
+++ b/packages/freesewing.shared/components/workbench/menu/xray/list.js
@@ -15,7 +15,7 @@ const types = {
const XrayList = props => {
const { t } = useTranslation(['app', 'parts'])
- let title = t(`parts.${props.partName}`)
+ let title = t(`parts:${props.partName}`)
if (title !== props.partName || true) title + ` (${props.partName})`
const part = props.gist.xray.parts[props.partName]
diff --git a/packages/freesewing.shared/components/wrappers/workbench.js b/packages/freesewing.shared/components/wrappers/workbench.js
index 940ea0e64b3..469184bac59 100644
--- a/packages/freesewing.shared/components/wrappers/workbench.js
+++ b/packages/freesewing.shared/components/wrappers/workbench.js
@@ -73,7 +73,7 @@ const WorkbenchWrapper = ({ app, pattern }) => {
let draft = false
if (mode === 'draft') {
draft = new pattern(gist)
- if (gist?.renderer === 'svg') patternInstance.use(theme)
+ if (gist?.renderer === 'svg') draft.use(theme)
try { draft.draft() }
catch(error) {
console.log('Failed to draft pattern', error)
diff --git a/packages/freesewing.shared/prebuild/i18n.mjs b/packages/freesewing.shared/prebuild/i18n.mjs
index 4fe0edd35e4..80ac9dff0f7 100644
--- a/packages/freesewing.shared/prebuild/i18n.mjs
+++ b/packages/freesewing.shared/prebuild/i18n.mjs
@@ -36,6 +36,9 @@ const flattenL2 = content => {
for (const l2 in content[l1]) {
flat[l1][`${l2}.t`] = content[l1][l2].title
flat[l1][`${l2}.d`] = content[l1][l2].description
+ if (content[l1][l2].options) {
+ flat[l1][`${l2}.o`] = content[l1][l2].options
+ }
}
}
@@ -63,7 +66,7 @@ export const prebuildI18n = async (site) => {
const subNamespaces = flattenL2(loc.topics[namespace])
for (const subNamespace in subNamespaces) {
writeJson(
- site, locale, 'o.'+subNamespace,
+ site, locale, 'o_'+subNamespace,
subNamespaces[subNamespace]
)
}
diff --git a/packages/i18n/src/locales/en/app.yaml b/packages/i18n/src/locales/en/app.yaml
index 85865b903db..fee516fa229 100644
--- a/packages/i18n/src/locales/en/app.yaml
+++ b/packages/i18n/src/locales/en/app.yaml
@@ -65,6 +65,7 @@ documentationForDevelopers: Documentation for developers
documentationForEditors: Documentation for editors
documentationForTranslators: Documentation for translators
documentationOverview: Documentation overview
+dolls: Dolls
download: Download
draft: Draft
draftPattern: 'Draft {pattern}'
@@ -87,6 +88,7 @@ forgotLoginInstructions: "If you don't remember your password, enter your userna
freesewing: Freesewing
freesewingOnGithub: Freesewing on GitHub
garmentPatterns: Garment Patterns
+giants: Giants
github: GitHub
goAheadWeWillWait: Go ahead, we'll wait.
goodJob: Good job
@@ -221,7 +223,7 @@ whatIsThis: What is this?
withBreasts: With breasts
withoutBreasts: Without breasts
yay: Yay!
-yes: "Yes" # Keep in quotes or it will evaluate to false
+yes: "Yes" # Keep in quotes or it will evaluate to true
youAreAPatron: You are a patron
youAreNotAPatron: Your are not a patron
youAreNotLoggedIn: You are not logged in