1
0
Fork 0

feat(core): Added new translation proposal for designs

This commit is contained in:
joostdecock 2023-06-09 20:44:19 +02:00
parent a22879d10b
commit 66841b6a7f
16 changed files with 1051 additions and 3 deletions

View file

@ -0,0 +1,44 @@
{
"t": "Aaron A-Shirt",
"d": "Aaron is an athletic shirt or tank top.",
"s": {
"cutOneStripToFinishTheNeckOpening": "Cut one strip to finish the neck opening",
"cutTwoStripsToFinishTheArmholes": "Cut two strips to finish the armholes",
"length": "Length",
"width": "Width"
},
"o": {
"armholeDrop": {
"t": "Armhole drop",
"d": "Lower the armhole by this amount. Negative values will raise it."
},
"backlineBend": {
"t": "Back armhole shape",
"d": "Determines the shape/bend of the back of the armholes."
},
"hipsEase": {
"t": "Hips ease",
"d": "The amount of ease at your hips."
},
"necklineBend": {
"t": "Neckline shape",
"d": "Determines the shape/bend of the neckline at the front."
},
"necklineDrop": {
"t": "Neckline drop",
"d": "The amount the neck is cutout at the front."
},
"shoulderStrapPlacement": {
"t": "Shoulderstrap placement",
"d": "Determines whether the shoulder strap is placed closer to the neck (lower numbers) or the shoulder (higher numbers)."
},
"shoulderStrapWidth": {
"t": "Shoulderstrap width",
"d": "The width of the shoulder straps."
},
"stretchFactor": {
"t": "Stretch",
"d": "Determines the horizontal negative ease."
}
}
}

View file

@ -0,0 +1,44 @@
{
"t": "Aaron A-Shirt",
"d": "Aaron is an athletic shirt or tank top.",
"s": {
"cutOneStripToFinishTheNeckOpening": "Cut one strip to finish the neck opening",
"cutTwoStripsToFinishTheArmholes": "Cut two strips to finish the armholes",
"length": "Length",
"width": "Width"
},
"o": {
"armholeDrop": {
"t": "Armhole drop",
"d": "Lower the armhole by this amount. Negative values will raise it."
},
"backlineBend": {
"t": "Back armhole shape",
"d": "Determines the shape/bend of the back of the armholes."
},
"hipsEase": {
"t": "Hips ease",
"d": "The amount of ease at your hips."
},
"necklineBend": {
"t": "Neckline shape",
"d": "Determines the shape/bend of the neckline at the front."
},
"necklineDrop": {
"t": "Neckline drop",
"d": "The amount the neck is cutout at the front."
},
"shoulderStrapPlacement": {
"t": "Shoulderstrap placement",
"d": "Determines whether the shoulder strap is placed closer to the neck (lower numbers) or the shoulder (higher numbers)."
},
"shoulderStrapWidth": {
"t": "Shoulderstrap width",
"d": "The width of the shoulder straps."
},
"stretchFactor": {
"t": "Stretch",
"d": "Determines the horizontal negative ease."
}
}
}

View file

@ -0,0 +1,44 @@
{
"t": "Aaron A-Shirt",
"d": "Aaron is an athletic shirt or tank top.",
"s": {
"cutOneStripToFinishTheNeckOpening": "Cut one strip to finish the neck opening",
"cutTwoStripsToFinishTheArmholes": "Cut two strips to finish the armholes",
"length": "Length",
"width": "Width"
},
"o": {
"armholeDrop": {
"t": "Armhole drop",
"d": "Lower the armhole by this amount. Negative values will raise it."
},
"backlineBend": {
"t": "Back armhole shape",
"d": "Determines the shape/bend of the back of the armholes."
},
"hipsEase": {
"t": "Hips ease",
"d": "The amount of ease at your hips."
},
"necklineBend": {
"t": "Neckline shape",
"d": "Determines the shape/bend of the neckline at the front."
},
"necklineDrop": {
"t": "Neckline drop",
"d": "The amount the neck is cutout at the front."
},
"shoulderStrapPlacement": {
"t": "Shoulderstrap placement",
"d": "Determines whether the shoulder strap is placed closer to the neck (lower numbers) or the shoulder (higher numbers)."
},
"shoulderStrapWidth": {
"t": "Shoulderstrap width",
"d": "The width of the shoulder straps."
},
"stretchFactor": {
"t": "Stretch",
"d": "Determines the horizontal negative ease."
}
}
}

