mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-03-14 13:11:10 -05:00
refactor(ui): locales system improvements
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"eslint": {
|
||||
"config": {
|
||||
"eslint": {
|
||||
"description": "Error checking & Code quality",
|
||||
"groups": {
|
||||
"strongly-recommended": "Strongly recommended",
|
||||
"recommended": "Recommended"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"eslint": {
|
||||
"config": {
|
||||
"eslint": {
|
||||
"description": "Vérification des erreurs & Qualité du code",
|
||||
"groups": {
|
||||
"strongly-recommended": "Fortement recommandé",
|
||||
"recommended": "Recommandé"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"vue-webpack": {
|
||||
"dashboard": {
|
||||
"title": "Dashboard"
|
||||
},
|
||||
"analyzer": {
|
||||
"title": "Analyzer"
|
||||
},
|
||||
"tasks": {
|
||||
"serve": {
|
||||
"description": "Compiles and hot-reloads for development"
|
||||
},
|
||||
"build": {
|
||||
"description": "Compiles and minifies for production"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"vue-webpack": {
|
||||
"dashboard": {
|
||||
"title": "Tableau de bord"
|
||||
},
|
||||
"analyzer": {
|
||||
"title": "Analyseur"
|
||||
},
|
||||
"tasks": {
|
||||
"serve": {
|
||||
"description": "Compile et recharge à chaud pour le développement"
|
||||
},
|
||||
"build": {
|
||||
"description": "Compile et minifie pour la production"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="test-view">
|
||||
<h1>I'm a custom view</h1>
|
||||
<h1>{{ $t('vue-webpack.test-view') }}</h1>
|
||||
<p>A vue-cli plugin created me! I am a dynamically loaded component paired with a custom route.</p>
|
||||
<div>
|
||||
<VueButton @click="testPluginAction()">Test plugin action</VueButton>
|
||||
|
||||
@@ -1,45 +1,5 @@
|
||||
{
|
||||
"vue-webpack": {
|
||||
"dashboard": {
|
||||
"open-app": "Open app",
|
||||
"webpack-status": {
|
||||
"Success": "Success",
|
||||
"Failed": "Failed",
|
||||
"Compiling": "Compiling",
|
||||
"Invalidated": "Invalidated",
|
||||
"Idle": "Idle"
|
||||
},
|
||||
"build-status": {
|
||||
"labels": {
|
||||
"status": "Status",
|
||||
"errors": "Errors",
|
||||
"warnings": "Warnings",
|
||||
"assets": "Assets",
|
||||
"modules": "Modules",
|
||||
"deps": "Dependencies"
|
||||
}
|
||||
},
|
||||
"speed-stats": {
|
||||
"title": "Speed stats"
|
||||
},
|
||||
"module-list": {
|
||||
"title": "Dependencies"
|
||||
},
|
||||
"asset-list": {
|
||||
"title": "Assets",
|
||||
"size-warning": "This asset is big, consider using Code splitting to create smaller assets."
|
||||
}
|
||||
},
|
||||
"analyzer": {
|
||||
"go-up": "Go up",
|
||||
"go-home": "Go to home",
|
||||
"chunk": "Chunk"
|
||||
},
|
||||
"sizes": {
|
||||
"stats": "Stats",
|
||||
"parsed": "Parsed",
|
||||
"gzip": "Gzip",
|
||||
"help": "<b>Stats:</b> size from webpack stats data.<br><b>Parsed:</b> size from extracted source (after minification plugins). More accurate.<br><b>Gzip:</b> size of gzipped extracted source."
|
||||
}
|
||||
"test-view": "I'm a custom view"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
{
|
||||
"vue-webpack": {
|
||||
"dashboard": {
|
||||
"open-app": "Ouvrir l'app",
|
||||
"webpack-status": {
|
||||
"Success": "Succès",
|
||||
"Failed": "Echec",
|
||||
"Compiling": "Compilation...",
|
||||
"Invalidated": "Invalidé",
|
||||
"Idle": "Inoccupé"
|
||||
},
|
||||
"build-status": {
|
||||
"labels": {
|
||||
"status": "Statut",
|
||||
"errors": "Erreurs",
|
||||
"warnings": "Avertissements",
|
||||
"assets": "Fichiers",
|
||||
"modules": "Modules",
|
||||
"deps": "Dépendances"
|
||||
}
|
||||
},
|
||||
"speed-stats": {
|
||||
"title": "Statistiques de vitesse"
|
||||
},
|
||||
"module-list": {
|
||||
"title": "Dépendances"
|
||||
},
|
||||
"asset-list": {
|
||||
"title": "Fichiers",
|
||||
"size-warning": "Ce fichier est volumineux, vous pouvez réduire sa taille avec le Code-splitting"
|
||||
}
|
||||
},
|
||||
"analyzer": {
|
||||
"go-up": "Aller au parent",
|
||||
"go-home": "Aller à la racine",
|
||||
"chunk": "Chunk"
|
||||
},
|
||||
"sizes": {
|
||||
"stats": "Stats",
|
||||
"parsed": "Parsé",
|
||||
"gzip": "Gzip",
|
||||
"help": "<b>Stats:</b> taille depuis les données statistiques de webpack.<br><b>Parsé:</b> taille depuis les sources extraites (après les plugins de minifications). Plus précis.<br><b>Gzip:</b> taille en source extraites compressée."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
<template>
|
||||
<div id="app" class="app">
|
||||
<div class="content">
|
||||
<div v-if="ready" class="content">
|
||||
<router-view/>
|
||||
</div>
|
||||
<VueLoadingIndicator v-else class="overlay big accent"/>
|
||||
|
||||
<StatusBar/>
|
||||
<ClientAddonLoader/>
|
||||
@@ -11,9 +12,17 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import i18n from './i18n'
|
||||
|
||||
export default {
|
||||
metaInfo: {
|
||||
titleTemplate: chunk => chunk ? `[Beta] ${chunk} - Vue CLI` : '[Beta] Vue CLI'
|
||||
},
|
||||
|
||||
computed: {
|
||||
ready () {
|
||||
return Object.keys(i18n.getLocaleMessage('en')).length
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<ListItemInfo
|
||||
:name="task.name"
|
||||
:description="(task.status === 'idle' && task.description) || status"
|
||||
:description="(task.status === 'idle' && $t(task.description)) || status"
|
||||
:selected="selected"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const globby = require('globby')
|
||||
// Connectors
|
||||
const cwd = require('./cwd')
|
||||
// Subs
|
||||
const channels = require('../channels')
|
||||
// Context
|
||||
const getContext = require('../context')
|
||||
// Utils
|
||||
const { resolveModule } = require('@vue/cli/lib/util/module')
|
||||
const { resolveModuleRoot } = require('../utils/resolve-path')
|
||||
|
||||
let locales = []
|
||||
let locales
|
||||
|
||||
function list (context) {
|
||||
return locales
|
||||
@@ -15,12 +25,29 @@ function add ({ lang, strings }, context) {
|
||||
})
|
||||
}
|
||||
|
||||
function clear (context) {
|
||||
function reset (context) {
|
||||
locales = []
|
||||
// Load builtin locales
|
||||
const modulePath = resolveModule('@vue/cli/bin/vue', cwd.get())
|
||||
const folder = resolveModuleRoot(modulePath, '@vue/cli')
|
||||
loadFolder(folder, context)
|
||||
}
|
||||
|
||||
function loadFolder (root, context) {
|
||||
const paths = globby.sync([path.join(root, './locales/*.json')])
|
||||
paths.forEach(file => {
|
||||
const basename = path.basename(file)
|
||||
const lang = basename.substr(0, basename.indexOf('.'))
|
||||
const strings = JSON.parse(fs.readFileSync(file, { encoding: 'utf8' }))
|
||||
add({ lang, strings }, context)
|
||||
})
|
||||
}
|
||||
|
||||
reset(getContext())
|
||||
|
||||
module.exports = {
|
||||
list,
|
||||
add,
|
||||
clear
|
||||
reset,
|
||||
loadFolder
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ const {
|
||||
} = require('@vue/cli/lib/util/installDeps')
|
||||
const invoke = require('@vue/cli/lib/invoke')
|
||||
const notifier = require('node-notifier')
|
||||
const globby = require('globby')
|
||||
// Subs
|
||||
const channels = require('../channels')
|
||||
// Connectors
|
||||
@@ -127,13 +126,7 @@ function runPluginApi (id, context, fileName = 'ui') {
|
||||
// Locales
|
||||
try {
|
||||
const folder = fs.existsSync(id) ? id : getPath(id)
|
||||
const paths = globby.sync([path.join(folder, './locales/*.json')])
|
||||
paths.forEach(file => {
|
||||
const basename = path.basename(file)
|
||||
const lang = basename.substr(0, basename.indexOf('.'))
|
||||
const strings = JSON.parse(fs.readFileSync(file, { encoding: 'utf8' }))
|
||||
locales.add({ lang, strings }, context)
|
||||
})
|
||||
locales.loadFolder(folder, context)
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
|
||||
@@ -318,7 +318,7 @@ async function open (id, context) {
|
||||
currentProject = project
|
||||
cwd.set(project.path, context)
|
||||
// Reset locales
|
||||
locales.clear()
|
||||
locales.reset(context)
|
||||
// Load plugins
|
||||
plugins.list(project.path, context)
|
||||
|
||||
|
||||
@@ -4,16 +4,6 @@ import deepmerge from 'deepmerge'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
function loadLocaleMessages () {
|
||||
const locales = require.context('./locales', true, /[a-z0-9]+\.json$/i)
|
||||
const messages = {}
|
||||
locales.keys().forEach(key => {
|
||||
const locale = key.match(/([a-z0-9]+)\./i)[1]
|
||||
messages[locale] = locales(key)
|
||||
})
|
||||
return messages
|
||||
}
|
||||
|
||||
function detectLanguage () {
|
||||
try {
|
||||
const lang = (window.navigator.languages && window.navigator.languages[0]) ||
|
||||
@@ -25,12 +15,40 @@ function detectLanguage () {
|
||||
}
|
||||
}
|
||||
|
||||
async function autoInstallLocale (lang) {
|
||||
try {
|
||||
let response = await fetch(`https://unpkg.com/vue-cli-locale-${lang}`)
|
||||
if (response.ok) {
|
||||
// Redirect
|
||||
const location = response.headers.get('location')
|
||||
if (location) {
|
||||
response = await fetch(`https://unpkg.com${location}`)
|
||||
}
|
||||
const data = await response.json()
|
||||
mergeLocale(lang, data)
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
async function autoDetect () {
|
||||
const lang = detectLanguage()
|
||||
if (lang !== 'en') {
|
||||
await autoInstallLocale(lang)
|
||||
i18n.locale = lang
|
||||
}
|
||||
}
|
||||
|
||||
const i18n = new VueI18n({
|
||||
locale: detectLanguage() || 'en',
|
||||
locale: 'en',
|
||||
fallbackLocale: 'en',
|
||||
messages: loadLocaleMessages()
|
||||
messages: {
|
||||
en: {}
|
||||
},
|
||||
silentTranslationWarn: process.env.NODE_ENV !== 'production'
|
||||
})
|
||||
|
||||
autoDetect()
|
||||
|
||||
export function mergeLocale (lang, messages) {
|
||||
const newData = deepmerge(i18n.getLocaleMessage(lang), messages)
|
||||
i18n.setLocaleMessage(lang, newData)
|
||||
|
||||
@@ -1,308 +0,0 @@
|
||||
{
|
||||
"components": {
|
||||
"file-diff": {
|
||||
"binary": "Fichier binaire non affiché",
|
||||
"actions": {
|
||||
"open": "Ouvrir dans l'éditeur"
|
||||
}
|
||||
},
|
||||
"file-diff-view": {
|
||||
"files-changed": "Fichiers modifiés",
|
||||
"search-file": "Rechercher un fichier",
|
||||
"empty": "Aucune modification trouvée",
|
||||
"modals": {
|
||||
"commit": {
|
||||
"title": "Valider les modifications",
|
||||
"input": "Entrer un message pour le commit",
|
||||
"subtitle": "Enregistre les changements effectués au dépôt",
|
||||
"actions": {
|
||||
"commit": "Commit",
|
||||
"cancel": "Annuler"
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"collapse-all": "Tout replier",
|
||||
"expand-all": "Tout étendre",
|
||||
"commit": "Valider les modifications",
|
||||
"skip": "Passer",
|
||||
"continue": "Continuer",
|
||||
"refresh": "Rafraîchir"
|
||||
}
|
||||
},
|
||||
"folder-explorer": {
|
||||
"toolbar": {
|
||||
"tooltips": {
|
||||
"parent-folder": "Ouvrir le dossier parent",
|
||||
"edit-path": "Modifier le chemin",
|
||||
"favorite": "Ajouter/Retirer des favoris",
|
||||
"favorite-folders": "Dossiers favoris",
|
||||
"refresh": "Rafraichir"
|
||||
},
|
||||
"placeholder": "Entrer le chemin complet d'un dossier",
|
||||
"empty": "Aucun dossier favoris."
|
||||
}
|
||||
},
|
||||
"list-item-info": {
|
||||
"more-info": "Plus d'infos"
|
||||
},
|
||||
"logger-view": {
|
||||
"title": "Journal",
|
||||
"empty": "Aucune entrée du journal",
|
||||
"buttons": {
|
||||
"clear": "Nettoyer le journal",
|
||||
"scroll": "Défiler en bas",
|
||||
"close": "Fermer"
|
||||
}
|
||||
},
|
||||
"progress-screen": {
|
||||
"close": "Fermer"
|
||||
},
|
||||
"project-nav": {
|
||||
"tooltips": {
|
||||
"plugins": "Plugins",
|
||||
"configuration": "Configuration",
|
||||
"tasks": "Tâches",
|
||||
"more": "Plus"
|
||||
}
|
||||
},
|
||||
"project-select-list": {
|
||||
"empty": "Aucun projet",
|
||||
"titles": {
|
||||
"favorite": "Projets favoris",
|
||||
"other": "Autres projets"
|
||||
}
|
||||
},
|
||||
"project-select-list-item": {
|
||||
"tooltips": {
|
||||
"favorite": "Ajouter/Retirer des favoris",
|
||||
"delete": "Supprimer"
|
||||
}
|
||||
},
|
||||
"project-plugin-item": {
|
||||
"version": "version",
|
||||
"latest": "dernière version",
|
||||
"official": "Officiel",
|
||||
"installed": "Installé",
|
||||
"actions": {
|
||||
"update": "Mettre à jour {target}"
|
||||
}
|
||||
},
|
||||
"prompt-list": {
|
||||
"default": "Par défaut"
|
||||
},
|
||||
"prompts-list": {
|
||||
"empty": "Pas de configuration"
|
||||
},
|
||||
"status-bar": {
|
||||
"project": {
|
||||
"tooltip": "Project actuel<br><i>Cliquer pour afficher le Gestionnaire de Projets</i>",
|
||||
"empty": "Aucun projet ouvert"
|
||||
},
|
||||
"path": {
|
||||
"tooltip": "Dossier de travail actuel"
|
||||
},
|
||||
"log": {
|
||||
"tooltip": "Journal<br><i>Cliquer pour Afficher/Masquer le Journal Vue CLI</i>",
|
||||
"empty": "Aucune entrée dans le journal"
|
||||
},
|
||||
"report-bug": "Signaler bug"
|
||||
},
|
||||
"terminal-view": {
|
||||
"buttons": {
|
||||
"clear": "Nettoyer la console",
|
||||
"scroll": "Défiler en bas"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mixins": {
|
||||
"progress": {
|
||||
"creating": "Création du projet...",
|
||||
"git-init": "Initialisation du dépôt git...",
|
||||
"plugins-install": "Installation des plugins Vue CLI. Ceci peut prendre un certain temps...",
|
||||
"invoking-generators": "Invocation des générateurs...",
|
||||
"deps-install": "Installation des dépendances additionnelles...",
|
||||
"completion-hooks": "Lancement des hooks de fin...",
|
||||
"fetch-remote-preset": "Téléchargement du preset distant...",
|
||||
"done": "Projet créé avec succès",
|
||||
"plugin-install": "Installation de {arg0}...",
|
||||
"plugin-uninstall": "Désinstallation de {arg0}...",
|
||||
"plugin-invoke": "Invocation de {arg0}...",
|
||||
"plugin-update": "Mise à jour de {arg0}..."
|
||||
}
|
||||
},
|
||||
"types": {
|
||||
"task": {
|
||||
"status": {
|
||||
"idle": "A l'arrêt",
|
||||
"running": "En cours",
|
||||
"done": "Terminée",
|
||||
"error": "Erreur",
|
||||
"terminated": "Interrompue"
|
||||
}
|
||||
}
|
||||
},
|
||||
"views": {
|
||||
"project-select": {
|
||||
"title": "Gestion des Projets Vue",
|
||||
"tabs": {
|
||||
"projects": "Projets",
|
||||
"create": "Créer",
|
||||
"import": "Importer"
|
||||
},
|
||||
"buttons": {
|
||||
"create": "Créer un nouveau projet ici",
|
||||
"import": "Importer ce dossier"
|
||||
}
|
||||
},
|
||||
"project-create": {
|
||||
"title": "Créer un nouveau projet",
|
||||
"tabs": {
|
||||
"details": {
|
||||
"title": "Détails",
|
||||
"form": {
|
||||
"folder": {
|
||||
"label": "Dossier du projet",
|
||||
"placeholder": "mon-app",
|
||||
"tooltip": "Modifier le dossier cible",
|
||||
"action": "Sélectionner ce dossier"
|
||||
},
|
||||
"manager": {
|
||||
"label": "Gestionnaire de paquets",
|
||||
"default": "Par défaut"
|
||||
},
|
||||
"options": {
|
||||
"label": "Options additionnelles",
|
||||
"description": "Ecraser le dossier s'il existe"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"cancel": "Annuler",
|
||||
"next": "Suivant"
|
||||
},
|
||||
"modal": {
|
||||
"title": "Annuler et réintialiser la création de projet",
|
||||
"body": "Êtes-vous sûr de vouloir réinitialiser la création de projet?",
|
||||
"buttons": {
|
||||
"back": "Revenir en arrière",
|
||||
"clear": "Supprimer le projet"
|
||||
}
|
||||
}
|
||||
},
|
||||
"presets": {
|
||||
"title": "Presets",
|
||||
"description": "Un preset est un ensemble de plugins et de configurations prédéfins. Après avoir sélectionné des fonctionnalités, vous pouves sauvegarder la sélection actuelle dans un nouveau preset que vous pourrez réutiliser pour de futurs projets, sans avoir à tout reconfigurer à nouveau.",
|
||||
"select": "Sélectionner un preset",
|
||||
"buttons": {
|
||||
"previous": "Précédent",
|
||||
"next": "Suivant",
|
||||
"create": "Créer le projet"
|
||||
},
|
||||
"modal": {
|
||||
"title": "Configurer le preset distant",
|
||||
"body": "Bientôt disponible..."
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"title": "Fonctionnalités",
|
||||
"description": "Vous pourrez ajouter des fonctionnalités après la création du projet en installant des plugins.",
|
||||
"enable": "Activer des fonctionnalités",
|
||||
"buttons": {
|
||||
"previous": "Précédent",
|
||||
"next": "Suivant",
|
||||
"create": "Créer le projet"
|
||||
}
|
||||
},
|
||||
"configuration": {
|
||||
"title": "Configuration",
|
||||
"buttons": {
|
||||
"previous": "Précédent",
|
||||
"create": "Créer le projet"
|
||||
},
|
||||
"modal": {
|
||||
"title": "Sauvegarder dans un nouveau preset",
|
||||
"body": {
|
||||
"title": "Nom du preset",
|
||||
"subtitle": "Sauvegarder les fonctionnalités et configurations dans un nouveau preset"
|
||||
},
|
||||
"buttons": {
|
||||
"cancel": "Annuler",
|
||||
"continue": "Continuer sans sauvegarder",
|
||||
"create": "Créer un nouveau preset"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"project-plugins": {
|
||||
"title": "Plugins du projet",
|
||||
"button": "Ajouter un plugin",
|
||||
"heading": "Plugins installés"
|
||||
},
|
||||
"project-plugins-add": {
|
||||
"title": "Ajouter un plugin",
|
||||
"plugin": "un plugin",
|
||||
"tabs": {
|
||||
"search": {
|
||||
"label": "Recherche",
|
||||
"search-input": "Rechercher un plugin",
|
||||
"not-found": "Aucun résultat trouvé",
|
||||
"buttons": {
|
||||
"cancel": "Annuler",
|
||||
"install": "Installer {target}"
|
||||
}
|
||||
},
|
||||
"configuration": {
|
||||
"label": "Configuration",
|
||||
"heading": "Installation de {target}",
|
||||
"buttons": {
|
||||
"cancel": "Annuler",
|
||||
"finish": "Terminer l'installation"
|
||||
}
|
||||
},
|
||||
"diff": {
|
||||
"label": "Fichers modifiés"
|
||||
}
|
||||
},
|
||||
"modal": {
|
||||
"title": "Désinstaller {target}?",
|
||||
"body": "Voulez-vous désinstaller le plugin {target}?",
|
||||
"buttons": {
|
||||
"back": "Revenir en arrière",
|
||||
"cancel": "Annuler sans désinstaller",
|
||||
"uninstall": "Désinstaller"
|
||||
}
|
||||
}
|
||||
},
|
||||
"project-configurations": {
|
||||
"title": "Configuration du projet"
|
||||
},
|
||||
"project-configuration-details": {
|
||||
"actions": {
|
||||
"cancel": "Annuler les changements",
|
||||
"save": "Sauvegarder les modifications"
|
||||
}
|
||||
},
|
||||
"project-tasks": {
|
||||
"title": "Tâches du projet"
|
||||
},
|
||||
"project-task-details": {
|
||||
"actions": {
|
||||
"play": "Lancer la tâche",
|
||||
"stop": "Arrêter la tâche",
|
||||
"close": "Fermer"
|
||||
},
|
||||
"command": "Commande de script",
|
||||
"parameters": "Paramètres",
|
||||
"more-info": "Plus d'infos",
|
||||
"output": "Sortie"
|
||||
},
|
||||
"about": {
|
||||
"title": "A propos",
|
||||
"description": "<a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-ui\" target=\"_blank\">@vue/cli-ui</a> est un paquet inclus dans @vue/cli qui affiche une interface graphique.",
|
||||
"quote": "Vue-cli 3.x is a complete rewrite, with a lot of new awesome features. You will be to select features like routing, Vuex or Typescript, then add and upgrade building blocks called \"vue-cli plugins\". But having so much more options also means the tool is now more complex and harder to start using. That's why we thought having a full-blown GUI would help discover the new features, search and install vue-cli plugins and unlock more possibilities overall while not being limited by a terminal interface. To sum up, vue-cli will not only allow you to bootstrap a new project easily, but it will also remain useful for ongoing work afterwards!",
|
||||
"links": "Liens utiles",
|
||||
"back": "Retour"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -313,5 +313,69 @@
|
||||
"links": "Useful links",
|
||||
"back": "Go back"
|
||||
}
|
||||
},
|
||||
"vue-webpack": {
|
||||
"dashboard": {
|
||||
"title": "Dashboard",
|
||||
"open-app": "Open app",
|
||||
"webpack-status": {
|
||||
"Success": "Success",
|
||||
"Failed": "Failed",
|
||||
"Compiling": "Compiling",
|
||||
"Invalidated": "Invalidated",
|
||||
"Idle": "Idle"
|
||||
},
|
||||
"build-status": {
|
||||
"labels": {
|
||||
"status": "Status",
|
||||
"errors": "Errors",
|
||||
"warnings": "Warnings",
|
||||
"assets": "Assets",
|
||||
"modules": "Modules",
|
||||
"deps": "Dependencies"
|
||||
}
|
||||
},
|
||||
"speed-stats": {
|
||||
"title": "Speed stats"
|
||||
},
|
||||
"module-list": {
|
||||
"title": "Dependencies"
|
||||
},
|
||||
"asset-list": {
|
||||
"title": "Assets",
|
||||
"size-warning": "This asset is big, consider using Code splitting to create smaller assets."
|
||||
}
|
||||
},
|
||||
"analyzer": {
|
||||
"title": "Analyzer",
|
||||
"go-up": "Go up",
|
||||
"go-home": "Go to home",
|
||||
"chunk": "Chunk"
|
||||
},
|
||||
"sizes": {
|
||||
"stats": "Stats",
|
||||
"parsed": "Parsed",
|
||||
"gzip": "Gzip",
|
||||
"help": "<b>Stats:</b> size from webpack stats data.<br><b>Parsed:</b> size from extracted source (after minification plugins). More accurate.<br><b>Gzip:</b> size of gzipped extracted source."
|
||||
},
|
||||
"tasks": {
|
||||
"serve": {
|
||||
"description": "Compiles and hot-reloads for development"
|
||||
},
|
||||
"build": {
|
||||
"description": "Compiles and minifies for production"
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint": {
|
||||
"config": {
|
||||
"eslint": {
|
||||
"description": "Error checking & Code quality",
|
||||
"groups": {
|
||||
"strongly-recommended": "Strongly recommended",
|
||||
"recommended": "Recommended"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user