From 13e8e9e828d13f0e2e44743fb603b54851b7badc Mon Sep 17 00:00:00 2001 From: Matteo Manzinello Date: Wed, 10 Jun 2020 19:19:38 +0200 Subject: [PATCH] working on i18n... (a lot to do...) --- i18n/en.json | 3 --- i18n/it.json | 3 --- mailgo.d.ts | 3 ++- mailgo.js | 25 ++++++++++++++++++++----- src/i18n/i18n.js | 11 +++++++++++ src/mailgo.ts | 33 ++++++++++++++++++++++++++++----- 6 files changed, 61 insertions(+), 17 deletions(-) delete mode 100644 i18n/en.json delete mode 100644 i18n/it.json create mode 100644 src/i18n/i18n.js diff --git a/i18n/en.json b/i18n/en.json deleted file mode 100644 index 50dfa0e..0000000 --- a/i18n/en.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "open_in": "open in " -} diff --git a/i18n/it.json b/i18n/it.json deleted file mode 100644 index 752283a..0000000 --- a/i18n/it.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "open_in": "apri con " -} diff --git a/mailgo.d.ts b/mailgo.d.ts index db9f8cd..3bb424a 100644 --- a/mailgo.d.ts +++ b/mailgo.d.ts @@ -4,7 +4,8 @@ export type MailgoConfig = { initEvent?: string; - lang?: string; + defaultLang?: string; + forceLang?: boolean; // TODO here mailgo configurations! }; diff --git a/mailgo.js b/mailgo.js index d405043..287b108 100644 --- a/mailgo.js +++ b/mailgo.js @@ -1,3 +1,7 @@ +// i18n for mailgo +import i18n from "./i18n/i18n"; +// default lang +const DEFAULT_LANG = "en"; // links const MAILTO = "mailto:"; const TEL = "tel:"; @@ -22,6 +26,17 @@ let gmail, outlook, open, telegram, wa, skype, call, copyMail, copyTel; * the function that creates the mailgo elements in DOM */ const mailgoInit = (mailgoConfig) => { + // default language + let lang = DEFAULT_LANG; + // translations + let translations = i18n.translations; + // if a default language is defined use it + if (mailgoConfig.defaultLang && + i18n.languages.includes(mailgoConfig.defaultLang)) { + lang = mailgoConfig.defaultLang; + } + // strings + let strings = translations[lang]; // mailgo mail { // modal @@ -93,7 +108,7 @@ const mailgoInit = (mailgoConfig) => { gmail.href = DEFAULT_BTN_HREF; gmail.classList.add("m-open"); gmail.classList.add("m-gmail"); - gmail.appendChild(createTextNode("open in ")); + gmail.appendChild(createTextNode(strings.open_in)); let gmailSpan = createElement(span); gmailSpan.className = "w-500"; gmailSpan.appendChild(createTextNode("Gmail")); @@ -105,7 +120,7 @@ const mailgoInit = (mailgoConfig) => { outlook.href = DEFAULT_BTN_HREF; outlook.classList.add("m-open"); outlook.classList.add("m-outlook"); - outlook.appendChild(createTextNode("open in ")); + outlook.appendChild(createTextNode(strings.open_in)); let outlookSpan = createElement(span); outlookSpan.className = "w-500"; outlookSpan.appendChild(createTextNode("Outlook")); @@ -165,7 +180,7 @@ const mailgoInit = (mailgoConfig) => { telegram.classList.add("m-tg"); // by default not display telegram.style.display = "none"; - telegram.appendChild(createTextNode("open in ")); + telegram.appendChild(createTextNode(strings.open_in)); let telegramSpan = createElement(span); telegramSpan.className = "w-500"; telegramSpan.appendChild(createTextNode("Telegram")); @@ -177,7 +192,7 @@ const mailgoInit = (mailgoConfig) => { wa.href = DEFAULT_BTN_HREF; wa.classList.add("m-open"); wa.classList.add("m-wa"); - wa.appendChild(createTextNode("open in ")); + wa.appendChild(createTextNode(strings.open_in)); let waSpan = createElement(span); waSpan.className = "w-500"; waSpan.appendChild(createTextNode("WhatsApp")); @@ -189,7 +204,7 @@ const mailgoInit = (mailgoConfig) => { skype.href = DEFAULT_BTN_HREF; skype.classList.add("m-open"); skype.classList.add("m-skype"); - skype.appendChild(createTextNode("open in ")); + skype.appendChild(createTextNode(strings.open_in)); let skypeSpan = createElement(span); skypeSpan.className = "w-500"; skypeSpan.appendChild(createTextNode("Skype")); diff --git a/src/i18n/i18n.js b/src/i18n/i18n.js new file mode 100644 index 0000000..8f8f4e3 --- /dev/null +++ b/src/i18n/i18n.js @@ -0,0 +1,11 @@ +export default { + languages: ["en", "it"], + translations: { + en: { + open_in: "open in ", + }, + it: { + open_in: "apri con ", + }, + }, +}; diff --git a/src/mailgo.ts b/src/mailgo.ts index c65bd21..1cb3154 100644 --- a/src/mailgo.ts +++ b/src/mailgo.ts @@ -1,5 +1,11 @@ import { MailgoConfig } from "../mailgo"; +// i18n for mailgo +import i18n from "./i18n/i18n"; + +// default lang +const DEFAULT_LANG = "en"; + // links const MAILTO: string = "mailto:"; const TEL: string = "tel:"; @@ -58,6 +64,23 @@ let gmail: HTMLLinkElement, * the function that creates the mailgo elements in DOM */ const mailgoInit = (mailgoConfig?: MailgoConfig): void => { + // default language + let lang = DEFAULT_LANG; + + // translations + let translations: any = i18n.translations; + + // if a default language is defined use it + if ( + mailgoConfig.defaultLang && + i18n.languages.includes(mailgoConfig.defaultLang) + ) { + lang = mailgoConfig.defaultLang; + } + + // strings + let strings: any = translations[lang]; + // mailgo mail { // modal @@ -139,7 +162,7 @@ const mailgoInit = (mailgoConfig?: MailgoConfig): void => { gmail.href = DEFAULT_BTN_HREF; gmail.classList.add("m-open"); gmail.classList.add("m-gmail"); - gmail.appendChild(createTextNode("open in ")); + gmail.appendChild(createTextNode(strings.open_in)); let gmailSpan = createElement(span); gmailSpan.className = "w-500"; gmailSpan.appendChild(createTextNode("Gmail")); @@ -153,7 +176,7 @@ const mailgoInit = (mailgoConfig?: MailgoConfig): void => { outlook.href = DEFAULT_BTN_HREF; outlook.classList.add("m-open"); outlook.classList.add("m-outlook"); - outlook.appendChild(createTextNode("open in ")); + outlook.appendChild(createTextNode(strings.open_in)); let outlookSpan = createElement(span); outlookSpan.className = "w-500"; outlookSpan.appendChild(createTextNode("Outlook")); @@ -227,7 +250,7 @@ const mailgoInit = (mailgoConfig?: MailgoConfig): void => { // by default not display telegram.style.display = "none"; - telegram.appendChild(createTextNode("open in ")); + telegram.appendChild(createTextNode(strings.open_in)); let telegramSpan = createElement(span); telegramSpan.className = "w-500"; telegramSpan.appendChild(createTextNode("Telegram")); @@ -241,7 +264,7 @@ const mailgoInit = (mailgoConfig?: MailgoConfig): void => { wa.href = DEFAULT_BTN_HREF; wa.classList.add("m-open"); wa.classList.add("m-wa"); - wa.appendChild(createTextNode("open in ")); + wa.appendChild(createTextNode(strings.open_in)); let waSpan = createElement(span); waSpan.className = "w-500"; waSpan.appendChild(createTextNode("WhatsApp")); @@ -255,7 +278,7 @@ const mailgoInit = (mailgoConfig?: MailgoConfig): void => { skype.href = DEFAULT_BTN_HREF; skype.classList.add("m-open"); skype.classList.add("m-skype"); - skype.appendChild(createTextNode("open in ")); + skype.appendChild(createTextNode(strings.open_in)); let skypeSpan = createElement(span); skypeSpan.className = "w-500"; skypeSpan.appendChild(createTextNode("Skype"));