View file

@ -0,0 +1,44 @@
{
"t": "Aaron A-Shirt",
"d": "Aaron is an athletic shirt or tank top.",
"s": {
"cutOneStripToFinishTheNeckOpening": "Cut one strip to finish the neck opening",
"cutTwoStripsToFinishTheArmholes": "Cut two strips to finish the armholes",
"length": "Length",
"width": "Width"
},
"o": {
"armholeDrop": {
"t": "Armhole drop",
"d": "Lower the armhole by this amount. Negative values will raise it."
},
"backlineBend": {
"t": "Back armhole shape",
"d": "Determines the shape/bend of the back of the armholes."
},
"hipsEase": {
"t": "Hips ease",
"d": "The amount of ease at your hips."
},
"necklineBend": {
"t": "Neckline shape",
"d": "Determines the shape/bend of the neckline at the front."
},
"necklineDrop": {
"t": "Neckline drop",
"d": "The amount the neck is cutout at the front."
},
"shoulderStrapPlacement": {
"t": "Shoulderstrap placement",
"d": "Determines whether the shoulder strap is placed closer to the neck (lower numbers) or the shoulder (higher numbers)."
},
"shoulderStrapWidth": {
"t": "Shoulderstrap width",
"d": "The width of the shoulder straps."
},
"stretchFactor": {
"t": "Stretch",
"d": "Determines the horizontal negative ease."
}
}
}

View file

@ -0,0 +1,7 @@
import en from './en.json' assert { type: 'json' }
import de from './de.json' assert { type: 'json' }
import es from './es.json' assert { type: 'json' }
import fr from './fr.json' assert { type: 'json' }
import nl from './nl.json' assert { type: 'json' }
export const i18n = { en, de, es, fr, nl }

View file

@ -0,0 +1,44 @@
{
"t": "Aaron A-Shirt",
"d": "Aaron is an athletic shirt or tank top.",
"s": {
"cutOneStripToFinishTheNeckOpening": "Cut one strip to finish the neck opening",
"cutTwoStripsToFinishTheArmholes": "Cut two strips to finish the armholes",
"length": "Length",
"width": "Width"
},
"o": {
"armholeDrop": {
"t": "Armhole drop",
"d": "Lower the armhole by this amount. Negative values will raise it."
},
"backlineBend": {
"t": "Back armhole shape",
"d": "Determines the shape/bend of the back of the armholes."
},
"hipsEase": {
"t": "Hips ease",
"d": "The amount of ease at your hips."
},
"necklineBend": {
"t": "Neckline shape",
"d": "Determines the shape/bend of the neckline at the front."
},
"necklineDrop": {
"t": "Neckline drop",
"d": "The amount the neck is cutout at the front."
},
"shoulderStrapPlacement": {
"t": "Shoulderstrap placement",
"d": "Determines whether the shoulder strap is placed closer to the neck (lower numbers) or the shoulder (higher numbers)."
},
"shoulderStrapWidth": {
"t": "Shoulderstrap width",
"d": "The width of the shoulder straps."
},
"stretchFactor": {
"t": "Stretch",
"d": "Determines the horizontal negative ease."
}
}
}

View file

@ -1,4 +1,6 @@
import { Design } from '@freesewing/core'
import { Design, mergeI18n } from '@freesewing/core'
import { i18n as brianI18n } from '@freesewing/brian'
import { i18n as aaronI18n } from '../i18n/index.mjs'
import { data } from '../data.mjs'
import { back } from './back.mjs'
import { front } from './front.mjs'
@ -9,5 +11,12 @@ const Aaron = new Design({
parts: [back, front],
})
// Merge translations
const i18n = mergeI18n([brianI18n, aaronI18n], {
p: { keep: ['front', 'back'] },
o: { keep: [...Object.keys(back.options), ...Object.keys(front.options)] },
s: { drop: [] },
})
// Named exports
export { back, front, Aaron }
export { back, front, Aaron, i18n }

151
designs/brian/i18n/de.json Normal file
View file

