diff --git a/packages/charlie/src/beltloops.js b/packages/charlie/src/beltloops.js
index e8eaa947441..9a79a8c9056 100644
--- a/packages/charlie/src/beltloops.js
+++ b/packages/charlie/src/beltloops.js
@@ -1,6 +1,7 @@
export default (part) => {
// Shorthand
- let { store, points, Point, paths, Path, options, complete, paperless, macro, sa } = part.shorthand()
+ let { store, points, Point, paths, Path, options, complete, paperless, macro, sa } =
+ part.shorthand()
let count = options.beltLoops
let length = store.get('waistbandWidth') * 2.5 * count
diff --git a/packages/charlie/src/front.js b/packages/charlie/src/front.js
index 494a5a9e0aa..adad77ccc51 100644
--- a/packages/charlie/src/front.js
+++ b/packages/charlie/src/front.js
@@ -34,7 +34,7 @@ export default (part) => {
snippets,
Snippet,
sa,
- raise
+ raise,
} = part.shorthand()
// Helper object holding the Titan side seam path
diff --git a/packages/charlie/src/waistband-curved.js b/packages/charlie/src/waistband-curved.js
index 895a844dd8e..00a73fc3917 100644
--- a/packages/charlie/src/waistband-curved.js
+++ b/packages/charlie/src/waistband-curved.js
@@ -45,7 +45,10 @@ export default (part) => {
points.cfRightBottomCp = points.cfRightBottom.shift(angle - 90, a * radius)
points.cfLeftTopCp = points.cfLeftTop.shift(90, a * (radius - store.get('waistbandWidth')))
- points.cfRightTopCp = points.cfRightTop.shift(angle - 90, a * (radius - store.get('waistbandWidth')))
+ points.cfRightTopCp = points.cfRightTop.shift(
+ angle - 90,
+ a * (radius - store.get('waistbandWidth'))
+ )
// Add fly underlap
points.edgeRightTop = points.cfRightTop.shiftTowards(
diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md
index 3035bd7a60a..98e2764ded0 100644
--- a/packages/core/CHANGELOG.md
+++ b/packages/core/CHANGELOG.md
@@ -1,6 +1,16 @@
# Change log for: @freesewing/core
+## unreleased (NaN-NaN-NaN)
+
+### Added
+
+ - Added support for snapped percentage options See https://github.com/freesewing/freesewing/discussions/1331
+
+### Changed
+
+ - Pattern.on() is now chainable as it returns the Pattern object
+
## 2.18.0 (2021-09-09)
### Fixed
diff --git a/packages/i18n/src/locales/de/app.yaml b/packages/i18n/src/locales/de/app.yaml
index 4a6651a71f6..524ad25bd00 100644
--- a/packages/i18n/src/locales/de/app.yaml
+++ b/packages/i18n/src/locales/de/app.yaml
@@ -12,7 +12,7 @@ applyThisLayout: Dieses Layout anwenden
areYouSureYouWantToContinue: Bist du sicher, dass du fortfahren möchtest?
askForHelp: Nach Hilfe fragen
automatic: Automatisch
-averagePeopleDoNotExist: "Durchschnittliche Menschen existieren nicht"
+averagePeopleDoNotExist: 'Durchschnittliche Menschen existieren nicht'
awesome: Großartig
back: Rückseite
becauseThatWouldBeReallyHelpful: Weil das wirklich hilfreich wäre.
@@ -72,7 +72,7 @@ drafts: Entwürfe
draftSettings: Entwurfseinstellungen
dragAndDropImageHere: Du kannst das Bild hier per Drag-and-Drop ablegen oder es unten manuell auswählen
emailAddress: E-Mail-Adresse
-emailWorksToo: "Falls du deinen Benutzername nicht weißt: deine E-Mail-Adresse funktioniert auch"
+emailWorksToo: 'Falls du deinen Benutzername nicht weißt: deine E-Mail-Adresse funktioniert auch'
enterEmailPickPassword: Gib deine E-Mail Adresse ein und wähle ein Passwort
export: Exportieren
exportTiledPDF: Exportieren als paginiertes PDF
@@ -81,7 +81,7 @@ fieldRemoved: '{field} entfernt'
fieldSaved: '{field} gespeichert'
filterByPattern: Filtern nach Schnittmuster
filterPatterns: Schnittmuster filtern
-forgotLoginInstructions: "Wenn du dein Passwort nicht mehr weißt: Benutzername oder E-Mail-Adresse eingeben und den Passwort zurücksetzen Knopf drücken"
+forgotLoginInstructions: 'Wenn du dein Passwort nicht mehr weißt: Benutzername oder E-Mail-Adresse eingeben und den Passwort zurücksetzen Knopf drücken'
freesewing: Freesewing
freesewingOnGithub: Freesewing auf GitHub
github: GitHub
@@ -156,7 +156,7 @@ remove: Entfernen
removeThing: '{thing} entfernen'
reportThisOnGithub: Melde dies auf GitHub
requiredMeasurements: Erforderliche Maße
-resendActivationEmailMessage: "Trage die E-Mail-Adresse ein, mit der du dich angemeldet hast, und wir senden dir eine neue Bestätigungsnachricht."
+resendActivationEmailMessage: 'Trage die E-Mail-Adresse ein, mit der du dich angemeldet hast, und wir senden dir eine neue Bestätigungsnachricht.'
resendActivationEmail: Aktivierungs-E-Mail erneut senden
resetPassword: Passwort zurücksetzen
reset: Zurücksetzen
@@ -198,7 +198,7 @@ twitter: Twitter
txt-footer: Freesewing wird erstellt von einer Gemeinschaft von Mitwirkenden
mit der finanziellen Unterstützung unserer Förderer
txt-tier2: Unsere Kategorie mit dem demokratischsten Preis. Es ist vielleicht weniger als der Preis eines Lattes, aber deine Unterstützung bedeutet uns sehr viel.
txt-tier4: Wähle diese Stufe, und wir senden dir etwas von unserem heiß begehrten Freesewing-Swag nach Hause. Egal, wo in der Welt das auch sein mag.
-txt-tier8: "Wenn du uns nicht nur unterstützen möchtest, sondern Freesewing zum Gedeihen bringen willst, ist das die Stufe für dich. Außerdem: extra Swag!"
+txt-tier8: 'Wenn du uns nicht nur unterstützen möchtest, sondern Freesewing zum Gedeihen bringen willst, ist das die Stufe für dich. Außerdem: extra Swag!'
txt-tiers: 'FreeSewing wird durch ein freiwilliges Abonnement-Modell unterstützt'
unitsInfo: Freesewing unterstützt sowohl das metrische System als auch imperiale Einheiten. Wähle einfach aus, was von beiden du hier verwenden möchtest. (Standardmäßig werden die in deinem Account konfigurierten Einheiten verwendet).
updated: Aktualisiert
@@ -240,8 +240,8 @@ noPattern: Du hast (noch) keine Schnittmuster. Erstelle ein neues Schnittmuster
modelFirst: Beginne damit, Maße hinzuzufügen
noModel: Du hast (noch) keine Maße hinzugefügt. FreeSewing kann maßgeschneiderte Schnittmuster erzeugen. Dafür benötigen wir jedoch Maße.
noModel2: Das erste, was du tun solltest, ist, eine Person hinzuzufügen und das Maßband auszupacken.
-noUserBrowsingTitle: "Du kannst nicht einfach alle Benutzer durchsuchen"
-noUserBrowsingText: "Wir haben Tausende von ihnen. Sicher gibt es Interessanteres auf unserer Seite zu tun?"
+noUserBrowsingTitle: 'Du kannst nicht einfach alle Benutzer durchsuchen'
+noUserBrowsingText: 'Wir haben Tausende von ihnen. Sicher gibt es Interessanteres auf unserer Seite zu tun?'
usePatternMeasurements: 'Verwende die Maße des Originalschnittmusters'
createReplica: Duplikat erstellen
showDetails: Details anzeigen
diff --git a/packages/i18n/src/locales/de/email.yaml b/packages/i18n/src/locales/de/email.yaml
index e45a2b99161..d5d3bb8d290 100644
--- a/packages/i18n/src/locales/de/email.yaml
+++ b/packages/i18n/src/locales/de/email.yaml
@@ -3,32 +3,32 @@ chatWithUs: 'Chatte mit uns'
emailchangeActionText: 'Bestätige deine neue E-Mail-Adresse'
emailchangeCopy1: 'Du hast um die Änderung der E-Mail-Adresse gebeten, die mit deinem Account unter freesewing.org verknüpft ist.
Bevor du dies tust, musst du deine neue E-Mail-Adresse bestätigen. Bitte klicke auf den folgenden Link, um dies zu tun:'
emailchangeHeaderOpeningLine: 'Wir stellen nur sicher, dass wir dich bei Bedarf erreichen können'
-emailchangeHiddenIntro: "Lass uns deine neue E-Mail-Adresse bestätigen"
+emailchangeHiddenIntro: 'Lass uns deine neue E-Mail-Adresse bestätigen'
emailchangeSubject: 'Bitte bestätige deine neue E-Mail-Adresse'
emailchangeTitle: 'Bitte bestätige deine neue E-Mail-Adresse'
emailchangeWhy: 'Du hast diese E-Mail erhalten, weil du die mit deinem Konto auf freesewing.org verknüpfte E-Mail-Adresse geändert hast'
footerCredits: 'Kreiert von Joost & Mitwirkenden, mit der finanziellen Unterstützung unserer Förderer ❤️ '
footerSlogan: 'Freesewing ist eine Open-Source Plattform für Schnittmuster nach Maß'
-goodbyeCopy1: "Wenn du uns mitteilen möchtest, warum du uns verlässt, kannst du gerne auf diese Nachricht antworten.
Von unserer Seite aus werden wir dich nicht weiter stören."
+goodbyeCopy1: 'Wenn du uns mitteilen möchtest, warum du uns verlässt, kannst du gerne auf diese Nachricht antworten.
Von unserer Seite aus werden wir dich nicht weiter stören.'
goodbyeHeaderOpeningLine: 'Sei dir nur bewusst, dass du jederzeit wiederkommen kannst'
goodbyeHiddenIntro: 'Vielen Dank, dass du Freesewing eine Chance gegeben hast'
-goodbyeSubject: 'Mach''s gut! 👋'
+goodbyeSubject: "Mach's gut! 👋"
goodbyeTitle: 'Vielen Dank, dass du Freesewing eine Chance gegeben hast'
goodbyeWhy: 'Du hast diese E-Mail als endgültiges Lebewohl erhalten, nachdem du deinen Account auf freesewing.org entfernt hast'
joostFromFreesewing: 'Joost von Freesewing'
passwordresetActionText: 'Erhalte erneut Zugang zu deinem Account'
passwordresetCopy1: 'Du hast dein Passwort für deinen Account bei freesewing.org vergessen.
Klicke auf den folgenden Link, um dein Passwort zurückzusetzen:'
-passwordresetHeaderOpeningLine: "Keine Sorge, solche Dinge passieren uns allen"
+passwordresetHeaderOpeningLine: 'Keine Sorge, solche Dinge passieren uns allen'
passwordresetHiddenIntro: 'Erhalte erneut Zugang zu deinem Account'
passwordresetSubject: 'Erhalte erneut Zugang zu deinem Account auf freesewing.org'
passwordresetTitle: 'Setze dein Passwort zurück und erhalte erneut Zugang zu deinem Account'
passwordresetWhy: 'Du hast diese E-Mail erhalten, weil du die Anfrage gestellt hast, dein Passwort von freesewing.org zurückzusetzen'
-questionsJustReply: "Wenn du Fragen hast, antworte einfach auf diese E-Mail. Ich bin immer gerne bereit zu helfen. 🙂"
+questionsJustReply: 'Wenn du Fragen hast, antworte einfach auf diese E-Mail. Ich bin immer gerne bereit zu helfen. 🙂'
signature: 'Liebe Grüße'
signupActionText: 'Bestätige deine E-Mail-Adresse'
signupCopy1: 'Danke, dass du dich bei freesewing.org angemeldet hast.
Bevor wir beginnen, musst du deine E-Mail-Adresse bestätigen. Bitte klicke auf den folgenden Link, um das zu tun:'
-signupHeaderOpeningLine: "Wir freuen uns sehr darüber, dass du ein Teil der Freesewing-Community wirst."
-signupHiddenIntro: "Lass uns deine E-Mail-Adresse bestätigen"
+signupHeaderOpeningLine: 'Wir freuen uns sehr darüber, dass du ein Teil der Freesewing-Community wirst.'
+signupHiddenIntro: 'Lass uns deine E-Mail-Adresse bestätigen'
signupSubject: 'Willkommen bei freesewing.org'
signupTitle: 'Willkommen an Bord'
signupWhy: 'Du hast diese E-Mail erhalten, weil du dich gerade auf freesewing.org angemeldet hast'
diff --git a/packages/i18n/src/locales/de/intro.yaml b/packages/i18n/src/locales/de/intro.yaml
index f06ccb539e8..df396c728b3 100644
--- a/packages/i18n/src/locales/de/intro.yaml
+++ b/packages/i18n/src/locales/de/intro.yaml
@@ -2,11 +2,11 @@
txt-blog: Neuigkeiten, Updates und Ankündigungen des Freesewing-Teams
txt-community: 'Alles wird von freiwilligen Mitwirkenden am Leben erhalten. Es existieren keine kommerziellen Absichten im Zusammenhang mit diesem Projekt.'
txt-different: Was uns von anderen unterscheidet
-txt-draft: "Wähle eines deiner Schnittmuster, wähle ein Modell und lege die Optionen fest. Den Rest erledigen wir."
+txt-draft: 'Wähle eines deiner Schnittmuster, wähle ein Modell und lege die Optionen fest. Den Rest erledigen wir.'
txt-how: So funktioniert es
txt-join: Schließe dich Tausenden anderer an und erstelle einen kostenlosen Account auf freesewing.org.
txt-model: Alle unsere Schnittmuster werden nach individuellen Maßen gefertigt. Nimm daher zuallererst das Maßband zur Hand.
-txt-newHere: "Wenn du hier neu bist, ist unsere Demo der beste Startpunkt:"
+txt-newHere: 'Wenn du hier neu bist, ist unsere Demo der beste Startpunkt:'
txt-opensource: 'Unsere Plattform, unsere Schnittmuster und sogar diese Website: Unser gesamter Code ist auf GitHub zugänglich. Pull-Requests sind jederzeit herzlich willkommen!'
txt-patrons: Freesewing wird durch die finanzielle Unterstützung unserer Förderer überhaupt erst ermöglicht. Scrolle nach unten, um mehr über unser Abonnementmodell zu erfahren.
txt-showcase: Abgeschlossene Projekte aus der Freesewing-Community
diff --git a/packages/i18n/src/locales/de/welcome.yaml b/packages/i18n/src/locales/de/welcome.yaml
index bc5e829937e..871bfac59bd 100644
--- a/packages/i18n/src/locales/de/welcome.yaml
+++ b/packages/i18n/src/locales/de/welcome.yaml
@@ -6,5 +6,5 @@ bio: Erzähle uns ein wenig über dich
social: Lass uns wissen, wo wir dir folgen können
newsletter: Teile uns deine Newsletter-Präferenz mit
letUsSetupYourAccount: Lassen Sie uns Ihr Konto einrichten.
-walkYouThrough: "Wir führen dich durch die folgenden Schritte:"
+walkYouThrough: 'Wir führen dich durch die folgenden Schritte:'
someOptional: Obwohl alle diese Schritte optional sind, empfehlen wir dir sie durchzugehen, um das Beste aus FreeSewing herauszuholen.
diff --git a/packages/i18n/src/locales/es/app.yaml b/packages/i18n/src/locales/es/app.yaml
index 7b4ba846823..29641895412 100644
--- a/packages/i18n/src/locales/es/app.yaml
+++ b/packages/i18n/src/locales/es/app.yaml
@@ -12,7 +12,7 @@ applyThisLayout: Aplicar este diseño
areYouSureYouWantToContinue: Estás seguro de que quieres continuar?
askForHelp: Pide ayuda
automatic: Automático
-averagePeopleDoNotExist: "La gente promedio no existe"
+averagePeopleDoNotExist: 'La gente promedio no existe'
awesome: Genial
back: Atrás
becauseThatWouldBeReallyHelpful: Porque eso sería realmente útil.
@@ -72,7 +72,7 @@ drafts: Bocetos
draftSettings: Ajustes del boceto
dragAndDropImageHere: Arrastra y suelta una imagen aquí, o selecciona una manualmente con el botón de abajo
emailAddress: Dirección de correo electrónico
-emailWorksToo: "Si no conoces tu nombre de usuario, tu dirección de correo electrónico también funcionará"
+emailWorksToo: 'Si no conoces tu nombre de usuario, tu dirección de correo electrónico también funcionará'
enterEmailPickPassword: Introduce tu dirección de email y elige una contraseña
export: Exportar
exportTiledPDF: Exportar PDF paginado
@@ -81,7 +81,7 @@ fieldRemoved: '{field} eliminado'
fieldSaved: '{field} guardado'
filterByPattern: Filtrar por patrón
filterPatterns: Filtrar los patrones
-forgotLoginInstructions: "Entra tu nombre de usuario o correo electrónico debajo y pulsa el botón de Restablecer contraseña"
+forgotLoginInstructions: 'Entra tu nombre de usuario o correo electrónico debajo y pulsa el botón de Restablecer contraseña'
freesewing: Freesewing
freesewingOnGithub: Freesewing en GitHub
github: GitHub
@@ -156,7 +156,7 @@ remove: Eliminar
removeThing: Eliminar {thing}
reportThisOnGithub: Notifícalo en GitHub
requiredMeasurements: Medidas requeridas
-resendActivationEmailMessage: "Complete la dirección de correo electrónico con la que se registró y le enviaremos un nuevo mensaje de confirmación."
+resendActivationEmailMessage: 'Complete la dirección de correo electrónico con la que se registró y le enviaremos un nuevo mensaje de confirmación.'
resendActivationEmail: Reenviar email de activación
resetPassword: Restablecer contraseña
reset: Reiniciar
@@ -198,7 +198,7 @@ twitter: Twitter
txt-footer: Freesewing está hecho por una comunidad de colaboradores
con el apoyo financiero de nuestros Patrones
txt-tier2: Nuestro nivel más democrático de precios. Puede ser menor que el precio de un café con leche, pero su apoyo significa mucho para nosotros.
txt-tier4: Suscríbase a este nivel y le enviaremos parte de nuestro codiciado botín de diseño gratuito a su hogar en cualquier parte del mundo.
-txt-tier8: "Si no solo desea apoyarnos, sino que quiere ver prosperar en la libertad, este es el nivel para usted. También: botín extra!"
+txt-tier8: 'Si no solo desea apoyarnos, sino que quiere ver prosperar en la libertad, este es el nivel para usted. También: botín extra!'
txt-tiers: 'FreeSewing es alimentado por un modelo de suscripción voluntario'
unitsInfo: La liberación es compatible con el sistema métrico y las unidades imperiales. Simplemente elige el que te gustaría usar aquí. (El valor predeterminado es utilizar las unidades configuradas en su cuenta).
updated: Actualizado
@@ -240,8 +240,8 @@ noPattern: No tienes ningún patrón (todavía). Crea un nuevo patrón, luego gu
modelFirst: Empezar añadiendo mediciones
noModel: No has añadido ninguna medición (aún). La Coser libre puede generar patrones de costura hechos a medida. Pero para eso necesitamos mediciones.
noModel2: Así que lo primero que debes hacer es añadir una persona y agitar tu cinta de medición.
-noUserBrowsingTitle: "No puedes navegar por todos los usuarios"
-noUserBrowsingText: "Tenemos miles de ellos. ¿Seguro que tienes cosas mejores que hacer?"
+noUserBrowsingTitle: 'No puedes navegar por todos los usuarios'
+noUserBrowsingText: 'Tenemos miles de ellos. ¿Seguro que tienes cosas mejores que hacer?'
usePatternMeasurements: 'Usar las mediciones del patrón original'
createReplica: Crear una réplica
showDetails: Mostrar detalles
diff --git a/packages/i18n/src/locales/es/cfp.yaml b/packages/i18n/src/locales/es/cfp.yaml
index 1a03a859e15..4bc764d52b9 100644
--- a/packages/i18n/src/locales/es/cfp.yaml
+++ b/packages/i18n/src/locales/es/cfp.yaml
@@ -7,7 +7,7 @@ patternType: Tipo de patrón
patternCreated: Tu esqueleto de patrón ha sido creado en
runTheseCommands: Para empezar, ejecuta este comando
startRollup: En una terminal, inicia el paquete de rollup en modo reloj
-startWebpack: "Entrará en la carpeta \"ejemplo\" e iniciará el entorno de desarrollo."
+startWebpack: 'Entrará en la carpeta "ejemplo" e iniciará el entorno de desarrollo.'
devDocsAvailableAt: Documentación para desarrolladores está disponible en
talkToUs: Para preguntas, comentarios o sugerencias, únete a nuestro servidor de Discord
draftYourPattern: Traza tu patrón
diff --git a/packages/i18n/src/locales/es/email.yaml b/packages/i18n/src/locales/es/email.yaml
index a4398c50ffc..5d55673244d 100644
--- a/packages/i18n/src/locales/es/email.yaml
+++ b/packages/i18n/src/locales/es/email.yaml
@@ -3,13 +3,13 @@ chatWithUs: 'Habla con nosotros'
emailchangeActionText: 'Confirme su nueva dirección de correo electrónico'
emailchangeCopy1: 'Solicitó cambiar la dirección de correo electrónico vinculada a su cuenta en freesewing.org .
Antes de hacerlo, debe confirmar su nueva dirección de correo electrónico. Por favor haga clic en el enlace de abajo para hacer eso:'
emailchangeHeaderOpeningLine: 'Solo asegurándonos de que podamos contactarlo cuando sea necesario'
-emailchangeHiddenIntro: "Confirmemos tu nueva dirección de correo electrónico"
+emailchangeHiddenIntro: 'Confirmemos tu nueva dirección de correo electrónico'
emailchangeSubject: 'Por favor confirme su nueva dirección de correo electrónico'
emailchangeTitle: 'Por favor confirme su nueva dirección de correo electrónico'
emailchangeWhy: 'Ha recibido este correo electrónico porque ha cambiado la dirección de correo electrónico vinculada a su cuenta en freesewing.org'
footerCredits: 'Hecho por joost & contributors con el apoyo financiero de nuestros clientes ❤️ '
footerSlogan: 'Freesewing es una plataforma open source para patrones de costura a medida'
-goodbyeCopy1: "Si desea compartir por qué se va, puede responder a este mensaje.
Por nuestra parte, no volveremos a molestarlo."
+goodbyeCopy1: 'Si desea compartir por qué se va, puede responder a este mensaje.
Por nuestra parte, no volveremos a molestarlo.'
goodbyeHeaderOpeningLine: 'Solo se sabe que siempre se puede volver.'
goodbyeHiddenIntro: 'Gracias por darle una oportunidad a freesewing'
goodbyeSubject: 'Despedida 👋'
@@ -18,17 +18,17 @@ goodbyeWhy: 'Recibió este correo electrónico como último adiós después de e
joostFromFreesewing: 'Joost de Freesewing'
passwordresetActionText: 'Recupere el acceso a su cuenta'
passwordresetCopy1: 'Olvidó su contraseña para su cuenta en freesewing.org .
Haga clic en el enlace de abajo para restablecer su contraseña:'
-passwordresetHeaderOpeningLine: "No te preocupes, estas cosas nos pasan a todos."
+passwordresetHeaderOpeningLine: 'No te preocupes, estas cosas nos pasan a todos.'
passwordresetHiddenIntro: 'Recupere el acceso a su cuenta'
passwordresetSubject: 'Recupere el acceso a su cuenta en freesewing.org'
passwordresetTitle: 'Restablece tu contraseña y vuelve a obtener acceso a tu cuenta'
passwordresetWhy: 'Recibió este correo electrónico porque solicitó restablecer su contraseña en freesewing.org'
-questionsJustReply: "Si tiene alguna pregunta, simplemente responda a este correo electrónico. Siempre feliz de ayudar. 🙂"
+questionsJustReply: 'Si tiene alguna pregunta, simplemente responda a este correo electrónico. Siempre feliz de ayudar. 🙂'
signature: 'Con amor,'
signupActionText: 'Confirme su dirección de correo electrónico'
signupCopy1: 'Gracias por registrarse en freesewing.org.
Antes de comenzar, debe confirmar su dirección de correo electrónico. Por favor haga clic en el enlace de abajo para hacer eso:'
-signupHeaderOpeningLine: "Estamos muy contentos de que te unas a la comunidad de freesewing."
-signupHiddenIntro: "Confirmemos tu dirección de correo electrónico"
+signupHeaderOpeningLine: 'Estamos muy contentos de que te unas a la comunidad de freesewing.'
+signupHiddenIntro: 'Confirmemos tu dirección de correo electrónico'
signupSubject: 'Bienvenido a freesewing.org'
signupTitle: 'Bienvenido a bordo'
signupWhy: 'Recibió este correo electrónico porque acaba de registrarse para una cuenta en freesewing.org'
diff --git a/packages/i18n/src/locales/es/intro.yaml b/packages/i18n/src/locales/es/intro.yaml
index 603835f3a3a..d5b7d2bb7d9 100644
--- a/packages/i18n/src/locales/es/intro.yaml
+++ b/packages/i18n/src/locales/es/intro.yaml
@@ -2,11 +2,11 @@
txt-blog: Noticias, actualizaciones y anuncios del equipo de freesewing.
txt-community: 'Todo es llevado por colaboradores voluntarios. TNo hay ninguna entidad comercial detrás de, o vinculada a, este proyecto.'
txt-different: En qué somos diferentes
-txt-draft: "Elige uno de los patrones, elige un model y elige tus opciones. Nosotros hacemos el resto"
+txt-draft: 'Elige uno de los patrones, elige un model y elige tus opciones. Nosotros hacemos el resto'
txt-how: Cómo funciona
txt-join: Únete a miles de personas y regístrate en freesewing.org.
txt-model: Todos nuestros patrones son a medida. Así que lo primero que necesitas es un metro.
-txt-newHere: "Si eres nuevo aquí, el mejor lugar para comenzar es nuestra demostración:"
+txt-newHere: 'Si eres nuevo aquí, el mejor lugar para comenzar es nuestra demostración:'
txt-opensource: 'Nuestra plataforma, nuestros patrones e incluso este sitio web. Todo nuestro código está disponible en GitHub. Modificaciones son bienvenidas!'
txt-patrons: Freesewing es posible por el apoyo económico de nuestros patrocinadores. Desplácese hacia abajo para conocer nuestro modelo de suscripción.
txt-showcase: Proyectos terminados de la comunidad de freesewing
diff --git a/packages/i18n/src/locales/es/welcome.yaml b/packages/i18n/src/locales/es/welcome.yaml
index dc9cc32c31d..d92b0847bdd 100644
--- a/packages/i18n/src/locales/es/welcome.yaml
+++ b/packages/i18n/src/locales/es/welcome.yaml
@@ -6,5 +6,5 @@ bio: Cuéntanos un poco acerca de ti
social: Háganos saber dónde podemos seguirle
newsletter: Danos tu preferencia al boletín de noticias
letUsSetupYourAccount: Permítanos configurar su cuenta.
-walkYouThrough: "Te guiaremos a través de los siguientes pasos:"
+walkYouThrough: 'Te guiaremos a través de los siguientes pasos:'
someOptional: Aunque todos estos pasos son opcionales, te recomendamos que los recorras para sacar el máximo provecho de FreeSewing.
diff --git a/packages/i18n/src/locales/fr/app.yaml b/packages/i18n/src/locales/fr/app.yaml
index 4c375e5e4b1..35329967db6 100644
--- a/packages/i18n/src/locales/fr/app.yaml
+++ b/packages/i18n/src/locales/fr/app.yaml
@@ -96,7 +96,7 @@ howToTakeMeasurements: Comment prendre les mesures
i18n: Internationalisation
imperialUnits: Unités impériales (pouces)
instagram: Instagram
-invalidTldMessage: '.{tld} n''est pas un TLD valide'
+invalidTldMessage: ".{tld} n'est pas un TLD valide"
joinTheChatMsg: Nous avons une communauté sur Discord avec des amis avec lesquels vous pouvez discuter.
justAMoment: Juste un instant
layout: Mis en page
@@ -179,11 +179,11 @@ shareFreesewing: Partager FreeSewing
showcase: Galerie
signUpForAFreeAccount: Créer un compte gratuit
signUp: S'inscrire
-signupWithProvider: 'S''inscrire avec {provider}'
+signupWithProvider: "S'inscrire avec {provider}"
sortByField: Trier par {field}
standardSeamAllowance: Marge de couture standard
startOver: Recommencer
-startTranslatingNowOrRead: '{startTranslatingNow}, ou lisez d''abord la {documentationForTranslators}.'
+startTranslatingNowOrRead: "{startTranslatingNow}, ou lisez d'abord la {documentationForTranslators}."
startTranslatingNow: Commencez à traduire maintenant
subscribe: Souscrire
support: Support
@@ -240,9 +240,9 @@ noPattern: Vous n'avez pas (encore) de patrons. Créez un nouveau patron, puis s
modelFirst: Commencez par ajouter des mensurations
noModel: Vous n'avez pas (encore) ajouté de mesure. FreeSewing peut générer des patrons de couture sur mesure. Mais pour cela, nous avons besoin de mensurations.
noModel2: La première chose à faire est donc d'ajouter une personne et de sortir votre mètre-ruban.
-noUserBrowsingTitle: "Vous ne pouvez pas simplement parcourir tous les utilisateurs"
-noUserBrowsingText: "Nous en avons des milliers. Vous avez certainement autre chose à faire ?"
-usePatternMeasurements: 'Utiliser les mesures du patron d''origine'
+noUserBrowsingTitle: 'Vous ne pouvez pas simplement parcourir tous les utilisateurs'
+noUserBrowsingText: 'Nous en avons des milliers. Vous avez certainement autre chose à faire ?'
+usePatternMeasurements: "Utiliser les mesures du patron d'origine"
createReplica: Créer une réplique
showDetails: Voir les détails
hideDetails: Masquer les détails
diff --git a/packages/i18n/src/locales/fr/email.yaml b/packages/i18n/src/locales/fr/email.yaml
index 8c24d3d8f05..3b7b90cd27e 100644
--- a/packages/i18n/src/locales/fr/email.yaml
+++ b/packages/i18n/src/locales/fr/email.yaml
@@ -1,24 +1,24 @@
---
chatWithUs: 'Discutez avec nous'
emailchangeActionText: 'Confirmez votre nouvelle adresse mail'
-emailchangeCopy1: 'Vous avez demandé de modifier l''adresse e-mail associée à votre compte sur freesewing.org.
Avant de procéder, vous devez confirmer votre nouvelle adresse e-mail. S''il vous plaît cliquez sur le lien ci-dessous pour le faire :'
+emailchangeCopy1: "Vous avez demandé de modifier l'adresse e-mail associée à votre compte sur freesewing.org.
Avant de procéder, vous devez confirmer votre nouvelle adresse e-mail. S'il vous plaît cliquez sur le lien ci-dessous pour le faire :"
emailchangeHeaderOpeningLine: 'Assurez-vous simplement que nous pouvons vous joindre en cas de besoin'
-emailchangeHiddenIntro: "Confirmons votre nouvelle adresse e-mail"
+emailchangeHiddenIntro: 'Confirmons votre nouvelle adresse e-mail'
emailchangeSubject: 'Merci de confirmer votre nouvelle adresse e-mail'
emailchangeTitle: 'Merci de confirmer votre nouvelle adresse e-mail'
-emailchangeWhy: 'Vous avez reçu cet e-mail parce que vous avez changé l''adresse e-mail liée à votre compte sur freesewing.org'
+emailchangeWhy: "Vous avez reçu cet e-mail parce que vous avez changé l'adresse e-mail liée à votre compte sur freesewing.org"
footerCredits: 'Réalisé par Joost De Cock et ses contributeurs avec le soutien financier de mécènes ❤️ '
footerSlogan: 'Freesewing est une plate-forme open source pour des patrons de couture sur mesure'
-goodbyeCopy1: "Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.
De notre côté, nous ne vous dérangerons plus."
+goodbyeCopy1: 'Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.
De notre côté, nous ne vous dérangerons plus.'
goodbyeHeaderOpeningLine: 'Sachez simplement que vous pouvez toujours revenir'
-goodbyeHiddenIntro: 'Merci d''avoir donné une chance à freesewing'
+goodbyeHiddenIntro: "Merci d'avoir donné une chance à freesewing"
goodbyeSubject: 'Adieu 👋'
-goodbyeTitle: 'Merci d''avoir donné une chance à freesewing'
-goodbyeWhy: 'Vous avez reçu cet e-mail en guise d''adieu final après la suppression de votre compte sur freesewing.org'
+goodbyeTitle: "Merci d'avoir donné une chance à freesewing"
+goodbyeWhy: "Vous avez reçu cet e-mail en guise d'adieu final après la suppression de votre compte sur freesewing.org"
joostFromFreesewing: 'Joost de Freesewing'
passwordresetActionText: 'Re-accéder à votre compte'
passwordresetCopy1: 'Vous avez oublié votre mot de passe pour votre compte sur freesewing.org.
Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe:'
-passwordresetHeaderOpeningLine: "Ne vous inquiétez pas, ce genre de choses nous arrive à tous"
+passwordresetHeaderOpeningLine: 'Ne vous inquiétez pas, ce genre de choses nous arrive à tous'
passwordresetHiddenIntro: 'Re-accéder à votre compte'
passwordresetSubject: 'Re-accéder à votre compte sur freesewing.org'
passwordresetTitle: 'Réinitialisez votre mot de passe et accédez à nouveau à votre compte.'
@@ -27,8 +27,8 @@ questionsJustReply: "Si vous avez des questions, répondez simplement à cet e-m
signature: 'Bise,'
signupActionText: 'Confirmez votre adresse mail'
signupCopy1: 'Merci de votre inscription sur freesewing.org.
Avant de commencer, vous devez confirmer votre adresse e-mail. Pour cela veuillez cliquer sur le lien ci-dessous :'
-signupHeaderOpeningLine: "Nous sommes vraiment heureux que vous rejoigniez la communauté freesewing."
-signupHiddenIntro: "Confirmons votre adresse mail"
+signupHeaderOpeningLine: 'Nous sommes vraiment heureux que vous rejoigniez la communauté freesewing.'
+signupHiddenIntro: 'Confirmons votre adresse mail'
signupSubject: 'Bienvenue sur freesewing.org'
signupTitle: 'Bienvenue à bord'
signupWhy: 'Vous avez reçu cet e-mail parce que vous venez de créer un compte sur freesewing.org'
diff --git a/packages/i18n/src/locales/fr/gdpr.yaml b/packages/i18n/src/locales/fr/gdpr.yaml
index 30d54e89559..981ca2af8a8 100644
--- a/packages/i18n/src/locales/fr/gdpr.yaml
+++ b/packages/i18n/src/locales/fr/gdpr.yaml
@@ -21,10 +21,10 @@ openDataInfo: Ces données sont utilisées pour étudier et comprendre la forme
openDataQuestion: Partager des mesures anonymisées sous forme de données ouvertes
profileQuestion: Donnez-vous votre consentement pour traiter vos données de profil ?
profileShareAnswer: 'Non b>, jamais.'
-profileTimingAnswer: '12 mois après votre dernière connexion ou jusqu''à ce que vous supprimiez votre compte ou révoquiez ce consentement.'
+profileTimingAnswer: "12 mois après votre dernière connexion ou jusqu'à ce que vous supprimiez votre compte ou révoquiez ce consentement."
profileWarning: Révoquer ce consentement entraînera la suppression de toutes vos données. Cela a exactement le même effet que de supprimer votre compte.
profileWhatAnswerOptional: 'Optionnel : une photo de profil, biographie, et comptes de réseaux sociaux'
-profileWhatAnswer: 'Votre adresse e-mail, nom d''utilisateuret mot de passe.'
+profileWhatAnswer: "Votre adresse e-mail, nom d'utilisateuret mot de passe."
profileWhatQuestion: Que sont les données de profil ?
profileWhyAnswer: 'Pour vous authentifier , vous contacter lorsque nécessaire, et construire une communauté.'
readMore: Pour plus d'informations, veuillez lire notre politique de confidentialité.
@@ -34,6 +34,6 @@ shareQuestion: La partageons-nous avec les autres ?
timingQuestion: Combien de temps les gardons-nous ?
whatYouNeedToKnow: Ce que vous devez savoir
whyQuestion: Pourquoi en avons-nous besoin ?
-yesIDoObject: 'Oui, je m''y oppose'
+yesIDoObject: "Oui, je m'y oppose"
yesIDo: 'Oui, je le veux'
openData: 'Note : Freesewing publie des mesures rendues anonymes en tant que données libres pour la recherche scientifique. Vous avez le droit de vous y opposer'
diff --git a/packages/i18n/src/locales/fr/intro.yaml b/packages/i18n/src/locales/fr/intro.yaml
index 8f9c5184199..cddd80f710d 100644
--- a/packages/i18n/src/locales/fr/intro.yaml
+++ b/packages/i18n/src/locales/fr/intro.yaml
@@ -1,12 +1,12 @@
---
txt-blog: Nouvelles, mises à jour et annonces de l'équipe freesewing
-txt-community: 'Tout est géré par des contributeurs bénévoles. Il n''y a pas d''entité commerciale, ou assimilée, derrière ce projet.'
+txt-community: "Tout est géré par des contributeurs bénévoles. Il n'y a pas d'entité commerciale, ou assimilée, derrière ce projet."
txt-different: Ce en quoi nous sommes différents
txt-draft: "Choisissez parmi l'un de vos patrons, choisissez un modèle, et sélectionnez vos options. Nous ferons le reste."
txt-how: Comment ça marche
txt-join: Rejoignez des milliers d'autres personnes en vous inscrivant gratuitement sur freesewing.org.
txt-model: Tous nos patrons sont faits sur mesure, donc la première chose à faire est de vous munir de votre mètre-ruban.
-txt-newHere: "Si vous êtes nouveau ici, le meilleur endroit pour commencer est notre démo :"
+txt-newHere: 'Si vous êtes nouveau ici, le meilleur endroit pour commencer est notre démo :'
txt-opensource: 'Notre plateforme, nos patrons, et même ce site web. Tout notre code est disponible sur GitHub. Les "Pull requests" sont les bienvenues !'
txt-patrons: Freesewing existe grâce au soutien financier de nos Mécènes. Faites défiler vers le bas pour en savoir plus sur nos modes de souscription.
txt-showcase: Projets terminés de la communauté freesewing
diff --git a/packages/i18n/src/locales/fr/welcome.yaml b/packages/i18n/src/locales/fr/welcome.yaml
index e1188b57b0f..dac9eae8e3e 100644
--- a/packages/i18n/src/locales/fr/welcome.yaml
+++ b/packages/i18n/src/locales/fr/welcome.yaml
@@ -6,5 +6,5 @@ bio: Parlez-nous un peu de vous
social: Dites-nous où nous pouvons vous suivre
newsletter: Donnez-nous votre préférence pour la newsletter
letUsSetupYourAccount: Laissez-nous configurer votre compte.
-walkYouThrough: "Nous vous guiderons à travers les étapes suivantes :"
+walkYouThrough: 'Nous vous guiderons à travers les étapes suivantes :'
someOptional: Bien que toutes ces étapes soient facultatives, nous vous recommandons de les passer en revue pour tirer le meilleur parti de FreeSewing.
diff --git a/packages/i18n/src/locales/nl/app.yaml b/packages/i18n/src/locales/nl/app.yaml
index 0e53f9bbe48..f3e8397972f 100644
--- a/packages/i18n/src/locales/nl/app.yaml
+++ b/packages/i18n/src/locales/nl/app.yaml
@@ -12,7 +12,7 @@ applyThisLayout: Pas deze layout toe
areYouSureYouWantToContinue: Weet je zeker dat je door wilt gaan?
askForHelp: Vraag om hulp
automatic: Automatisch
-averagePeopleDoNotExist: "Gemiddelde mensen bestaan niet"
+averagePeopleDoNotExist: 'Gemiddelde mensen bestaan niet'
awesome: Super
back: Achterzijde
becauseThatWouldBeReallyHelpful: Want dat zou ons echt vooruit helpen.
@@ -72,7 +72,7 @@ drafts: Patroontekeningen
draftSettings: Instellingen patroontekening
dragAndDropImageHere: Sleep een afbeelding hierheen of selecteer er handmatig een met de knop hieronder
emailAddress: Email adres
-emailWorksToo: "Als je je gebruikersnaam niet meer weet, vul dan je email adres in, dat werkt ook"
+emailWorksToo: 'Als je je gebruikersnaam niet meer weet, vul dan je email adres in, dat werkt ook'
enterEmailPickPassword: Voer je email adres in, en kies een wachtwoord
export: Exporteren
exportTiledPDF: Gepagineerde PDF exporteren
@@ -81,7 +81,7 @@ fieldRemoved: '{field} verwijderd'
fieldSaved: '{field} opgeslagen'
filterByPattern: Filter op patroon
filterPatterns: Patronen filteren
-forgotLoginInstructions: "Als je je wachtwoord niet meer weet, vul dan hieronder je gebruikersnaam of email adres in, en klik op de Herstel wachtwoord knop"
+forgotLoginInstructions: 'Als je je wachtwoord niet meer weet, vul dan hieronder je gebruikersnaam of email adres in, en klik op de Herstel wachtwoord knop'
freesewing: Freesewing
freesewingOnGithub: FreeSewing op GitHub
github: GitHub
@@ -156,7 +156,7 @@ remove: Verwijderen
removeThing: '{thing} verwijderen'
reportThisOnGithub: Melden via GitHub
requiredMeasurements: Vereiste maten
-resendActivationEmailMessage: "Vul het e-mailadres waarmee je je account aangemaakt hebt in en we zullen je een nieuwe bevestigingsmail sturen."
+resendActivationEmailMessage: 'Vul het e-mailadres waarmee je je account aangemaakt hebt in en we zullen je een nieuwe bevestigingsmail sturen.'
resendActivationEmail: Stuur een nieuwe activatie email
resetPassword: Wachtwoord opnieuw instellen
reset: Reset
@@ -198,7 +198,7 @@ twitter: Twitter
txt-footer: FreeSewing is gemaakt door een gemeenschap van bijdragers
met de financiële steun van onze mecenassen
txt-tier2: Onze meest democratisch geprijsde optie. Het is minder dan de prijs van een latte, maar jouw steun betekent alles voor ons.
txt-tier4: Abonneer je op deze optie en we sturen wat van onze erg gegeerde FreeSewing swag naar je thuis. Waar ook ter wereld dat mag zijn.
-txt-tier8: "Als je ons niet louter wil steunen, maar FreeSewing wil zien groeien, dan is dit de optie voor jou. Ook: extra swag!"
+txt-tier8: 'Als je ons niet louter wil steunen, maar FreeSewing wil zien groeien, dan is dit de optie voor jou. Ook: extra swag!'
txt-tiers: 'FreeSewing draait op een vrijwillig subscriptiemodel'
unitsInfo: FreeSewing ondersteunt zowel het metrieke stelsel als de imperiale eenheden. Kies eenvoudig welke u hier wilt gebruiken. (de standaard is om de eenheden te gebruiken die in uw account zijn geconfigureerd).
updated: Bijgewerkt
@@ -240,8 +240,8 @@ noPattern: Je hebt (nog) geen patronen. Maak een nieuw patroon, en sla het op in
modelFirst: Begin met maten toe te voegen
noModel: Je hebt (nog) geen maten toegevoegd. FreeSewing can naaipatronen op maat genereren. Maar daarvoor hebben we maten nodig.
noModel2: Dus het eerste dat je zou moeten doen is een persoon toevoegen, en je lintmeter bovenhalen.
-noUserBrowsingTitle: "Je kan niet zomaar door alle gebruikers grasduinen"
-noUserBrowsingText: "We hebben er duizenden. Je hebt toch wel wat beters te doen?"
+noUserBrowsingTitle: 'Je kan niet zomaar door alle gebruikers grasduinen'
+noUserBrowsingText: 'We hebben er duizenden. Je hebt toch wel wat beters te doen?'
usePatternMeasurements: 'Gebruik de maten van het originele patroon'
createReplica: Creëer een replica
showDetails: Toon details
diff --git a/packages/i18n/src/locales/nl/email.yaml b/packages/i18n/src/locales/nl/email.yaml
index d0ea192ffa1..e32dc5fbb8a 100644
--- a/packages/i18n/src/locales/nl/email.yaml
+++ b/packages/i18n/src/locales/nl/email.yaml
@@ -3,13 +3,13 @@ chatWithUs: 'Chat met ons'
emailchangeActionText: 'Bevestig uw nieuwe e-mailadres'
emailchangeCopy1: 'U heeft verzocht het e-mailadres dat aan uw account is gekoppeld te wijzigen op freesewing.org .
Voordat we dat doen, moet u uw nieuwe e-mailadres bevestigen. Klik op de onderstaande link om dat te doen:'
emailchangeHeaderOpeningLine: 'We zorgen ervoor dat we u kunnen bereiken wanneer dat nodig is'
-emailchangeHiddenIntro: "Laten we uw nieuwe e-mailadres bevestigen"
+emailchangeHiddenIntro: 'Laten we uw nieuwe e-mailadres bevestigen'
emailchangeSubject: 'Bevestig uw nieuwe e-mailadres'
emailchangeTitle: 'Bevestig uw nieuwe e-mailadres'
emailchangeWhy: 'Je ontving deze e-mail omdat je het e-mailadres hebt gewijzigd dat gekoppeld is aan je account op freesewing.org'
footerCredits: 'Gemaakt door joost & vrijwilligers met de financiële steun van onze Patrons ❤️ '
footerSlogan: 'FreeSewing is een open source platform voor naaipatronen op maat'
-goodbyeCopy1: "Als je wilt delen waarom je vertrekt, kun je dit bericht beantwoorden.
Van onze kant zullen we je niet opnieuw lastig vallen."
+goodbyeCopy1: 'Als je wilt delen waarom je vertrekt, kun je dit bericht beantwoorden.
Van onze kant zullen we je niet opnieuw lastig vallen.'
goodbyeHeaderOpeningLine: 'Weet gewoon dat je altijd terug kunt komen'
goodbyeHiddenIntro: 'Bedankt dat je freesewing.org een kans hebt gegeven'
goodbyeSubject: 'Vaarwel 👋'
@@ -18,17 +18,17 @@ goodbyeWhy: 'U ontving deze e-mail als een laatste adieu na het verwijderen van
joostFromFreesewing: 'Joost van FreeSewing'
passwordresetActionText: 'Krijg toegang tot uw account'
passwordresetCopy1: 'U bent uw wachtwoord voor uw account vergeten op freesewing.org.
Klik op de onderstaande link om uw wachtwoord opnieuw in te stellen:'
-passwordresetHeaderOpeningLine: "Maak je geen zorgen, deze dingen gebeuren met ons allemaal"
+passwordresetHeaderOpeningLine: 'Maak je geen zorgen, deze dingen gebeuren met ons allemaal'
passwordresetHiddenIntro: 'Krijg toegang tot uw account'
passwordresetSubject: 'Krijg toegang tot uw account op freesewing.org'
passwordresetTitle: 'Stel uw wachtwoord opnieuw in en verkrijg opnieuw toegang tot uw account'
passwordresetWhy: 'U hebt deze e-mail ontvangen omdat u heeft gevraagd om uw wachtwoord opnieuw in te stellen op freesewing.org'
-questionsJustReply: "Zit je met vragen? Stuur ze dan als antwoord op deze E-mail. Ik ben steeds bereid om een handje te helpen. 🙂"
+questionsJustReply: 'Zit je met vragen? Stuur ze dan als antwoord op deze E-mail. Ik ben steeds bereid om een handje te helpen. 🙂'
signature: 'Liefs,'
signupActionText: 'Bevestig je E-mail adres'
signupCopy1: 'Leuk dat je je hebt ingeschreven op freesewing.org.
Vooraleer we aan de slag kunnen, moeten we eerst je E-mail adres bevestigen. Klik op onderstaande link om dat te doen:'
-signupHeaderOpeningLine: "We zijn verheugd dat je deel wil uitmaken van de freesewing gemeenschap."
-signupHiddenIntro: "Nu gewoon nog even je E-mail adres bevestigen"
+signupHeaderOpeningLine: 'We zijn verheugd dat je deel wil uitmaken van de freesewing gemeenschap.'
+signupHiddenIntro: 'Nu gewoon nog even je E-mail adres bevestigen'
signupSubject: 'Welkom bij freesewing.org'
signupTitle: 'Welkom aan boord'
signupWhy: 'Je ontving deze E-mail omdat je je zonet ingeschreven hebt op freesewing.org'
diff --git a/packages/i18n/src/locales/nl/intro.yaml b/packages/i18n/src/locales/nl/intro.yaml
index ae0e72839f2..369f1fb82f7 100644
--- a/packages/i18n/src/locales/nl/intro.yaml
+++ b/packages/i18n/src/locales/nl/intro.yaml
@@ -2,11 +2,11 @@
txt-blog: Nieuws, updates, and mededelingen door het freesewing team
txt-community: 'Al het werk word gedaan door vrijwillige medewerkers. Er zijn geen commerciële belangen verbonden aan het project.'
txt-different: Hoe we anders zijn
-txt-draft: "Kies één van onze patronen, één van jouw modellen, en kies je opties. Wij doen de rest."
+txt-draft: 'Kies één van onze patronen, één van jouw modellen, en kies je opties. Wij doen de rest.'
txt-how: Hoe het werkt
txt-join: Sluit je aan bij duizenden anderen, en schrijf je gratis in op freesewing.org.
txt-model: Al onze patronen zijn op maat gemaakt. Het eerste wat je dus moet doen is je lintmeter bij de hand nemen.
-txt-newHere: "Ben je hier nieuw? Dan is onze demo de beste plaats om van start te gaan:"
+txt-newHere: 'Ben je hier nieuw? Dan is onze demo de beste plaats om van start te gaan:'
txt-opensource: 'Ons platform, al onze patronen, en zelfs deze website. Al onze broncode is beschikbaar op GitHub. Pull requests welkom!'
txt-patrons: Freesewing wordt mogelijk gemaakt door de financiële steun van onze mecenassen. Onderaan deze pagina kan je meer lezen over hoe we dit schip drijvende houden.
txt-showcase: Bekijk de projecten gemaakt door de freesewing gemeenschap
diff --git a/packages/i18n/src/locales/nl/welcome.yaml b/packages/i18n/src/locales/nl/welcome.yaml
index 8ac2022dc0f..d89d0b78701 100644
--- a/packages/i18n/src/locales/nl/welcome.yaml
+++ b/packages/i18n/src/locales/nl/welcome.yaml
@@ -6,5 +6,5 @@ bio: Vertel ons een beetje over jezelf
social: Laat ons weten waar we je kunnen volgen
newsletter: Geef ons je voorkeur met betrekking tot de nieuwsbrief
letUsSetupYourAccount: Laten we je account instellen.
-walkYouThrough: "We zullen je door de volgende stappen begeleiden:"
+walkYouThrough: 'We zullen je door de volgende stappen begeleiden:'
someOptional: Hoewel al deze stappen optioneel zijn, raden we je toch aan alles te doen om het meeste uit FreeSewing te halen.
diff --git a/packages/jaeger/src/collar.js b/packages/jaeger/src/collar.js
index 039d472fdda..4b7a87f126b 100644
--- a/packages/jaeger/src/collar.js
+++ b/packages/jaeger/src/collar.js
@@ -6,7 +6,8 @@
*/
export default function (part) {
- const { paperless, sa, snippets, complete, points, options, macro, paths, Path, store } = part.shorthand()
+ const { paperless, sa, snippets, complete, points, options, macro, paths, Path, store } =
+ part.shorthand()
// Add extra fabric for collar roll
store.set('collarRoll', points.collarstandCbTop.dist(points.collarCbTop) * options.collarRoll)
@@ -14,7 +15,6 @@ export default function (part) {
points.collarCbTopCpRoll = points.collarCbTopCp.shift(-90, store.get('collarRoll'))
points.notchTipRoll = points.notch.shiftOutwards(points.notchTip, store.get('collarRoll'))
-
// Mirror to create left half
let mirror = [
'collarstandCbTopCp',
diff --git a/packages/penelope/src/front.js b/packages/penelope/src/front.js
index 4a0b2f6232a..4ff2faebac0 100644
--- a/packages/penelope/src/front.js
+++ b/packages/penelope/src/front.js
@@ -1,18 +1,8 @@
import { BuildMainShape } from './shape'
export default function (part) {
- let {
- options,
- Path,
- points,
- paths,
- Snippet,
- snippets,
- complete,
- sa,
- paperless,
- macro,
- } = part.shorthand()
+ let { options, Path, points, paths, Snippet, snippets, complete, sa, paperless, macro } =
+ part.shorthand()
BuildMainShape(part, true)
diff --git a/packages/penelope/src/shape.js b/packages/penelope/src/shape.js
index a49f10a9828..75af6c5b6c9 100644
--- a/packages/penelope/src/shape.js
+++ b/packages/penelope/src/shape.js
@@ -146,7 +146,6 @@ function BuildMainShape(part, frontPart) {
sideSeamLength = sideSeamPath.length()
sdelta = store.get('sideSeamLength') - sideSeamLength
}
-
} while ((Math.abs(wdelta) > 1 || Math.abs(sdelta) > 1) && iteration++ < 100)
paths.waist1 = waistCurve.translate(0, 10).attr('class', 'lining dashed')
diff --git a/packages/penelope/src/waistband.js b/packages/penelope/src/waistband.js
index a953d2a7077..ce1ca1f6cdf 100644
--- a/packages/penelope/src/waistband.js
+++ b/packages/penelope/src/waistband.js
@@ -12,7 +12,7 @@ export default function (part) {
sa,
paperless,
macro,
- store
+ store,
} = part.shorthand()
if (!options.waistBand) {
diff --git a/packages/simon/src/back.js b/packages/simon/src/back.js
index dbdcbc2a5a0..54c5a442ccc 100644
--- a/packages/simon/src/back.js
+++ b/packages/simon/src/back.js
@@ -20,7 +20,10 @@ export default (part) => {
// Add pct options (that used to be mm) to the store
store.set('buttonPlacketWidth', measurements.neck * options.buttonPlacketWidth)
store.set('buttonholePlacketWidth', measurements.neck * options.buttonholePlacketWidth)
- store.set('buttonholePlacketFoldWidth', store.get('buttonholePlacketWidth') * options.buttonholePlacketFoldWidth)
+ store.set(
+ 'buttonholePlacketFoldWidth',
+ store.get('buttonholePlacketWidth') * options.buttonholePlacketFoldWidth
+ )
store.set('collarStandWidth', measurements.neck * options.collarStandWidth)
store.set('sleevePlacketWidth', measurements.wrist * options.sleevePlacketWidth)
store.set('boxPleatWidth', measurements.shoulderToShoulder * options.boxPleatWidth)
diff --git a/packages/simon/src/collar.js b/packages/simon/src/collar.js
index 8776e21331f..ff6aecf3552 100644
--- a/packages/simon/src/collar.js
+++ b/packages/simon/src/collar.js
@@ -1,6 +1,18 @@
export default (part) => {
- const { store, measurements, utils, sa, Point, points, Path, paths, complete, paperless, macro, options } =
- part.shorthand()
+ const {
+ store,
+ measurements,
+ utils,
+ sa,
+ Point,
+ points,
+ Path,
+ paths,
+ complete,
+ paperless,
+ macro,
+ options,
+ } = part.shorthand()
const draft = function (tweak = 1) {
const length = measurements.neck * (1 + options.collarEase - options.collarGap) * tweak
diff --git a/packages/simon/src/collarstand.js b/packages/simon/src/collarstand.js
index c403abb8255..8cdae04f60e 100644
--- a/packages/simon/src/collarstand.js
+++ b/packages/simon/src/collarstand.js
@@ -35,7 +35,10 @@ export default (part) => {
points.rightBottomHinge = points.hinge.shift(180 + hinge, width / 2)
points.rightTopCf = points.rightCf.shift(curve + 90, width / 2)
points.rightBottomCf = points.rightCf.shift(curve - 90, width / 2)
- points.rightBottomEdge = points.rightBottomCf.shift(curve, store.get('buttonholePlacketWidth') / 2)
+ points.rightBottomEdge = points.rightBottomCf.shift(
+ curve,
+ store.get('buttonholePlacketWidth') / 2
+ )
// Add control points (right side only)
points.bottomMidCp2 = points.bottomMid.shift(0, half * 0.2)
@@ -48,7 +51,10 @@ export default (part) => {
points.rightTopHingeCp2 = points.rightTopHinge.shift(90 + hinge, half * 0.2)
points.rightTopHingeCp1 = points.rightTopHinge.shift(hinge - 90, half * 0.1)
points.topEdgeCp1 = points.rightTopCf.rotate(-90, points.rightBottomEdge)
- points.rightTopCfCp2 = points.rightTopCf.shift(180 + curve, store.get('buttonholePlacketWidth') / 2)
+ points.rightTopCfCp2 = points.rightTopCf.shift(
+ 180 + curve,
+ store.get('buttonholePlacketWidth') / 2
+ )
// Now do the left side
points.leftCf = points.rightCf.flipX()
@@ -59,7 +65,10 @@ export default (part) => {
points.leftTopCfCp1 = points.rightTopCfCp2.flipX()
points.leftTopCf = points.rightTopCf.flipX()
points.leftBottomCf = points.rightBottomCf.flipX()
- points.leftBottomEdge = points.leftBottomCf.shift(bend + 180, store.get('buttonPlacketWidth') / 2)
+ points.leftBottomEdge = points.leftBottomCf.shift(
+ bend + 180,
+ store.get('buttonPlacketWidth') / 2
+ )
points.leftTopCfCp2 = points.leftTopCf.shift(bend + 180, store.get('buttonPlacketWidth') / 2)
points.leftBottomEdgeCp1 = points.leftBottomCf.rotate(90, points.leftBottomEdge)
points.leftBottomCfCp2 = points.rightBottomCfCp1.flipX()
diff --git a/packages/simon/src/front.js b/packages/simon/src/front.js
index b6991fd0426..2ca8dd8b283 100644
--- a/packages/simon/src/front.js
+++ b/packages/simon/src/front.js
@@ -1,8 +1,19 @@
import { calculateReduction } from './shared'
export default (part) => {
- const { store, measurements, sa, Point, points, Path, paths, complete, macro, snippets, options } =
- part.shorthand()
+ const {
+ store,
+ measurements,
+ sa,
+ Point,
+ points,
+ Path,
+ paths,
+ complete,
+ macro,
+ snippets,
+ options,
+ } = part.shorthand()
// Clean up
for (const i in paths) {
diff --git a/packages/simon/src/frontleft-classic-seperate.js b/packages/simon/src/frontleft-classic-seperate.js
index 4c8262a0184..a74b934b216 100644
--- a/packages/simon/src/frontleft-classic-seperate.js
+++ b/packages/simon/src/frontleft-classic-seperate.js
@@ -1,6 +1,18 @@
export default (part) => {
- const { utils, sa, Point, points, Path, paths, store, snippets, complete, paperless, macro, options } =
- part.shorthand()
+ const {
+ utils,
+ sa,
+ Point,
+ points,
+ Path,
+ paths,
+ store,
+ snippets,
+ complete,
+ paperless,
+ macro,
+ options,
+ } = part.shorthand()
const fold = store.get('buttonholePlacketFoldWidth')
points.neckEdge = utils.lineIntersectsCurve(
diff --git a/packages/simon/src/frontright-seamless.js b/packages/simon/src/frontright-seamless.js
index 79e53b92e90..cd4b37138dc 100644
--- a/packages/simon/src/frontright-seamless.js
+++ b/packages/simon/src/frontright-seamless.js
@@ -1,7 +1,8 @@
import { addButtons } from './shared'
export default (part) => {
- const { sa, store, Point, points, Path, paths, complete, paperless, macro, options } = part.shorthand()
+ const { sa, store, Point, points, Path, paths, complete, paperless, macro, options } =
+ part.shorthand()
const width = store.get('buttonPlacketWidth')
points.placketTopFold1 = points.cfNeck.shift(0, width / 2)
diff --git a/packages/simon/src/sleeveplacket-overlap.js b/packages/simon/src/sleeveplacket-overlap.js
index b45c7f944f9..e1853374994 100644
--- a/packages/simon/src/sleeveplacket-overlap.js
+++ b/packages/simon/src/sleeveplacket-overlap.js
@@ -12,7 +12,7 @@ export default (part) => {
paperless,
macro,
options,
- store
+ store,
} = part.shorthand()
const width = store.get('sleevePlacketWidth')
diff --git a/packages/simon/src/sleeveplacket-underlap.js b/packages/simon/src/sleeveplacket-underlap.js
index 39205ce71bb..eaf0f5a73d3 100644
--- a/packages/simon/src/sleeveplacket-underlap.js
+++ b/packages/simon/src/sleeveplacket-underlap.js
@@ -12,7 +12,7 @@ export default (part) => {
paperless,
macro,
options,
- store
+ store,
} = part.shorthand()
const width = store.get('sleevePlacketWidth') > 20 ? 10 : store.get('sleevePlacketWidth') / 4
diff --git a/packages/simone/CHANGELOG.md b/packages/simone/CHANGELOG.md
index 786e4acf868..1547c8e0e64 100644
--- a/packages/simone/CHANGELOG.md
+++ b/packages/simone/CHANGELOG.md
@@ -13,6 +13,11 @@
- Changed the `boxPleatWidth` option type from `mm` to `pct`
- Changed the `boxPleatFold` option type from `mm` to `pct`
+### Fixed
+
+ - Support drafting of non-human measurements (dolls & giants) Closes [#1318](https://github.com/freesewing/freesewing/issues/1318)
+ - Fix issue with armhole introduced with the S3 options in Brian Closes
+
## 2.17.2 (2021-08-15)
### Added
diff --git a/packages/simone/src/fba-front.js b/packages/simone/src/fba-front.js
index 5323f1bb07d..1b16ffe1fd9 100644
--- a/packages/simone/src/fba-front.js
+++ b/packages/simone/src/fba-front.js
@@ -305,7 +305,6 @@ export default (part) => {
points.logo = new Point(points.armhole.x / 2, points.armhole.y)
snippets.logo = new Snippet('logo', points.logo)
-
//
// Now recreate the paths and let Simon take it from here
//
diff --git a/packages/theo/src/back.js b/packages/theo/src/back.js
index 896f187f1ae..7a70bb06387 100644
--- a/packages/theo/src/back.js
+++ b/packages/theo/src/back.js
@@ -14,11 +14,13 @@ export default function (part) {
measurements,
snippets,
Snippet,
- raise
+ raise,
} = part.shorthand()
// This pattern needs a rewrite
- raise.warning('Theo in its current incarnation is deprecated. A complete rewrite based on our Titan block is on [our v3 roadmap](https://github.com/freesewing/freesewing/discussions/1278). Until that time, if it works, great. If not ¯\\\\__(ツ)\\__/¯')
+ raise.warning(
+ 'Theo in its current incarnation is deprecated. A complete rewrite based on our Titan block is on [our v3 roadmap](https://github.com/freesewing/freesewing/discussions/1278). Until that time, if it works, great. If not ¯\\\\__(ツ)\\__/¯'
+ )
const calculateSlashCorner = () => {
points[901] = utils.beamsIntersect(points[20], points[19], points[26], points[4])