diff --git a/packages/freesewing.lab/hooks/useApp.js b/packages/freesewing.lab/hooks/useApp.js index 0873cf020d0..529e427750c 100644 --- a/packages/freesewing.lab/hooks/useApp.js +++ b/packages/freesewing.lab/hooks/useApp.js @@ -1,5 +1,6 @@ import { useState } from 'react' import set from 'lodash.set' +import mustache from 'mustache' // Stores state in local storage import useLocalStorage from 'shared/hooks/useLocalStorage.js' // Patterns @@ -90,19 +91,23 @@ function useApp(full = true) { */ const t = (key, props=false, toLanguage=false) => { if (!toLanguage) toLanguage = language - if (!props) { // easy - if (strings[toLanguage][key]) return strings[toLanguage][key] - // app is the most common prefix, so we allow to skip it - if (strings[toLanguage][`app.${key}`]) return strings[toLanguage][`app.${key}`] - // Can we fall back to English? - if (toLanguage !== 'en') { - if (strings.en[key]) return strings.en[key] - if (strings.en[`app.${key}`]) return strings.en[`app.${key}`] - } - } - console.log('Missing translation key:', key) + const template = + strings[toLanguage][key] || + strings[toLanguage][`app.${key}`] || + strings.en[`app.${key}`] || + false + if (!props && template) return template + else if (template) return mustache.render( + template.split('{').join('{{').split('}').join('}}'), + props + ) + // No translation found + //console.log('Missing translation key:', key) - return key + // If it's a key (no spaces), return the final part, that's slightly better + return (key.indexOf(' ') === -1) + ? key.split('.').pop() + : key } return { diff --git a/packages/freesewing.lab/package.json b/packages/freesewing.lab/package.json index 3eceeea3e73..d40ca8a0fd4 100644 --- a/packages/freesewing.lab/package.json +++ b/packages/freesewing.lab/package.json @@ -26,6 +26,7 @@ "lodash.get": "^4.4.2", "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", + "mustache": "^4.2.0", "netlify-cli": "^8.4.2", "next": "latest", "react-copy-to-clipboard": "^5.0.4", diff --git a/yarn.lock b/yarn.lock index 0bd4c46bdf3..c868634c1c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19557,7 +19557,7 @@ multiparty@^4.2.1: safe-buffer "5.2.1" uid-safe "2.1.5" -mustache@^4.0.1: +mustache@^4.0.1, mustache@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==