From e6d93bbf5dbf515a01c27143f4bda21075745d3d Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Wed, 30 Aug 2023 17:07:55 +0200 Subject: [PATCH 01/26] Update changelog --- CHANGELOG.md | 5 +---- src/extension.ts | 8 +++++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ac9376c..2a99352b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,11 @@ # Change Log -## [9.1.0] - 2023-xx-xx +## [9.1.0] - 2023-08-30 ### ✹ New features - [#630](https://github.com/estruyf/vscode-front-matter/issues/630): Italian localization added (thanks to [Emanuele Bartolesi](https://github.com/kasuken)) -### 🎹 Enhancements - ### âšĄïž Optimizations - [#639](https://github.com/estruyf/vscode-front-matter/issues/639): Add check for content type in page folders setting @@ -22,7 +20,6 @@ - [#636](https://github.com/estruyf/vscode-front-matter/issues/636): Fix media browser lightbox background color - [#641](https://github.com/estruyf/vscode-front-matter/issues/641): Fix file parsing of the localization file - ## [9.0.0] - 2023-08-21 - [Release notes](https://beta.frontmatter.codes/updates/v9.0.0) ### 🌎 Multilingual support diff --git a/src/extension.ts b/src/extension.ts index c828c50c..00adb0af 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,7 +4,13 @@ import { COMMAND_NAME, TelemetryEvent } from './constants'; import { MarkdownFoldingProvider } from './providers/MarkdownFoldingProvider'; import { TagType } from './panelWebView/TagType'; import { PanelProvider } from './panelWebView/PanelProvider'; -import { DashboardSettings, debounceCallback, Logger, parseWinPath, Settings as SettingsHelper } from './helpers'; +import { + DashboardSettings, + debounceCallback, + Logger, + parseWinPath, + Settings as SettingsHelper +} from './helpers'; import ContentProvider from './providers/ContentProvider'; import { PagesListener } from './listeners/dashboard'; import { DataListener, SettingsListener } from './listeners/panel'; From e4530ee5ca44b422e61ab4af6bfbb8bfd179a16d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Barbaza?= Date: Thu, 31 Aug 2023 15:48:50 +0200 Subject: [PATCH 02/26] add french translation --- l10n/bundle.l10n.fr.json | 426 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 l10n/bundle.l10n.fr.json diff --git a/l10n/bundle.l10n.fr.json b/l10n/bundle.l10n.fr.json new file mode 100644 index 00000000..ba0c7bc8 --- /dev/null +++ b/l10n/bundle.l10n.fr.json @@ -0,0 +1,426 @@ +{ + "common.add": "Ajouter", + "common.edit": "Modifier", + "common.delete": "Supprimer", + "common.cancel": "Annuler", + "common.clear": "RĂ©initialiser", + "common.clear.value": "RĂ©initialiser la valeur", + "common.search": "Rechercher", + "common.save": "Sauvegarder", + "common.menu": "Menu", + "common.insert": "InsĂ©rer", + "common.insert.snippet": "InsĂ©rer snippet", + "common.title": "Titre", + "common.description": "Description", + "common.retry": "RĂ©essayer", + "common.update": "Mettre Ă  jour", + "common.information": "Information", + "common.important": "Important", + "common.sync": "Synchroniser", + "common.slug": "Slug", + "common.support": "Support", + "common.remove.value": "Supprimer {0}", + "common.error.message": "DĂ©solĂ©, une erreur s'est produite.", + + "developer.title": "Mode dĂ©veloppeur", + "developer.reload.title": "Recharger le tableau de bord", + "developer.reload.label": "Recharger", + "developer.devTools.title": "Ouvrir les options pour les dĂ©veloppeurs", + "developer.devTools.label": "Options pour les dĂ©veloppeurs", + + "field.required": "Champ obligatoire", + "field.unknown": "Champ inconnu", + + "dashboard.chatbot.answer.answer": "RĂ©ponse", + "dashboard.chatbot.answer.resources": "Ressources", + "dashboard.chatbot.answer.warning": "Attention : les rĂ©ponses peuvent ĂȘtre fausses. En cas de doute, consultez la documentation.", + + "dashboard.chatbot.chatbot.loading": "L'assistant se charge", + "dashboard.chatbot.chatbot.ready": "Je suis prĂȘt, que voulez-vous savoir ?", + + "dashboard.chatbot.chatbox.placeholder": "Comment configurer Front Matter ?", + + "dashboard.chatbot.header.heading": "Demander Ă  Front Matter AI", + "dashboard.chatbot.header.description": "Notre IA, propulsĂ©e par mendable.ai, a Ă©laborĂ© la documentation et peut maintenant vous aider concernant n'importe quelle demande sur Front Matter. Allez-y, demandez lui quelque chose!", + + "dashboard.common.choiceButton.open": "Ouvrir les options", + + "dashboard.contents.contentActions.actionMenuButton.title": "Menu", + "dashboard.contents.contentActions.menuItem.view": "Vue", + "dashboard.contents.contentActions.alert.title": "Supprimer : {0}", + "dashboard.contents.contentActions.alert.description": "Etes-vous sĂ»r de vouloir supprimer le contenu \"{0}\" ?", + + "dashboard.contents.item.invalidTitle": "", + "dashboard.contents.item.invalidDescription": "", + + "dashboard.contents.list.title": "Titre", + "dashboard.contents.list.date": "Date", + "dashboard.contents.list.status": "Statut", + + "dashboard.contents.overview.noMarkdown": "Aucun Markdown Ă  afficher", + "dashboard.contents.overview.noFolders": "Enregistez un dossier de contenu dans votre projet pour que Front Matter puisse trouver vos contenus.", + + "dashboard.contents.status.draft": "Brouillon", + "dashboard.contents.status.published": "En-ligne", + + "dashboard.dataView.dataForm.modify": "Modifier les donnĂ©es", + "dashboard.dataView.dataForm.add": "Ajouter une nouvelle donnĂ©e", + + "dashboard.dataView.dataView.select": "SĂ©lectionnez votre type de donnĂ©e", + "dashboard.dataView.dataView.title": "Votre entrĂ©e de donnĂ©e {0}", + "dashboard.dataView.dataView.add": "Ajouter une nouvelle entrĂ©e", + "dashboard.dataView.dataView.empty": "Aucune entrĂ©e trouvĂ©e pour {0}", + "dashboard.dataView.dataView.createOrModify": "CrĂ©er ou modifier votre donnĂ©e {0}", + "dashboard.dataView.dataView.getStarted": "SĂ©lectionnez un type de donnĂ©es pour commencer", + "dashboard.dataView.dataView.noDataFiles": "Aucun fichier de donnĂ©es trouvĂ©", + "dashboard.dataView.dataView.getStarted.link": "En savoir plus sur l'utilisation des donnĂ©es", + + "dashboard.dataView.emptyView.heading": "SĂ©lectionnez d'abord votre type de donnĂ©es", + + "dashboard.dataView.sortableItem.editButton.title": "Modifier \"{0}\"", + "dashboard.dataView.sortableItem.deleteButton.title": "Supprimer \"{0}\"", + "dashboard.dataView.sortableItem.alert.title": "Supprimer la valeur", + "dashboard.dataView.sortableItem.alert.description": "Etes-vous sĂ»r de vouloir supprimer cette valeur?", + + "dashboard.errorView.description": "Merci de fermer le tableau de bord et de rĂ©essayer.", + + "dashboard.header.breadcrumb.home": "Accueil", + + "dashboard.header.clearFilters.title": "RĂ©initialiser les filtres, les groupes et le tri", + + "dashboard.header.filter.default": "Aucun filtre", + + "dashboard.header.folders.default": "Tous les types", + "dashboard.header.folders.menuButton.showing": "Afficher", + + "dashboard.header.grouping.option.none": "Aucun", + "dashboard.header.grouping.option.year": "AnnĂ©e", + "dashboard.header.grouping.option.draft": "Brouillon/En-ligne", + "dashboard.header.grouping.menuButton.label": "GroupĂ© par", + + "dashboard.header.navigation.allArticles": "Tous les articles", + "dashboard.header.navigation.published": "En-ligne", + "dashboard.header.navigation.draft": "Brouillon", + + "dashboard.header.header.createContent": "CrĂ©er contenu", + "dashboard.header.header.createByContentType": "CrĂ©er par type de contenu", + "dashboard.header.header.createByTemplate": "CrĂ©er par modĂšle", + + "dashboard.header.pagination.first": "Premier", + "dashboard.header.pagination.previous": "PrĂ©cĂ©dent", + "dashboard.header.pagination.next": "suivant", + "dashboard.header.pagination.last": "Dernier", + + "dashboard.header.paginationStatus.text": "Afficher {0} de {1} des {2} rĂ©sultats", + + "dashboard.header.projectSwitcher.label": "projet", + + "dashboard.header.refreshDashboard.label": "Actualiser le dashboard", + + "dashboard.header.sorting.lastModified.asc": "DerniĂšre modification (croissant)", + "dashboard.header.sorting.lastModified.desc": "DerniĂšre modification (dĂ©croissant)", + "dashboard.header.sorting.filename.asc": "Par nom de fichier (croissant)", + "dashboard.header.sorting.filename.desc": "Par nom de fichier (dĂ©croissant)", + "dashboard.header.sorting.published.asc": "En-ligne (croissant)", + "dashboard.header.sorting.published.desc": "En-ligne (dĂ©croissant)", + "dashboard.header.sorting.size.asc": "Taille (croissant)", + "dashboard.header.sorting.size.desc": "Taille (dĂ©croissant)", + "dashboard.header.sorting.caption.asc": "LĂ©gende (croissant)", + "dashboard.header.sorting.caption.desc": "LĂ©gende (dĂ©croissant)", + "dashboard.header.sorting.alt.asc": "Alt (croissant)", + "dashboard.header.sorting.alt.desc": "Alt (dĂ©croissant)", + "dashboard.header.sorting.label": "Trier par", + + "dashboard.header.startup.label": "Ouvrir au dĂ©marrage?", + + "dashboard.header.tabs.contents": "Contenus", + "dashboard.header.tabs.media": "MĂ©dias", + "dashboard.header.tabs.snippets": "Snippets", + "dashboard.header.tabs.data": "donnĂ©es", + "dashboard.header.tabs.taxonomies": "Taxonomies", + + "dashboard.header.viewSwitch.toGrid": "Afficher en grille", + "dashboard.header.viewSwitch.toList": "Afficher en liste", + + "dashboard.layout.sponsor.support.msg": "Soutenir Front Matter", + "dashboard.layout.sponsor.review.label": "Donnez votre avis", + "dashboard.layout.sponsor.review.msg": "Donnez votre avis sur Front Matter", + + "dashboard.media.common.title": "Titre", + "dashboard.media.common.caption": "LĂ©gende", + "dashboard.media.common.alt": "Texte alternatif", + "dashboard.media.common.size": "Taille", + + "dashboard.media.dialog.title": "Voir les dĂ©tails", + "dashboard.media.panel.close": "Fermer le panneau", + "dashboard.media.metadata.panel.title": "Mettre Ă  jour les mĂ©tadonnĂ©es", + "dashboard.media.metadata.panel.description": "SpĂ©cifiez les mĂ©tadonnĂ©es que vous voulez utiliser pour ce fichier.", + "dashboard.media.metadata.panel.field.fileName": "Nom de fichier", + "dashboard.media.metadata.panel.form.metadata.title": "MĂ©tadonnĂ©es", + "dashboard.media.metadata.panel.form.information.title": "Information", + "dashboard.media.metadata.panel.form.information.createdDate": "CrĂ©Ă©", + "dashboard.media.metadata.panel.form.information.modifiedDate": "DerniĂšres modifications", + "dashboard.media.metadata.panel.form.information.dimensions": "Dimensions", + "dashboard.media.metadata.panel.form.information.folder": "Dossier", + + "dashboard.media.folderCreation.hexo.create": "CrĂ©er un dossier de ressource de l'article", + "dashboard.media.folderCreation.folder.create": "CrĂ©er un nouveau dossier", + + "dashboard.media.item.quickAction.insert.field": "InsĂ©rer une image pour le champ \"{0}\"", + "dashboard.media.item.quickAction.insert.markdown": "InsĂ©rer une image avec le markup markdown", + "dashboard.media.item.quickAction.copy.path": "Copier le chemin du mĂ©dia", + "dashboard.media.item.quickAction.delete": "Supprimer le fichier du mĂ©dia", + "dashboard.media.item.menuItem.edit.metadata": "Modifier les mĂ©tadonnĂ©es", + "dashboard.media.item.menuItem.insert.image": "InsĂ©rer une image", + "dashboard.media.item.menuItem.reveal.media": "Afficher le mĂ©dia", + "dashboard.media.item.infoDialog.snippet.description": "SĂ©lectionnez le snippet de mĂ©dia Ă  utiliser pour le fichier de mĂ©dia courant.", + "dashboard.media.item.alert.delete.description": "Etes-vous sĂ»r de vouloir supprimer le fichier du dossier {0} ?", + + "dashboard.media.media.description": "SĂ©lectionnez le fichier mĂ©dia Ă  ajouter Ă  votre contenu.", + "dashboard.media.media.dragAndDrop": "Vous pouvez aussi glisser-dĂ©poser des images depuis votre bureau et les sĂ©lectionner une fois envoyĂ©s.", + "dashboard.media.media.folder.upload": "Envoyer dans {0}", + "dashboard.media.media.folder.default": "Aucun dossier sĂ©lectionnĂ©, les fichiers que vous envoyez seront ajoutĂ©s au dossier {0}", + "dashboard.media.media.placeholder": "Aucun fichier de mĂ©dia Ă  afficher. Vous pouvez glisser-dĂ©poser de nouveaux fichiers en maintenant la touche [shift] appuyĂ©e.", + "dashboard.media.media.contentFolder": "Dossier de contenu", + "dashboard.media.media.publicFolder": "Dossier public", + + "dashboard.media.mediaHeaderTop.searchbox.placeholder": "Rechercher dans le dossier", + + "dashboard.media.mediaSnippetForm.formDialog.title": "InsĂ©rer un mĂ©dia: {0}", + "dashboard.media.mediaSnippetForm.formDialog.description": "InsĂ©rer le fichier de mĂ©dia {0} dans l'article courant", + + "dashboard.preview.input.placeholder": "Entrer une URL", + "dashboard.preview.button.navigate.title": "Naviguer", + "dashboard.preview.button.refresh.title": "Rafraichir", + "dashboard.preview.button.open.title": "Ouvrir", + + "dashboard.snippetsView.item.quickAction.editSnippet": "Modifier le snippet", + "dashboard.snippetsView.item.quickAction.deleteSnippet": "Supprimer le snippet", + "dashboard.snippetsView.item.quickAction.viewSnippet": "Voir le fichier de snippet", + "dashboard.snippetsView.item.insert.formDialog.title": "InsĂ©rer le snippet: {0}", + "dashboard.snippetsView.item.insert.formDialog.description": "InsĂ©rer le snippet {0} dans l'article courant", + "dashboard.snippetsView.item.edit.formDialog.title": "Modifier le snippet: {0}", + "dashboard.snippetsView.item.edit.formDialog.description": "Modifier le snippet {0}", + "dashboard.snippetsView.item.alert.title": "Supprimer le snippet : {0}", + "dashboard.snippetsView.item.alert.description": "Etes-vous sĂ»r de vouloir supprimer le snippet {0} ?", + + "dashboard.snippetsView.newForm.snippetInput.title.placeholder": "Titre ", + "dashboard.snippetsView.newForm.snippetInput.description.label": "Description", + "dashboard.snippetsView.newForm.snippetInput.description.placeholder": "Description du snippet", + "dashboard.snippetsView.newForm.snippetInput.snippet.label": "Snippet", + "dashboard.snippetsView.newForm.snippetInput.snippet.placeholder": "Contenu du snippet", + "dashboard.snippetsView.newForm.snippetInput.isMediaSnippet.label": "Snippet mĂ©dia ?", + "dashboard.snippetsView.newForm.snippetInput.isMediaSnippet.checkbox.label": "Snippet mĂ©dia", + "dashboard.snippetsView.newForm.snippetInput.isMediaSnippet.checkbox.description": "Utiliser le snippet actuel pour insĂ©rer des fichiers mĂ©dias dans votre contenu.", + "dashboard.snippetsView.newForm.snippetInput.docsButton.title": "En savoir plus sur l'utilisation des substituts de snippet mĂ©dias", + "dashboard.snippetsView.newForm.snippetInput.docsButton.description": "VĂ©rifier la documentation des substituts de snippet mĂ©dia pour savoir quel substitut utiliser.", + + "dashboard.snippetsView.snippets.ariaLabel": "En-tĂȘte de snippet", + "dashboard.snippetsView.snippets.button.create": "CrĂ©er un nouveau snippet", + "dashboard.snippetsView.snippets.select.description": "SĂ©lectionnez le snippet Ă  ajouter Ă  votre contenu.", + "dashboard.snippetsView.snippets.empty.message": "Aucun snippet trouvĂ©", + "dashboard.snippetsView.snippets.readMore": "En savoir plus sur l'utilisation des snippets", + "dashboard.snippetsView.snippets.formDialog.title": "CrĂ©er un snippet", + + "dashboard.steps.stepsToGetStarted.button.addFolder.title": "Ajouter un dossier de contenu Ă  Front Matter", + "dashboard.steps.stepsToGetStarted.initializeProject.name": "Initialiser le projet", + "dashboard.steps.stepsToGetStarted.initializeProject.description": "Initialiser le projet crĂ©e les fichiers et dossiers nĂ©cĂ©ssaire au bon fonctionnement du CMS Front Matter. Commencez par cliquer sur cette action.", + "dashboard.steps.stepsToGetStarted.framework.name": "RĂ©glages framework", + "dashboard.steps.stepsToGetStarted.framework.description": "SĂ©lectionnez votre gĂ©nĂ©rateur de site ou votre framework pour prĂ©-remplir les paramĂštres recommandĂ©s.", + "dashboard.steps.stepsToGetStarted.framework.select": "SĂ©lectionnez votre framework", + "dashboard.steps.stepsToGetStarted.framework.select.other": "autre", + "dashboard.steps.stepsToGetStarted.assetsFolder.name": "Quel est votre dossier de ressources ?", + "dashboard.steps.stepsToGetStarted.assetsFolder.description": "SĂ©lectionner le dossier contenant vos ressources. Ce dossier sera utilisĂ© pour stocker tous les fichiers mĂ©dias de vos articles.", + "dashboard.steps.stepsToGetStarted.assetsFolder.public.title": "Utiliser le dossier 'public'", + "dashboard.steps.stepsToGetStarted.assetsFolder.assets.title": "Utiliser le dossier de ressources d'Astro (src/assets)", + "dashboard.steps.stepsToGetStarted.assetsFolder.other.description": "Si vous voulez configurer un autre dossier, vous pouvez le faire manuellement dans le fichier frontmatter.json.", + "dashboard.steps.stepsToGetStarted.contentFolders.name": "Enregistrer le ou less dossiers de contenus ?", + "dashboard.steps.stepsToGetStarted.contentFolders.description": "Ajouter un des dossiers que nous avons trouvĂ© dans votre projet en tant que dossier de contenus. Une fois ce dossier sĂ©lectionnĂ©, Front Matter pourra lister tous les contenus et vous permettra de crĂ©er vos contenus.", + "dashboard.steps.stepsToGetStarted.contentFolders.label": "Dossiers contenant des contenus :", + "dashboard.steps.stepsToGetStarted.contentFolders.information.description": "Vous pouvez aussi effectuer cette action en faisant un clic droit sur le dossier dans la vue d'exploration, et sĂ©lectionner le dossier Ă  enregister.", + "dashboard.steps.stepsToGetStarted.tags.name": "Importer tous les tags et toutes les catĂ©gories (optionnel)", + "dashboard.steps.stepsToGetStarted.tags.description": "Maintenant que Front Matter connaĂźt tous vos dossiers de contenus, voulez-vous importer tous les tags et toutes les catĂ©gories de ces contenus ?", + "dashboard.steps.stepsToGetStarted.showDashboard.name": "Afficher le tableau de bord", + "dashboard.steps.stepsToGetStarted.showDashboard.description": "Une fois que toutes ces actions sont effectuĂ©es, le tableau de bord pourra ĂȘtre chargĂ©.", + + "dashboard.taxonomyView.button.add.title": "Ajouter {0} aux paramĂštres de taxonomie", + "dashboard.taxonomyView.button.edit.title": "Modifier {0}", + "dashboard.taxonomyView.button.merge.title": "Fusionner {0}", + "dashboard.taxonomyView.button.move.title": "DĂ©placer dans un autre type de taxonomie", + "dashboard.taxonomyView.button.delete.title": "Supprimer {0}", + + "dashboard.taxonomyView.taxonomyLookup.button.title": "Afficher les contenus contenants {0} dans {1}", + + "dashboard.taxonomyView.taxonomyManager.description": "CrĂ©er, modifier, et gĂ©rer le {0} de votre site", + "dashboard.taxonomyView.taxonomyManager.button.create": "CrĂ©er une nouvelle valeur pour {0}", + "dashboard.taxonomyView.taxonomyManager.table.heading.name": "Nom", + "dashboard.taxonomyView.taxonomyManager.table.heading.count": "Compteur", + "dashboard.taxonomyView.taxonomyManager.table.heading.action": "Action", + "dashboard.taxonomyView.taxonomyManager.table.row.empty": "Aucun {0} trouvĂ©", + "dashboard.taxonomyView.taxonomyManager.table.unmapped.title": "ParamĂštre manquant", + + "dashboard.taxonomyView.taxonomyView.navigationBar.title": "SĂ©lectionnez la taxonomie", + "dashboard.taxonomyView.taxonomyView.button.import": "Importer la taxonomie", + "dashboard.taxonomyView.taxonomyView.navigationItem.tags": "Tags", + "dashboard.taxonomyView.taxonomyView.navigationItem.categories": "CatĂ©gories", + + "dashboard.unkownView.title": "La vue n'existe pas", + "dashboard.unkownView.description": "Il semble que vous ayez fermĂ© une vue qui n'existe plus. Merci de rĂ©ouvrir votre tableau de bord.", + + "dashboard.welcomeScreen.title": "GĂ©rer votre site statique avec Front Matter", + "dashboard.welcomeScreen.thanks": "Merci d'utiliser Front Matter !", + "dashboard.welcomeScreen.description": "Nous faisons de notre mieux pour faire de Front Maker un CMS facile Ă  utiliser. Si vous avez des questions ou des suggestions, n'hĂ©sitez pas Ă  nous contacter sur Github.", + "dashboard.welcomeScreen.link.github.title": "GitHub", + "dashboard.welcomeScreen.link.github.label": "GitHub / Documentation", + "dashboard.welcomeScreen.link.sponsor.title": "Devenez contributeur", + "dashboard.welcomeScreen.link.sponsor.label": "Contributeur", + "dashboard.welcomeScreen.link.review.title": "Donnez votre avis", + "dashboard.welcomeScreen.link.review.label": "Avis", + "dashboard.welcomeScreen.actions.heading": "Effectuez les Ă©tapes suivants pour commencer Ă  utiliser l'extension", + "dashboard.welcomeScreen.actions.description": "Vous pouvez aussi utiliser l'extension depuis la barre latĂ©rale Front Matter. Vous trouverez les actions Ă  effectuer spĂ©cifiquement pour vos pages.", + "dashboard.welcomeScreen.actions.thanks": "Nous espĂ©rons que vous aimez Front Matter !", + + "panel.contentType.contentTypeValidator.title": "Type de contenu", + "panel.contentType.contentTypeValidator.hint": "Nous avons remarquĂ© des diffĂ©rences entre le type de contenu et les donnĂ©es front matter.\n Voulez vous crĂ©er, mettre Ă  jour ou dĂ©finir le type de contenu pour ce contenu ?", + "panel.contentType.contentTypeValidator.button.create": "CrĂ©er un type de contenu", + "panel.contentType.contentTypeValidator.button.add": "Ajouter les champs manquants au type de contenu", + "panel.contentType.contentTypeValidator.button.change": "Changer le type de contenu du fichier", + + "panel.dataBlock.dataBlockField.group.selected.edit": "Modification: {0}", + "panel.dataBlock.dataBlockField.group.selected.create": "CrĂ©er un nouveau {0}", + "panel.dataBlock.dataBlockField.group.select": "SĂ©lectionner un groupe", + "panel.dataBlock.dataBlockField.add": "Ajouter {0}", + + "panel.dataBlock.dataBlockRecord.edit": "Modifier l'enregistrement", + "panel.dataBlock.dataBlockRecord.delete": "Supprimer l'enregistrement", + + "panel.dataBlock.dataBlockRecords.label": "Enregistrements", + + "panel.dataBlock.dataBlockSelector.label": "Type de bloc", + + "panel.errorBoundary.fieldBoundary.label": "Echec d'affichage du champ", + + "panel.fields.choiceField.select": "SĂ©lectionner {0}", + "panel.fields.choiceField.clear": "RĂ©initialiser la valeur", + + "panel.fields.contentTypeRelationshipField.loading": "RĂ©cupĂ©ration des valeurs possible...", + + "panel.fields.dateTimeField.button.pick": "Choisissez votre date", + "panel.fields.dateTimeField.time": "Heure :", + + "panel.fields.fieldMessage.required": "Le champ {0} est obligatoire", + + "panel.fields.fileField.delete": "Supprimer le fichier", + "panel.fields.fileField.add": "Ajouter votre {0}", + + "panel.fields.imageFallback.label": "L'image ne peut pas ĂȘtre chargĂ©e", + + "panel.fields.listField.edit": "Modifier l'enregistrement", + "panel.fields.listField.delete": "Supprimer l'enregistrement", + + "panel.fields.previewImage.remove": "Supprimer l'image", + + "panel.fields.previewImageField.add": "Ajouter votre {0}", + + "panel.fields.slugField.update": "Mise Ă  jour disponible", + "panel.fields.slugField.generate": "GĂ©nĂ©rer le slug", + + "panel.fields.textField.ai.message": "Utiliser Front Matter AI pour suggĂ©rer {0}", + "panel.fields.textField.ai.generate": "GĂ©nĂ©ration de la suggestion...", + "panel.fields.textField.loading": "Chargement", + "panel.fields.textField.limit": "Limite de champ atteinte {0}", + + "panel.fields.wrapperField.unknown": "Type de champ inconnu : {0}", + + "panel.actions.title": "Actions", + + "panel.articleDetails.title": "Plus de dĂ©tails", + "panel.articleDetails.type": "Type", + "panel.articleDetails.total": "Total", + "panel.articleDetails.headings": "En-tĂȘtes", + "panel.articleDetails.paragraphs": "Paragraphes", + "panel.articleDetails.internalLinks": "Liens internes", + "panel.articleDetails.externalLinks": "Liens externes", + "panel.articleDetails.images": "Images", + + "panel.baseView.initialize": "Initialiser le projet", + "panel.baseView.actions.title": "Actions", + "panel.baseView.action.openDashboard": "Ouvrir le tableau de bord", + "panel.baseView.action.openPreview": "Ouvrir la prĂ©visualisation", + "panel.baseView.action.createContent": "CrĂ©er le contenu", + "panel.baseView.empty": "Ouvrir un fichier pour afficher plus d'actions", + + "panel.fileList.label.singular": "fichier", + "panel.fileList.label.plural": "fichiers", + + "panel.folderAndFiles.title": "RĂ©cemment modifiĂ©", + + "panel.globalSettings.title": "ParamĂštres globaux", + "panel.globalSettings.action.modifiedDate.label": "Date de modification", + "panel.globalSettings.action.modifiedDate.description": "Mettre Ă  jour automatiquement la date de modification", + "panel.globalSettings.action.frontMatter.label": "Front Matter highlight", + "panel.globalSettings.action.frontMatter.description": "Highlight Front Matter", + "panel.globalSettings.action.preview.label": "PrĂ©visualisation locale", + "panel.globalSettings.action.preview.placeholder": "Exemple : {0}", + "panel.globalSettings.action.server.label": "Commande de server local", + "panel.globalSettings.action.server.placeholder": "Exemple : {0}", + + "panel.metadata.title": "MĂ©tadonnĂ©es", + + "panel.otherActions.title": "Autres actions", + "panel.otherActions.writingSettings.enabled": "ParamĂštres d'Ă©criture activĂ©s", + "panel.otherActions.writingSettings.disabled": "Activer les paramĂštres d'Ă©criture", + "panel.otherActions.centerMode": "Basculer le mode central", + "panel.otherActions.createTemplate": "CrĂ©er modĂšle", + "panel.otherActions.revealFile": "Afficher le fichier dans le dossier", + "panel.otherActions.openProject": "Afficher le dossier du projet", + "panel.otherActions.documentation": "Ouvrir la documentation", + "panel.otherActions.settings": "ParamĂštres globaux", + "panel.otherActions.issue": "Signaler un problĂšme", + + "panel.preview.title": "Ouvrir la prĂ©visualisation", + + "panel.publishAction.publish": "PubliĂ©", + "panel.publishAction.unpublish": "Retourner au brouillon", + + "panel.seoDetails.recommended": "RecommandĂ©", + + "panel.seoKeywordInfo.density": "Utilisation du mot clĂ© {0} *", + "panel.seoKeywordInfo.validInfo.label": "UtilisĂ© dans le ou les en-tĂȘte(s)", + "panel.seoKeywordInfo.validInfo.content": "Contenu", + + "panel.seoKeywords.title": "Mot-clĂ©s", + "panel.seoKeywords.header.keyword": "Mot-clĂ©", + "panel.seoKeywords.header.details": "DĂ©tails", + "panel.seoKeywords.density": "* Une densitĂ© de mot-clĂ© de 1-1.5% est suffisante dans la plupart des cas", + + "panel.seoStatus.title": "Recommandations", + "panel.seoStatus.header.property": "PropriĂ©tĂ©", + "panel.seoStatus.header.length": "Longueur", + "panel.seoStatus.header.valid": "Valide", + "panel.seoStatus.seoFieldInfo.characters": "{0} caractĂšres", + "panel.seoStatus.seoFieldInfo.words": "{0} mots", + "panel.seoStatus.seoFieldInfo.article": "Longueur de l'article", + "panel.seoStatus.collapsible.title": "Statut SEO", + "panel.seoStatus.required": "{0} ou {1} est requis.", + + "panel.slugAction.title": "Optimisation du slug", + + "panel.spinner.loading": "Chargement...", + + "panel.startServerbutton.start": "DĂ©marrer le serveur", + "panel.startServerbutton.stop": "ArrĂȘter le serveur", + + "panel.tag.add": "Ajouter {0} Ă  vos paramĂštres", + + "panel.tagPicker.inputPlaceholder.empty": "Choisissez votre {0}", + "panel.tagPicker.inputPlaceholder.disabled": "Vous avez atteint la limite de {0}", + "panel.tagPicker.ai.suggest": "Utiliser Front Matter AI pour suggĂ©rer {0}", + "panel.tagPicker.ai.generating": "GĂ©nĂ©ration des suggestions...", + "panel.tagPicker.limit": "Max : {0}", + "panel.tagPicker.unkown": "Ajouter le tag non-classĂ©", + + "panel.tags.tag.warning": "Attention, ce tag \"{0}\" n'est pas enregistrĂ© dans vos paramĂštres. Une fois supprimĂ©, il sera dĂ©finitivement supprimĂ©.", + + "panel.viewPanel.mediaInsert": "Continuer dans le tableau de bord des mĂ©dias pour sĂ©lectionner l'image que vous voulez insĂ©rer." + } \ No newline at end of file From 01b45e43b89cfccf49bceba629ea131a973a38e7 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Thu, 31 Aug 2023 17:00:08 +0200 Subject: [PATCH 03/26] 9.2.0 --- package-lock.json | 4 +- package.json | 277 ++++++++++++++++++++++++++-------------------- 2 files changed, 156 insertions(+), 125 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ef9d5c6..fff5056b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-front-matter-beta", - "version": "9.1.0", + "version": "9.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-front-matter-beta", - "version": "9.1.0", + "version": "9.2.0", "license": "MIT", "devDependencies": { "@actions/core": "^1.10.0", diff --git a/package.json b/package.json index 087ca921..eb97a624 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,15 @@ "displayName": "Front Matter CMS", "description": "Front Matter is a CMS that runs within Visual Studio Code. It gives you the power and control of a full-blown CMS while also providing you the flexibility and speed of the static site generator of your choice like: Hugo, Jekyll, Docusaurus, NextJs, Gatsby, and many more...", "icon": "assets/frontmatter-teal-128x128.png", - "version": "9.1.0", + "version": "9.2.0", "preview": false, "publisher": "eliostruyf", "galleryBanner": { "color": "#0e131f", "theme": "dark" }, - "badges": [{ + "badges": [ + { "description": "version", "url": "https://img.shields.io/github/package-json/v/estruyf/vscode-front-matter?color=green&label=vscode-front-matter&style=flat-square", "href": "https://github.com/estruyf/vscode-front-matter" @@ -61,7 +62,8 @@ "**/.frontmatter/config/*.json": "jsonc" } }, - "keybindings": [{ + "keybindings": [ + { "command": "frontMatter.dashboard", "key": "alt+d" }, @@ -79,20 +81,24 @@ } ], "viewsContainers": { - "activitybar": [{ - "id": "frontmatter-explorer", - "title": "Front Matter", - "icon": "assets/frontmatter-short-min.svg" - }] + "activitybar": [ + { + "id": "frontmatter-explorer", + "title": "Front Matter", + "icon": "assets/frontmatter-short-min.svg" + } + ] }, "views": { - "frontmatter-explorer": [{ - "id": "frontMatter.explorer", - "name": "Front Matter", - "icon": "assets/frontmatter-short-min.svg", - "contextualTitle": "Front Matter", - "type": "webview" - }] + "frontmatter-explorer": [ + { + "id": "frontMatter.explorer", + "name": "Front Matter", + "icon": "assets/frontmatter-short-min.svg", + "contextualTitle": "Front Matter", + "type": "webview" + } + ] }, "configuration": { "$id": "#globalconfiguration", @@ -156,7 +162,8 @@ "frontMatter.content.defaultFileType": { "type": "string", "default": "md", - "oneOf": [{ + "oneOf": [ + { "enum": [ "md", "mdx" @@ -172,7 +179,8 @@ "frontMatter.content.defaultSorting": { "type": "string", "default": "", - "oneOf": [{ + "oneOf": [ + { "enum": [ "LastModifiedAsc", "LastModifiedDesc", @@ -519,7 +527,8 @@ "command": { "$id": "#scriptCommand", "type": "string", - "anyOf": [{ + "anyOf": [ + { "enum": [ "node", "bash", @@ -719,7 +728,8 @@ "title", "file" ], - "anyOf": [{ + "anyOf": [ + { "required": [ "schema" ] @@ -773,7 +783,8 @@ "id", "path" ], - "anyOf": [{ + "anyOf": [ + { "required": [ "schema" ] @@ -1141,7 +1152,8 @@ "default": "", "description": "%setting.frontMatter.taxonomy.contentTypes.items.properties.fields.items.properties.taxonomyId.description%", "not": { - "anyOf": [{ + "anyOf": [ + { "const": "" }, { @@ -1330,7 +1342,8 @@ "type", "name" ], - "allOf": [{ + "allOf": [ + { "if": { "properties": { "type": { @@ -1516,48 +1529,51 @@ "fields" ] }, - "default": [{ - "name": "default", - "pageBundle": false, - "fields": [{ - "title": "Title", - "name": "title", - "type": "string" - }, - { - "title": "Description", - "name": "description", - "type": "string" - }, - { - "title": "Publishing date", - "name": "date", - "type": "datetime", - "default": "{{now}}", - "isPublishDate": true - }, - { - "title": "Content preview", - "name": "preview", - "type": "image" - }, - { - "title": "Is in draft", - "name": "draft", - "type": "boolean" - }, - { - "title": "Tags", - "name": "tags", - "type": "tags" - }, - { - "title": "Categories", - "name": "categories", - "type": "categories" - } - ] - }], + "default": [ + { + "name": "default", + "pageBundle": false, + "fields": [ + { + "title": "Title", + "name": "title", + "type": "string" + }, + { + "title": "Description", + "name": "description", + "type": "string" + }, + { + "title": "Publishing date", + "name": "date", + "type": "datetime", + "default": "{{now}}", + "isPublishDate": true + }, + { + "title": "Content preview", + "name": "preview", + "type": "image" + }, + { + "title": "Is in draft", + "name": "draft", + "type": "boolean" + }, + { + "title": "Tags", + "name": "tags", + "type": "tags" + }, + { + "title": "Categories", + "name": "categories", + "type": "categories" + } + ] + } + ], "scope": "Taxonomy" }, "frontMatter.taxonomy.customTaxonomy": { @@ -1570,7 +1586,8 @@ "type": "string", "description": "%setting.frontMatter.taxonomy.customTaxonomy.items.properties.id.description%", "not": { - "anyOf": [{ + "anyOf": [ + { "const": "" }, { @@ -1752,7 +1769,8 @@ } } }, - "commands": [{ + "commands": [ + { "command": "frontMatter.project.switch", "title": "%command.frontMatter.project.switch%", "category": "Front Matter", @@ -2081,12 +2099,15 @@ "category": "Front Matter" } ], - "submenus": [{ - "id": "frontmatter.submenu", - "label": "Front Matter" - }], + "submenus": [ + { + "id": "frontmatter.submenu", + "label": "Front Matter" + } + ], "menus": { - "editor/title": [{ + "editor/title": [ + { "command": "frontMatter.markup.heading", "group": "navigation@-133", "when": "frontMatter:file:isValid == true && frontMatter:markdown:wysiwyg" @@ -2167,11 +2188,14 @@ "when": "resourceFilename == 'frontmatter.json'" } ], - "explorer/context": [{ - "submenu": "frontmatter.submenu", - "group": "frontmatter@1" - }], - "frontmatter.submenu": [{ + "explorer/context": [ + { + "submenu": "frontmatter.submenu", + "group": "frontmatter@1" + } + ], + "frontmatter.submenu": [ + { "command": "frontMatter.createFromTemplate", "when": "explorerResourceIsFolder", "group": "frontmatter@1" @@ -2187,7 +2211,8 @@ "group": "frontmatter@3" } ], - "commandPalette": [{ + "commandPalette": [ + { "command": "frontMatter.init", "when": "frontMatterCanInit" }, @@ -2332,7 +2357,8 @@ "when": "frontMatter:file:isValid == true" } ], - "view/title": [{ + "view/title": [ + { "command": "frontMatter.chatbot", "group": "navigation@0", "when": "view == frontMatter.explorer" @@ -2359,52 +2385,57 @@ } ] }, - "grammars": [{ - "path": "./syntaxes/hugo.tmLanguage.json", - "scopeName": "frontmatter.markdown.hugo", - "injectTo": [ - "text.html.markdown" - ] - }], - "walkthroughs": [{ - "id": "frontmatter.welcome", - "title": "Get started with Front Matter", - "description": "Discover the features of Front Matter and learn how to use the CMS for your SSG or static site.", - "steps": [{ - "id": "frontmatter.welcome.init", - "title": "Get started", - "description": "Initial steps to get started.\n[Open dashboard](command:frontMatter.dashboard)", - "media": { - "markdown": "assets/walkthrough/get-started.md" - }, - "completionEvents": [ - "onContext:frontMatterInitialized" - ] - }, - { - "id": "frontmatter.welcome.documentation", - "title": "Documentation", - "description": "Check out the documentation for Front Matter.\n[View our documentation](https://frontmatter.codes/docs)", - "media": { - "markdown": "assets/walkthrough/documentation.md" + "grammars": [ + { + "path": "./syntaxes/hugo.tmLanguage.json", + "scopeName": "frontmatter.markdown.hugo", + "injectTo": [ + "text.html.markdown" + ] + } + ], + "walkthroughs": [ + { + "id": "frontmatter.welcome", + "title": "Get started with Front Matter", + "description": "Discover the features of Front Matter and learn how to use the CMS for your SSG or static site.", + "steps": [ + { + "id": "frontmatter.welcome.init", + "title": "Get started", + "description": "Initial steps to get started.\n[Open dashboard](command:frontMatter.dashboard)", + "media": { + "markdown": "assets/walkthrough/get-started.md" + }, + "completionEvents": [ + "onContext:frontMatterInitialized" + ] }, - "completionEvents": [ - "onLink:https://frontmatter.codes/docs" - ] - }, - { - "id": "frontmatter.welcome.supporter", - "title": "Support the project", - "description": "Become a supporter.\n[Support the project](https://github.com/sponsors/estruyf)", - "media": { - "markdown": "assets/walkthrough/support-the-project.md" + { + "id": "frontmatter.welcome.documentation", + "title": "Documentation", + "description": "Check out the documentation for Front Matter.\n[View our documentation](https://frontmatter.codes/docs)", + "media": { + "markdown": "assets/walkthrough/documentation.md" + }, + "completionEvents": [ + "onLink:https://frontmatter.codes/docs" + ] }, - "completionEvents": [ - "onLink:https://github.com/sponsors/estruyf" - ] - } - ] - }] + { + "id": "frontmatter.welcome.supporter", + "title": "Support the project", + "description": "Become a supporter.\n[Support the project](https://github.com/sponsors/estruyf)", + "media": { + "markdown": "assets/walkthrough/support-the-project.md" + }, + "completionEvents": [ + "onLink:https://github.com/sponsors/estruyf" + ] + } + ] + } + ] }, "scripts": { "dev:ext": "npm run clean && npm run localization:generate && npm-run-all --parallel watch:*", @@ -2538,4 +2569,4 @@ "vsce": { "dependencies": false } -} \ No newline at end of file +} From f93b6bae3e256eb801c93b9551d508d69a55450c Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Mon, 4 Sep 2023 16:55:25 +0200 Subject: [PATCH 04/26] Updated changelog --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23807cd3..2262b7ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Change Log +## [9.2.0] - 2023-xx-xx + +### ✹ New features + +- [#645](https://github.com/estruyf/vscode-front-matter/issues/645): French localization added (thanks to [ClĂ©ment Barbaza](https://github.com/cba85)) + +### 🎹 Enhancements + +### âšĄïž Optimizations + +### 🐞 Fixes + ## [9.1.0] - 2023-08-31 ### ✹ New features From c6cfc02e5d9b7b495021bb721d866a35a2c3a749 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Mon, 4 Sep 2023 16:56:45 +0200 Subject: [PATCH 05/26] #646 - Update Astro port --- CHANGELOG.md | 2 ++ src/constants/FrameworkDetectors.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2262b7ca..daf9ced1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ ### 🐞 Fixes +- [#646](https://github.com/estruyf/vscode-front-matter/issues/646): Update the Astro `3000` port to `4321` + ## [9.1.0] - 2023-08-31 ### ✹ New features diff --git a/src/constants/FrameworkDetectors.ts b/src/constants/FrameworkDetectors.ts index b8913e30..7bc87a3a 100644 --- a/src/constants/FrameworkDetectors.ts +++ b/src/constants/FrameworkDetectors.ts @@ -5,7 +5,7 @@ export const FrameworkDetectors = [ dist: 'dist', static: ['public', 'src/assets'], build: 'npm run build', - server: 'http://localhost:3000' + server: 'http://localhost:4321' }, requiredFiles: ['astro.config.mjs'], requiredDependencies: ['astro'], From ab3988e253d2c69a37cef47f75acd18035536c27 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Mon, 4 Sep 2023 17:18:18 +0200 Subject: [PATCH 06/26] #647 - Fix open in browser --- CHANGELOG.md | 1 + src/commands/Preview.ts | 24 +++++-- .../components/Preview/Preview.tsx | 68 +++++++++++-------- 3 files changed, 62 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index daf9ced1..b68ef32e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ ### 🐞 Fixes - [#646](https://github.com/estruyf/vscode-front-matter/issues/646): Update the Astro `3000` port to `4321` +- [#647](https://github.com/estruyf/vscode-front-matter/issues/647): Fix the open in browser action on the preview ## [9.1.0] - 2023-08-31 diff --git a/src/commands/Preview.ts b/src/commands/Preview.ts index 59053fa7..1016e46f 100644 --- a/src/commands/Preview.ts +++ b/src/commands/Preview.ts @@ -8,7 +8,8 @@ import { TelemetryEvent, PreviewCommands, SETTING_EXPERIMENTAL, - SETTING_DATE_FORMAT + SETTING_DATE_FORMAT, + GeneralCommands } from './../constants'; import { ArticleHelper } from './../helpers/ArticleHelper'; import { join, parse } from 'path'; @@ -23,6 +24,7 @@ import { WebviewHelper } from '@estruyf/vscode'; import { Folders } from './Folders'; import { DataListener } from '../listeners/panel'; import { ParsedFrontMatter } from '../parsers'; +import { getLocalizationFile } from '../utils/getLocalizationFile'; export class Preview { public static filePath: string | undefined = undefined; @@ -103,13 +105,27 @@ export class Preview { } }); - webView.webview.onDidReceiveMessage((message) => { + webView.webview.onDidReceiveMessage(async (message) => { switch (message.command) { case PreviewCommands.toVSCode.open: - if (message.data) { - commands.executeCommand('vscode.open', message.data); + if (message.payload) { + commands.executeCommand('vscode.open', message.payload); } return; + case GeneralCommands.toVSCode.getLocalization: + const { requestId } = message; + if (!requestId) { + return; + } + + const fileContents = await getLocalizationFile(); + + webView.webview.postMessage({ + command: GeneralCommands.toVSCode.getLocalization, + requestId, + payload: fileContents + }); + return; } }); diff --git a/src/dashboardWebView/components/Preview/Preview.tsx b/src/dashboardWebView/components/Preview/Preview.tsx index 7805c08d..44451983 100644 --- a/src/dashboardWebView/components/Preview/Preview.tsx +++ b/src/dashboardWebView/components/Preview/Preview.tsx @@ -1,8 +1,8 @@ -import { Messenger } from '@estruyf/vscode/dist/client'; +import { Messenger, messageHandler } from '@estruyf/vscode/dist/client'; import { ArrowRightIcon, ExternalLinkIcon, RefreshIcon } from '@heroicons/react/outline'; import * as React from 'react'; import { useEffect, useRef, useState } from 'react'; -import { PreviewCommands } from '../../../constants'; +import { GeneralCommands, PreviewCommands } from '../../../constants'; import useThemeColors from '../../hooks/useThemeColors'; import { EventData } from '@estruyf/vscode/dist/models'; import * as l10n from '@vscode/l10n'; @@ -18,6 +18,7 @@ export const Preview: React.FunctionComponent = ({ const iframeRef = useRef(null); const [crntUrl, setCrntUrl] = useState(null); const { getColors } = useThemeColors(); + const [localeReady, setLocaleReady] = useState(false); const onRefresh = () => { if (iframeRef.current?.src) { @@ -51,6 +52,15 @@ export const Preview: React.FunctionComponent = ({ useEffect(() => { Messenger.listen(msgListener); + messageHandler.request(GeneralCommands.toVSCode.getLocalization).then((data) => { + if (data) { + l10n.config({ + contents: data + }); + } + setLocaleReady(true); + }); + return () => { Messenger.unlisten(msgListener); }; @@ -74,31 +84,35 @@ export const Preview: React.FunctionComponent = ({ className="w-full m-[1px] h-full border-1 border-transparent text-xs py-1 px-2 focus:border-color-blue-500 bg-[var(--vscode-tab-activeBackground)] text-[var(--vscode-tab-inactiveForeground)] hover:text-[var(--vscode-tab-activeForeground)] focus:text-[var(--vscode-tab-activeForeground)] placeholder-[var(--vscode-input-placeholderForeground)] focus:outline-[var(--vscode-focusBorder)] focus:outline-1 focus:outline-offset-0 focus:shadow-none focus:border-[var(--vscode-focusBorder)" /> -
- - - - - -
+ { + localeReady && ( +
+ + + + + +
+ ) + }