@ -0,0 +1,151 @@
{
"t": "Brian Body Block",
"d": "Brian is a basic body block for people without breasts.",
"p": {
"back": "Back",
"front": "Front",
"sleeve": "Sleeve"
},
"o": {
"acrossBackFactor": {
"t": "Across back factor",
"d": "Controls your across back width as a factor of your shoulder to shoulder measurement."
},
"armholeDepthFactor": {
"t": "Armhole depth factor",
"d": "Controls the depth of the armhole. Higher values make a deeper armhole."
},
"backNeckCutout": {
"t": "Back neck cutout",
"d": "How deep the neck is cut out at the back"
},
"bicepsEase": {
"t": "Biceps ease",
"d": "The amount of ease at your upper arm. Note that while we try to respect this, fitting the sleeve to the armhole takes precedence over respecting the exact amount of ease."
},
"collarEase": {
"t": "Collar ease",
"d": "The amount of ease around your neck"
},
"chestEase": {
"t": "Chest ease",
"d": "The amount of ease at your chest."
},
"cuffEase": {
"t": "Cuff ease",
"d": "The amount of ease at your wrist."
},
"draftForHighBust": {
"t": "Draft for high bust",
"d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts."
},
"frontArmholeDeeper": {
"t": "Front armhole extra cutout",
"d": "How much do you want the front armhole to be cut out deeper than the back."
},
"lengthBonus": {
"t": "Length bonus",
"d": "The amount to lengthen the garment. A negative value will shorten it."
},
"s3Collar": {
"t": "Shoulder seam shift: collar side",
"d": "Increase this option to shift the shoulder seam forward on the collar side. Decreasing it shifts it backwards."
},
"s3Armhole": {
"t": "Shoulder seam shift: armhole side",
"d": "Increase this option to shift the shoulder seam forward on the armhole side. Decreasing it shifts it backwards."
},
"shoulderEase": {
"t": "Shoulder ease",
"d": "The amount of ease at your shoulder. This increases the shoulder to shoulder distance to accommodate additional layers or thickness."
},
"shoulderSlopeReduction": {
"t": "Shoulder slope reduction",
"d": "The amount by which the shoulder slope is reduced to allow for shoulder padding."
},
"sleeveLengthBonus": {
"t": "Sleeve length bonus",
"d": "The amount to lengthen the sleeve. A negative value will shorten it."
},
"sleevecapEase": {
"t": "Sleevecap ease",
"d": "The amount by which the sleevecap seam is longer than the armhole seam."
},
"sleevecapTopFactorX": {
"t": "Sleevecap top X",
"d": "Controls the horizontal location of the sleevecap top."
},
"sleevecapTopFactorY": {
"t": "Sleevecap top Y",
"d": "Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap."
},
"sleevecapBackFactorX": {
"t": "Sleevecap back X",
"d": "Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal)"
},
"sleevecapBackFactorY": {
"t": "Sleevecap back Y",
"d": "Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical)"
},
"sleevecapFrontFactorX": {
"t": "Sleevecap front X",
"d": "Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal)"
},
"sleevecapFrontFactorY": {
"t": "Sleevecap front Y",
"d": "Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical)"
},
"sleevecapQ1Offset": {
"t": "Sleevecap Q1 offset",
"d": "Controls the curvature of the sleevecap in the first quadrant (front armhole)"
},
"sleevecapQ2Offset": {
"t": "Sleevecap Q2 offset",
"d": "Controls the curvature of the sleevecap in the second quadrant (front shoulder)"
},
"sleevecapQ3Offset": {
"t": "Sleevecap Q3 offset",
"d": "Controls the curvature of the sleevecap in the third quadrant (back shoulder)"
},
"sleevecapQ4Offset": {
"t": "Sleevecap Q4 offset",
"d": "Controls the curvature of the sleevecap in the fourth quadrant (back armhole)"
},
"sleevecapQ1Spread1": {
"t": "Sleevecap Q1 downward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the armhole"
},
"sleevecapQ1Spread2": {
"t": "Sleevecap Q1 upward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the shoulder"
},
"sleevecapQ2Spread1": {
"t": "Sleevecap Q2 downward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the armhole"
},
"sleevecapQ2Spread2": {
"t": "Sleevecap Q2 upward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread1": {
"t": "Sleevecap Q3 upward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread2": {
"t": "Sleevecap Q3 downward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the armhole"
},
"sleevecapQ4Spread1": {
"t": "Sleevecap Q4 upward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder"
},
"sleevecapQ4Spread2": {
"t": "Sleevecap Q4 downward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the armhole"
},
"sleeveWidthGuarantee": {
"t": "Sleeve width guarantee",
"d": "Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole."
}
}
}

151
designs/brian/i18n/en.json Normal file
View file

@ -0,0 +1,151 @@
{
"t": "Brian Body Block",
"d": "Brian is a basic body block for people without breasts.",
"p": {
"back": "Back",
"front": "Front",
"sleeve": "Sleeve"
},
"o": {
"acrossBackFactor": {
"t": "Across back factor",
"d": "Controls your across back width as a factor of your shoulder to shoulder measurement."
},
"armholeDepthFactor": {
"t": "Armhole depth factor",
"d": "Controls the depth of the armhole. Higher values make a deeper armhole."
},
"backNeckCutout": {
"t": "Back neck cutout",
"d": "How deep the neck is cut out at the back"
},
"bicepsEase": {
"t": "Biceps ease",
"d": "The amount of ease at your upper arm. Note that while we try to respect this, fitting the sleeve to the armhole takes precedence over respecting the exact amount of ease."
},
"collarEase": {
"t": "Collar ease",
"d": "The amount of ease around your neck"
},
"chestEase": {
"t": "Chest ease",
"d": "The amount of ease at your chest."
},
"cuffEase": {
"t": "Cuff ease",
"d": "The amount of ease at your wrist."
},
"draftForHighBust": {
"t": "Draft for high bust",
"d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts."
},
"frontArmholeDeeper": {
"t": "Front armhole extra cutout",
"d": "How much do you want the front armhole to be cut out deeper than the back."
},
"lengthBonus": {
"t": "Length bonus",
"d": "The amount to lengthen the garment. A negative value will shorten it."
},
"s3Collar": {
"t": "Shoulder seam shift: collar side",
"d": "Increase this option to shift the shoulder seam forward on the collar side. Decreasing it shifts it backwards."
},
"s3Armhole": {
"t": "Shoulder seam shift: armhole side",
"d": "Increase this option to shift the shoulder seam forward on the armhole side. Decreasing it shifts it backwards."
},
"shoulderEase": {
"t": "Shoulder ease",
"d": "The amount of ease at your shoulder. This increases the shoulder to shoulder distance to accommodate additional layers or thickness."
},
"shoulderSlopeReduction": {
"t": "Shoulder slope reduction",
"d": "The amount by which the shoulder slope is reduced to allow for shoulder padding."
},
"sleeveLengthBonus": {
"t": "Sleeve length bonus",
"d": "The amount to lengthen the sleeve. A negative value will shorten it."
},
"sleevecapEase": {
"t": "Sleevecap ease",
"d": "The amount by which the sleevecap seam is longer than the armhole seam."
},
"sleevecapTopFactorX": {
"t": "Sleevecap top X",
"d": "Controls the horizontal location of the sleevecap top."
},
"sleevecapTopFactorY": {
"t": "Sleevecap top Y",
"d": "Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap."
},
"sleevecapBackFactorX": {
"t": "Sleevecap back X",
"d": "Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal)"
},
"sleevecapBackFactorY": {
"t": "Sleevecap back Y",
"d": "Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical)"
},
"sleevecapFrontFactorX": {
"t": "Sleevecap front X",
"d": "Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal)"
},
"sleevecapFrontFactorY": {
"t": "Sleevecap front Y",
"d": "Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical)"
},
"sleevecapQ1Offset": {
"t": "Sleevecap Q1 offset",
"d": "Controls the curvature of the sleevecap in the first quadrant (front armhole)"
},
"sleevecapQ2Offset": {
"t": "Sleevecap Q2 offset",
"d": "Controls the curvature of the sleevecap in the second quadrant (front shoulder)"
},
"sleevecapQ3Offset": {
"t": "Sleevecap Q3 offset",
"d": "Controls the curvature of the sleevecap in the third quadrant (back shoulder)"
},
"sleevecapQ4Offset": {
"t": "Sleevecap Q4 offset",
"d": "Controls the curvature of the sleevecap in the fourth quadrant (back armhole)"
},
"sleevecapQ1Spread1": {
"t": "Sleevecap Q1 downward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the armhole"
},
"sleevecapQ1Spread2": {
"t": "Sleevecap Q1 upward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the shoulder"
},
"sleevecapQ2Spread1": {
"t": "Sleevecap Q2 downward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the armhole"
},
"sleevecapQ2Spread2": {
"t": "Sleevecap Q2 upward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread1": {
"t": "Sleevecap Q3 upward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread2": {
"t": "Sleevecap Q3 downward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the armhole"
},
"sleevecapQ4Spread1": {
"t": "Sleevecap Q4 upward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder"
},
"sleevecapQ4Spread2": {
"t": "Sleevecap Q4 downward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the armhole"
},
"sleeveWidthGuarantee": {
"t": "Sleeve width guarantee",
"d": "Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole."
}
}
}

151
designs/brian/i18n/es.json Normal file
View file

@ -0,0 +1,151 @@
{
"t": "Brian Body Block",
"d": "Brian is a basic body block for people without breasts.",
"p": {
"back": "Back",
"front": "Front",
"sleeve": "Sleeve"
},
"o": {
"acrossBackFactor": {
"t": "Across back factor",
"d": "Controls your across back width as a factor of your shoulder to shoulder measurement."
},
"armholeDepthFactor": {
"t": "Armhole depth factor",
"d": "Controls the depth of the armhole. Higher values make a deeper armhole."
},
"backNeckCutout": {
"t": "Back neck cutout",
"d": "How deep the neck is cut out at the back"
},
"bicepsEase": {
"t": "Biceps ease",
"d": "The amount of ease at your upper arm. Note that while we try to respect this, fitting the sleeve to the armhole takes precedence over respecting the exact amount of ease."
},
"collarEase": {
"t": "Collar ease",
"d": "The amount of ease around your neck"
},
"chestEase": {
"t": "Chest ease",
"d": "The amount of ease at your chest."
},
"cuffEase": {
"t": "Cuff ease",
"d": "The amount of ease at your wrist."
},
"draftForHighBust": {
"t": "Draft for high bust",
"d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts."
},
"frontArmholeDeeper": {
"t": "Front armhole extra cutout",
"d": "How much do you want the front armhole to be cut out deeper than the back."
},
"lengthBonus": {
"t": "Length bonus",
"d": "The amount to lengthen the garment. A negative value will shorten it."
},
"s3Collar": {
"t": "Shoulder seam shift: collar side",
"d": "Increase this option to shift the shoulder seam forward on the collar side. Decreasing it shifts it backwards."
},
"s3Armhole": {
"t": "Shoulder seam shift: armhole side",
"d": "Increase this option to shift the shoulder seam forward on the armhole side. Decreasing it shifts it backwards."
},
"shoulderEase": {
"t": "Shoulder ease",
"d": "The amount of ease at your shoulder. This increases the shoulder to shoulder distance to accommodate additional layers or thickness."
},
"shoulderSlopeReduction": {
"t": "Shoulder slope reduction",
"d": "The amount by which the shoulder slope is reduced to allow for shoulder padding."
},
"sleeveLengthBonus": {
"t": "Sleeve length bonus",
"d": "The amount to lengthen the sleeve. A negative value will shorten it."
},
"sleevecapEase": {
"t": "Sleevecap ease",
"d": "The amount by which the sleevecap seam is longer than the armhole seam."
},
"sleevecapTopFactorX": {
"t": "Sleevecap top X",
"d": "Controls the horizontal location of the sleevecap top."
},
"sleevecapTopFactorY": {
"t": "Sleevecap top Y",
"d": "Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap."
},
"sleevecapBackFactorX": {
"t": "Sleevecap back X",
"d": "Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal)"
},
"sleevecapBackFactorY": {
"t": "Sleevecap back Y",
"d": "Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical)"
},
"sleevecapFrontFactorX": {
"t": "Sleevecap front X",
"d": "Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal)"
},
"sleevecapFrontFactorY": {
"t": "Sleevecap front Y",
"d": "Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical)"
},
"sleevecapQ1Offset": {
"t": "Sleevecap Q1 offset",
"d": "Controls the curvature of the sleevecap in the first quadrant (front armhole)"
},
"sleevecapQ2Offset": {
"t": "Sleevecap Q2 offset",
"d": "Controls the curvature of the sleevecap in the second quadrant (front shoulder)"
},
"sleevecapQ3Offset": {
"t": "Sleevecap Q3 offset",
"d": "Controls the curvature of the sleevecap in the third quadrant (back shoulder)"
},
"sleevecapQ4Offset": {
"t": "Sleevecap Q4 offset",
"d": "Controls the curvature of the sleevecap in the fourth quadrant (back armhole)"
},
"sleevecapQ1Spread1": {
"t": "Sleevecap Q1 downward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the armhole"
},
"sleevecapQ1Spread2": {
"t": "Sleevecap Q1 upward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the shoulder"
},
"sleevecapQ2Spread1": {
"t": "Sleevecap Q2 downward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the armhole"
},
"sleevecapQ2Spread2": {
"t": "Sleevecap Q2 upward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread1": {
"t": "Sleevecap Q3 upward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread2": {
"t": "Sleevecap Q3 downward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the armhole"
},
"sleevecapQ4Spread1": {
"t": "Sleevecap Q4 upward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder"
},
"sleevecapQ4Spread2": {
"t": "Sleevecap Q4 downward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the armhole"
},
"sleeveWidthGuarantee": {
"t": "Sleeve width guarantee",
"d": "Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole."
}
}
}

151
designs/brian/i18n/fr.json Normal file
View file

@ -0,0 +1,151 @@
{
"t": "Brian Body Block",
"d": "Brian is a basic body block for people without breasts.",
"p": {
"back": "Back",
"front": "Front",
"sleeve": "Sleeve"
},
"o": {
"acrossBackFactor": {
"t": "Across back factor",
"d": "Controls your across back width as a factor of your shoulder to shoulder measurement."
},
"armholeDepthFactor": {
"t": "Armhole depth factor",
"d": "Controls the depth of the armhole. Higher values make a deeper armhole."
},
"backNeckCutout": {
"t": "Back neck cutout",
"d": "How deep the neck is cut out at the back"
},
"bicepsEase": {
"t": "Biceps ease",
"d": "The amount of ease at your upper arm. Note that while we try to respect this, fitting the sleeve to the armhole takes precedence over respecting the exact amount of ease."
},
"collarEase": {
"t": "Collar ease",
"d": "The amount of ease around your neck"
},
"chestEase": {
"t": "Chest ease",
"d": "The amount of ease at your chest."
},
"cuffEase": {
"t": "Cuff ease",
"d": "The amount of ease at your wrist."
},
"draftForHighBust": {
"t": "Draft for high bust",
"d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts."
},
"frontArmholeDeeper": {
"t": "Front armhole extra cutout",
"d": "How much do you want the front armhole to be cut out deeper than the back."
},
"lengthBonus": {
"t": "Length bonus",
"d": "The amount to lengthen the garment. A negative value will shorten it."
},
"s3Collar": {
"t": "Shoulder seam shift: collar side",
"d": "Increase this option to shift the shoulder seam forward on the collar side. Decreasing it shifts it backwards."
},
"s3Armhole": {
"t": "Shoulder seam shift: armhole side",
"d": "Increase this option to shift the shoulder seam forward on the armhole side. Decreasing it shifts it backwards."
},
"shoulderEase": {
"t": "Shoulder ease",
"d": "The amount of ease at your shoulder. This increases the shoulder to shoulder distance to accommodate additional layers or thickness."
},
"shoulderSlopeReduction": {
"t": "Shoulder slope reduction",
"d": "The amount by which the shoulder slope is reduced to allow for shoulder padding."
},
"sleeveLengthBonus": {
"t": "Sleeve length bonus",
"d": "The amount to lengthen the sleeve. A negative value will shorten it."
},
"sleevecapEase": {
"t": "Sleevecap ease",
"d": "The amount by which the sleevecap seam is longer than the armhole seam."
},
"sleevecapTopFactorX": {
"t": "Sleevecap top X",
"d": "Controls the horizontal location of the sleevecap top."
},
"sleevecapTopFactorY": {
"t": "Sleevecap top Y",
"d": "Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap."
},
"sleevecapBackFactorX": {
"t": "Sleevecap back X",
"d": "Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal)"
},
"sleevecapBackFactorY": {
"t": "Sleevecap back Y",
"d": "Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical)"
},
"sleevecapFrontFactorX": {
"t": "Sleevecap front X",
"d": "Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal)"
},
"sleevecapFrontFactorY": {
"t": "Sleevecap front Y",
"d": "Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical)"
},
"sleevecapQ1Offset": {
"t": "Sleevecap Q1 offset",
"d": "Controls the curvature of the sleevecap in the first quadrant (front armhole)"
},
"sleevecapQ2Offset": {
"t": "Sleevecap Q2 offset",
"d": "Controls the curvature of the sleevecap in the second quadrant (front shoulder)"
},
"sleevecapQ3Offset": {
"t": "Sleevecap Q3 offset",
"d": "Controls the curvature of the sleevecap in the third quadrant (back shoulder)"
},
"sleevecapQ4Offset": {
"t": "Sleevecap Q4 offset",
"d": "Controls the curvature of the sleevecap in the fourth quadrant (back armhole)"
},
"sleevecapQ1Spread1": {
"t": "Sleevecap Q1 downward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the armhole"
},
"sleevecapQ1Spread2": {
"t": "Sleevecap Q1 upward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the shoulder"
},
"sleevecapQ2Spread1": {
"t": "Sleevecap Q2 downward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the armhole"
},
"sleevecapQ2Spread2": {
"t": "Sleevecap Q2 upward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread1": {
"t": "Sleevecap Q3 upward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread2": {
"t": "Sleevecap Q3 downward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the armhole"
},
"sleevecapQ4Spread1": {
"t": "Sleevecap Q4 upward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder"
},
"sleevecapQ4Spread2": {
"t": "Sleevecap Q4 downward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the armhole"
},
"sleeveWidthGuarantee": {
"t": "Sleeve width guarantee",
"d": "Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole."
}
}
}

View file

@ -0,0 +1,7 @@
import en from './en.json' assert { type: 'json' }
import de from './de.json' assert { type: 'json' }
import es from './es.json' assert { type: 'json' }
import fr from './fr.json' assert { type: 'json' }
import nl from './nl.json' assert { type: 'json' }
export const i18n = { en, de, es, fr, nl }

151
designs/brian/i18n/nl.json Normal file
View file

@ -0,0 +1,151 @@
{
"t": "Brian Body Block",
"d": "Brian is a basic body block for people without breasts.",
"p": {
"back": "Back",
"front": "Front",
"sleeve": "Sleeve"
},
"o": {
"acrossBackFactor": {
"t": "Across back factor",
"d": "Controls your across back width as a factor of your shoulder to shoulder measurement."
},
"armholeDepthFactor": {
"t": "Armhole depth factor",
"d": "Controls the depth of the armhole. Higher values make a deeper armhole."
},
"backNeckCutout": {
"t": "Back neck cutout",
"d": "How deep the neck is cut out at the back"
},
"bicepsEase": {
"t": "Biceps ease",
"d": "The amount of ease at your upper arm. Note that while we try to respect this, fitting the sleeve to the armhole takes precedence over respecting the exact amount of ease."
},
"collarEase": {
"t": "Collar ease",
"d": "The amount of ease around your neck"
},
"chestEase": {
"t": "Chest ease",
"d": "The amount of ease at your chest."
},
"cuffEase": {
"t": "Cuff ease",
"d": "The amount of ease at your wrist."
},
"draftForHighBust": {
"t": "Draft for high bust",
"d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts."
},
"frontArmholeDeeper": {
"t": "Front armhole extra cutout",
"d": "How much do you want the front armhole to be cut out deeper than the back."
},
"lengthBonus": {
"t": "Length bonus",
"d": "The amount to lengthen the garment. A negative value will shorten it."
},
"s3Collar": {
"t": "Shoulder seam shift: collar side",
"d": "Increase this option to shift the shoulder seam forward on the collar side. Decreasing it shifts it backwards."
},
"s3Armhole": {
"t": "Shoulder seam shift: armhole side",
"d": "Increase this option to shift the shoulder seam forward on the armhole side. Decreasing it shifts it backwards."
},
"shoulderEase": {
"t": "Shoulder ease",
"d": "The amount of ease at your shoulder. This increases the shoulder to shoulder distance to accommodate additional layers or thickness."
},
"shoulderSlopeReduction": {
"t": "Shoulder slope reduction",
"d": "The amount by which the shoulder slope is reduced to allow for shoulder padding."
},
"sleeveLengthBonus": {
"t": "Sleeve length bonus",
"d": "The amount to lengthen the sleeve. A negative value will shorten it."
},
"sleevecapEase": {
"t": "Sleevecap ease",
"d": "The amount by which the sleevecap seam is longer than the armhole seam."
},
"sleevecapTopFactorX": {
"t": "Sleevecap top X",
"d": "Controls the horizontal location of the sleevecap top."
},
"sleevecapTopFactorY": {
"t": "Sleevecap top Y",
"d": "Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap."
},
"sleevecapBackFactorX": {
"t": "Sleevecap back X",
"d": "Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal)"
},
"sleevecapBackFactorY": {
"t": "Sleevecap back Y",
"d": "Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical)"
},
"sleevecapFrontFactorX": {
"t": "Sleevecap front X",
"d": "Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal)"
},
"sleevecapFrontFactorY": {
"t": "Sleevecap front Y",
"d": "Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical)"
},
"sleevecapQ1Offset": {
"t": "Sleevecap Q1 offset",
"d": "Controls the curvature of the sleevecap in the first quadrant (front armhole)"
},
"sleevecapQ2Offset": {
"t": "Sleevecap Q2 offset",
"d": "Controls the curvature of the sleevecap in the second quadrant (front shoulder)"
},
"sleevecapQ3Offset": {
"t": "Sleevecap Q3 offset",
"d": "Controls the curvature of the sleevecap in the third quadrant (back shoulder)"
},
"sleevecapQ4Offset": {
"t": "Sleevecap Q4 offset",
"d": "Controls the curvature of the sleevecap in the fourth quadrant (back armhole)"
},
"sleevecapQ1Spread1": {
"t": "Sleevecap Q1 downward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the armhole"
},
"sleevecapQ1Spread2": {
"t": "Sleevecap Q1 upward spread",
"d": "Controls the spread of the sleevecap first quadrant curvature towards the shoulder"
},
"sleevecapQ2Spread1": {
"t": "Sleevecap Q2 downward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the armhole"
},
"sleevecapQ2Spread2": {
"t": "Sleevecap Q2 upward spread",
"d": "Controls the spread of the sleevecap second quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread1": {
"t": "Sleevecap Q3 upward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the shoulder"
},
"sleevecapQ3Spread2": {
"t": "Sleevecap Q3 downward spread",
"d": "Controls the spread of the sleevecap third quadrant curvature towards the armhole"
},
"sleevecapQ4Spread1": {
"t": "Sleevecap Q4 upward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder"
},
"sleevecapQ4Spread2": {
"t": "Sleevecap Q4 downward spread",
"d": "Controls the spread of the sleevecap fourth quadrant curvature towards the armhole"
},
"sleeveWidthGuarantee": {
"t": "Sleeve width guarantee",
"d": "Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole."
}
}
}

View file

@ -1,4 +1,5 @@
import { Design } from '@freesewing/core'
import { i18n } from '../i18n/index.mjs'
import { data } from '../data.mjs'
import { back } from './back.mjs'
import { front } from './front.mjs'
@ -14,4 +15,4 @@ const Brian = new Design({
})
// Named exports
export { back, front, sleeve, base, sleevecap, Brian }
export { back, front, sleeve, base, sleevecap, Brian, i18n }

View file

@ -26,6 +26,7 @@ import {
lineIntersectsCircle,
lineIntersectsCurve,
linesIntersect,
mergeI18n,
pctBasedOn,
pointOnBeam,
pointOnCurve,
@ -70,6 +71,7 @@ export {
lineIntersectsCircle,
lineIntersectsCurve,
linesIntersect,
mergeI18n,
pctBasedOn,
pointOnBeam,
pointOnCurve,

View file

@ -441,6 +441,34 @@ export function lineIntersectsCurve(start, end, from, cp1, cp2, to) {
else return intersections
}
/**
* Helper method to merge translation files from different designs
*
* @param {object} translations - One or more translation objects
* @return {object} result - A merged object of translations
*/
export function mergeI18n(designs, options) {
const i18n = {}
for (const design of designs) {
for (const lang in design) {
const obj = design[lang]
if (typeof i18n[lang] === 'undefined') i18n[lang] = {}
if (obj.t) i18n[lang].t = obj.t
if (obj.d) i18n[lang].d = obj.d
for (const section of 'spo') {
if (obj[section]) {
if (typeof i18n[lang][section] === 'undefined') i18n[lang][section] = {}
for (const [key, val] of Object.entries(obj[section])) {
if (__keepTranslation(key, options[section])) i18n[lang][section][key] = val
}
}
}
}
}
return i18n
}
/**
* Helper method to calculate abolute option value based on a measurement
*
@ -681,6 +709,25 @@ export function __macroName(name) {
return `__macro_${name}`
}
/**
* Returns true if we want to keep the translation
* Called by mergeI18n
*
* @private
* @param {string} key - The translation key
* @param {object} options - The options (for this particular section of the translation file)
* @return {bool} result - Whether or not to keep the translation
*/
function __keepTranslation(key, options) {
// Drop it?
if (options.drop && options.drop.includes(key)) return false
// Keep only some and not this one?
if (options.keep && !options.keep.includes(key)) return false
// Keep it
return true
}
/**
* Helper method to parse an (SVG) transform string
*