From ef18999e568b37f7a0068eb8e086caf18eb9fae6 Mon Sep 17 00:00:00 2001 From: Yassine SMARA Date: Fri, 30 Apr 2021 11:52:02 +0200 Subject: [PATCH 1/2] i18n locale file builder Fixes #120 Co-authored: @toto101230 --- _locales/en/messages.json | 17 ++++++++--------- _locales/fr/messages.json | 24 ++++++++++-------------- i18nbuilder.js | 34 ++++++++++++++++++++++++++++++++++ package.json | 6 ++++-- 4 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 i18nbuilder.js diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 2390435..5a0f83c 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1,7 +1,4 @@ { - "default_message": { - "message": "

Structured Start Tab

Example

" - }, "data_info_add_link": { "message": "Add link|New link: click or drag." }, @@ -115,8 +112,7 @@ }, "useCustomScrollbar": { "message": "Use a custom scroll bar." - } - , + }, "option_change": { "message": "Option change stored." }, @@ -156,13 +152,13 @@ "emptytrash": { "message": "Empty Trash" }, - "togglebookmarks" : { - "message":"Toggle Bookmarks" + "togglebookmarks": { + "message": "Toggle Bookmarks" }, - "duplicatePanel" :{ + "duplicatePanel": { "message": "Duplicate Panel" }, - "withLink":{ + "withLink": { "message": "With links" }, "withoutLink": { @@ -251,5 +247,8 @@ }, "option_context": { "message": "Options" + }, + "default_message": { + "message": "

Structured Start Tab

Example

\n " } } \ No newline at end of file diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 63e3912..079745b 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1,7 +1,4 @@ { - "default_message": { - "message": "

Structured Start Tab

Exemple

" - }, "data_info_add_link": { "message": "Ajouter un lien|Nouveau lien : cliquez ou faites glisser." }, @@ -44,9 +41,6 @@ "edit_panel": { "message": "Editer le panneau" }, - "placeholder_panel_name": { - "message": "Nom du panneau" - }, "style": { "message": "Style" }, @@ -118,8 +112,7 @@ }, "useCustomScrollbar": { "message": "Utilisez une barre de défilement personnalisée." - } - , + }, "option_change": { "message": "Changement d'option enregistré." }, @@ -159,13 +152,13 @@ "emptytrash": { "message": "Vider la corbeille" }, - "togglebookmarks" : { - "message":"Afficher les marque-pages" + "togglebookmarks": { + "message": "Afficher les marque-pages" }, - "duplicatePanel" :{ + "duplicatePanel": { "message": "Dupliquer les panneaux" }, - "withLink":{ + "withLink": { "message": "Avec les liens" }, "withoutLink": { @@ -229,7 +222,7 @@ "message": "Se souvenir du statut du panneau (ouvert/fermer) quand la page est verrouiller" }, "import_config": { - "message": "Nouvelle version: Voulez-vous importer votre ancienne configuration ? (if you refuse your old data will be deleted)" + "message": "Nouvelle version: Voulez-vous importer votre ancienne configuration ? (si vous refusez, vos anciennes données seront supprimées)" }, "bookmarkspanel": { "message": "Afficher le panneau des marques-pages" @@ -254,5 +247,8 @@ }, "option_context": { "message": "Options" + }, + "default_message": { + "message": "

Structured Start Tab

Exemple

" } -} +} \ No newline at end of file diff --git a/i18nbuilder.js b/i18nbuilder.js new file mode 100644 index 0000000..4e6efa7 --- /dev/null +++ b/i18nbuilder.js @@ -0,0 +1,34 @@ +import xlsx from 'node-xlsx'; +import { existsSync, mkdirSync, writeFileSync } from 'fs'; + +const workSheetsFromFile = xlsx.parse(`./SST Translations.xlsx`); +const sheet = workSheetsFromFile[0].data; +const yesIndex = new Map(); +const dir = './_locales'; + +for (let i = 0; i < sheet[2].length; i++) { + const line = sheet[2][i]; + if (line === 'Yes') { + yesIndex.set(i, sheet[1][i]); + } +} + +sheet.splice(0,4); + +for (const locale of yesIndex) { + const json = {}; + const localeDir = dir + '/' + locale[1]; + + for (const line of sheet) { + if (line[0] === 'Contributor') break; + json[line[0]] = { + message: line[locale[0]] + }; + } + + if (!existsSync(localeDir)) { + mkdirSync(localeDir); + } + + writeFileSync(localeDir + '/messages.json', JSON.stringify(json, null, 2)); +} \ No newline at end of file diff --git a/package.json b/package.json index 78ce56c..2653292 100644 --- a/package.json +++ b/package.json @@ -33,9 +33,11 @@ "eslint-config-portsoc": "^0.8.1", "eslint-import-resolver-typescript": "^2.3.0", "eslint-plugin-import": "^2.19.1", + "node-xlsx": "^0.16.1", "parcel": "^2.0.0-beta.1", "typescript": "^4.1.3", - "web-ext": "^5.5.0" + "web-ext": "^5.5.0", + "xlsx": "^0.16.9" }, "eslintConfig": { "env": { @@ -94,4 +96,4 @@ ] } } -} \ No newline at end of file +} From 50f9fb32e0186060e2eb90fe3db7fde7e9a1e841 Mon Sep 17 00:00:00 2001 From: Yassine SMARA Date: Fri, 30 Apr 2021 11:54:49 +0200 Subject: [PATCH 2/2] Added a npm script --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 2653292..118b014 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "zip": "rm sst.zip;rm sst.xpi;find . -name '.DS_Store' -type f -delete;zip -u -8 -v -r sst.zip app _locales manifest.json release.md;cp sst.zip sst.xpi;echo 'bump versions in releases.md, manifest.json and package.json...'", "all": "npm run build;npm run zip;", "test-moz": "web-ext --firefox=firefoxdeveloperedition run ", - "sync-version": "node autobuild.js" + "sync-version": "node autobuild.js", + "i18": "node i18nbuilder.js" }, "repository": { "type": "git",