feature: support Spanish(#1196)
This commit is contained in:
parent
3802f6f8d2
commit
0f7cf7e820
|
@ -6,6 +6,7 @@
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-item :disabled="language==='zh'" command="zh">中文</el-dropdown-item>
|
<el-dropdown-item :disabled="language==='zh'" command="zh">中文</el-dropdown-item>
|
||||||
<el-dropdown-item :disabled="language==='en'" command="en">English</el-dropdown-item>
|
<el-dropdown-item :disabled="language==='en'" command="en">English</el-dropdown-item>
|
||||||
|
<el-dropdown-item :disabled="language==='es'" command="es">Español</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -0,0 +1,155 @@
|
||||||
|
export default {
|
||||||
|
route: {
|
||||||
|
dashboard: 'Panel de control',
|
||||||
|
introduction: 'Introducción',
|
||||||
|
documentation: 'Documentación',
|
||||||
|
guide: 'Guía',
|
||||||
|
permission: 'Permisos',
|
||||||
|
pagePermission: 'Permisos de la página',
|
||||||
|
directivePermission: 'Permisos de la directiva',
|
||||||
|
icons: 'Iconos',
|
||||||
|
components: 'Componentes',
|
||||||
|
componentIndex: 'Introducción',
|
||||||
|
tinymce: 'Tinymce',
|
||||||
|
markdown: 'Markdown',
|
||||||
|
jsonEditor: 'Editor JSON',
|
||||||
|
dndList: 'Lista Dnd',
|
||||||
|
splitPane: 'Panel dividido',
|
||||||
|
avatarUpload: 'Subir avatar',
|
||||||
|
dropzone: 'Subir ficheros',
|
||||||
|
sticky: 'Sticky',
|
||||||
|
countTo: 'CountTo',
|
||||||
|
componentMixin: 'Mixin',
|
||||||
|
backToTop: 'Ir arriba',
|
||||||
|
dragDialog: 'Drag Dialog',
|
||||||
|
dragKanban: 'Drag Kanban',
|
||||||
|
charts: 'Gráficos',
|
||||||
|
keyboardChart: 'Keyboard Chart',
|
||||||
|
lineChart: 'Gráfico de líneas',
|
||||||
|
mixChart: 'Mix Chart',
|
||||||
|
example: 'Ejemplo',
|
||||||
|
nested: 'Rutas anidadass',
|
||||||
|
menu1: 'Menu 1',
|
||||||
|
'menu1-1': 'Menu 1-1',
|
||||||
|
'menu1-2': 'Menu 1-2',
|
||||||
|
'menu1-2-1': 'Menu 1-2-1',
|
||||||
|
'menu1-2-2': 'Menu 1-2-2',
|
||||||
|
'menu1-3': 'Menu 1-3',
|
||||||
|
menu2: 'Menu 2',
|
||||||
|
Table: 'Tabla',
|
||||||
|
dynamicTable: 'Tabla dinámica',
|
||||||
|
dragTable: 'Arrastrar tabla',
|
||||||
|
inlineEditTable: 'Editor',
|
||||||
|
complexTable: 'Complex Table',
|
||||||
|
treeTable: 'Tree Table',
|
||||||
|
customTreeTable: 'Custom TreeTable',
|
||||||
|
tab: 'Pestaña',
|
||||||
|
form: 'Formulario',
|
||||||
|
createArticle: 'Crear artículo',
|
||||||
|
editArticle: 'Editar artículo',
|
||||||
|
articleList: 'Listado de artículos',
|
||||||
|
errorPages: 'Páginas de error',
|
||||||
|
page401: '401',
|
||||||
|
page404: '404',
|
||||||
|
errorLog: 'Registro de errores',
|
||||||
|
excel: 'Excel',
|
||||||
|
exportExcel: 'Exportar a Excel',
|
||||||
|
selectExcel: 'Export seleccionado',
|
||||||
|
uploadExcel: 'Subir Excel',
|
||||||
|
zip: 'Zip',
|
||||||
|
exportZip: 'Exportar a Zip',
|
||||||
|
theme: 'Tema',
|
||||||
|
clipboardDemo: 'Clipboard',
|
||||||
|
i18n: 'I18n',
|
||||||
|
externalLink: 'Enlace externo'
|
||||||
|
},
|
||||||
|
navbar: {
|
||||||
|
logOut: 'Salir',
|
||||||
|
dashboard: 'Panel de control',
|
||||||
|
github: 'Github',
|
||||||
|
screenfull: 'Pantalla completa',
|
||||||
|
theme: 'Tema',
|
||||||
|
size: 'Tamaño global'
|
||||||
|
},
|
||||||
|
login: {
|
||||||
|
title: 'Formulario de acceso',
|
||||||
|
logIn: 'Acceso',
|
||||||
|
username: 'Usuario',
|
||||||
|
password: 'Contraseña',
|
||||||
|
any: 'nada',
|
||||||
|
thirdparty: 'Conectar con',
|
||||||
|
thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'
|
||||||
|
},
|
||||||
|
documentation: {
|
||||||
|
documentation: 'Documentación',
|
||||||
|
github: 'Repositorio Github'
|
||||||
|
},
|
||||||
|
permission: {
|
||||||
|
roles: 'Tus permisos',
|
||||||
|
switchRoles: 'Cambiar permisos'
|
||||||
|
},
|
||||||
|
guide: {
|
||||||
|
description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',
|
||||||
|
button: 'Ver guía'
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
documentation: 'Documentación',
|
||||||
|
tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',
|
||||||
|
dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.',
|
||||||
|
stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',
|
||||||
|
backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',
|
||||||
|
backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',
|
||||||
|
imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
dynamicTips1: 'Fixed header, sorted by header order',
|
||||||
|
dynamicTips2: 'Not fixed header, sorted by click order',
|
||||||
|
dragTips1: 'Orden por defecto',
|
||||||
|
dragTips2: 'The after dragging order',
|
||||||
|
title: 'Título',
|
||||||
|
importance: 'Importancia',
|
||||||
|
type: 'Tipo',
|
||||||
|
remark: 'Remark',
|
||||||
|
search: 'Buscar',
|
||||||
|
add: 'Añadir',
|
||||||
|
export: 'Exportar',
|
||||||
|
reviewer: 'reviewer',
|
||||||
|
id: 'ID',
|
||||||
|
date: 'Fecha',
|
||||||
|
author: 'Autor',
|
||||||
|
readings: 'Lector',
|
||||||
|
status: 'Estado',
|
||||||
|
actions: 'Acciones',
|
||||||
|
edit: 'Editar',
|
||||||
|
publish: 'Publicar',
|
||||||
|
draft: 'Draft',
|
||||||
|
delete: 'Eliminar',
|
||||||
|
cancel: 'Cancelar',
|
||||||
|
confirm: 'Confirmar'
|
||||||
|
},
|
||||||
|
errorLog: {
|
||||||
|
tips: 'Please click the bug icon in the upper right corner',
|
||||||
|
description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',
|
||||||
|
documentation: 'Documento de introducción'
|
||||||
|
},
|
||||||
|
excel: {
|
||||||
|
export: 'Exportar',
|
||||||
|
selectedExport: 'Exportar seleccionados',
|
||||||
|
placeholder: 'Por favor escribe un nombre de fichero'
|
||||||
|
},
|
||||||
|
zip: {
|
||||||
|
export: 'Exportar',
|
||||||
|
placeholder: 'Por favor escribe un nombre de fichero'
|
||||||
|
},
|
||||||
|
theme: {
|
||||||
|
change: 'Cambiar tema',
|
||||||
|
documentation: 'Documentación del tema',
|
||||||
|
tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'
|
||||||
|
},
|
||||||
|
tagsView: {
|
||||||
|
refresh: 'Actualizar',
|
||||||
|
close: 'Cerrar',
|
||||||
|
closeOthers: 'Cerrar otros',
|
||||||
|
closeAll: 'Cerrar todos'
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,8 +3,10 @@ import VueI18n from 'vue-i18n'
|
||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
|
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
|
||||||
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
|
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
|
||||||
|
import elementEsLocale from 'element-ui/lib/locale/lang/es'// element-ui lang
|
||||||
import enLocale from './en'
|
import enLocale from './en'
|
||||||
import zhLocale from './zh'
|
import zhLocale from './zh'
|
||||||
|
import esLocale from './es'
|
||||||
|
|
||||||
Vue.use(VueI18n)
|
Vue.use(VueI18n)
|
||||||
|
|
||||||
|
@ -16,12 +18,16 @@ const messages = {
|
||||||
zh: {
|
zh: {
|
||||||
...zhLocale,
|
...zhLocale,
|
||||||
...elementZhLocale
|
...elementZhLocale
|
||||||
|
},
|
||||||
|
es: {
|
||||||
|
...esLocale,
|
||||||
|
...elementEsLocale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const i18n = new VueI18n({
|
const i18n = new VueI18n({
|
||||||
// set locale
|
// set locale
|
||||||
// options: en or zh
|
// options: en | zh | es
|
||||||
locale: Cookies.get('language') || 'en',
|
locale: Cookies.get('language') || 'en',
|
||||||
// set locale messages
|
// set locale messages
|
||||||
messages
|
messages
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<el-radio-group v-model="lang" size="small">
|
<el-radio-group v-model="lang" size="small">
|
||||||
<el-radio label="zh" border>简体中文</el-radio>
|
<el-radio label="zh" border>简体中文</el-radio>
|
||||||
<el-radio label="en" border>English</el-radio>
|
<el-radio label="en" border>English</el-radio>
|
||||||
|
<el-radio label="es" border>Español</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<el-tag style="margin-top:15px;display:block;" type="info">{{ $t('i18nView.note') }}</el-tag>
|
<el-tag style="margin-top:15px;display:block;" type="info">{{ $t('i18nView.note') }}</el-tag>
|
||||||
</div>
|
</div>
|
||||||
|
@ -101,6 +102,7 @@ export default {
|
||||||
if (!this.$i18n.getLocaleMessage('en')[viewName]) {
|
if (!this.$i18n.getLocaleMessage('en')[viewName]) {
|
||||||
this.$i18n.mergeLocaleMessage('en', local.en)
|
this.$i18n.mergeLocaleMessage('en', local.en)
|
||||||
this.$i18n.mergeLocaleMessage('zh', local.zh)
|
this.$i18n.mergeLocaleMessage('zh', local.zh)
|
||||||
|
this.$i18n.mergeLocaleMessage('es', local.es)
|
||||||
}
|
}
|
||||||
this.setOptions() // set default select options
|
this.setOptions() // set default select options
|
||||||
},
|
},
|
||||||
|
|
|
@ -39,5 +39,25 @@ export default {
|
||||||
two: 'Two',
|
two: 'Two',
|
||||||
three: 'Three'
|
three: 'Three'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
es: {
|
||||||
|
i18nView: {
|
||||||
|
title: 'Switch Language',
|
||||||
|
note: 'The internationalization of this project is based on vue-i18n',
|
||||||
|
datePlaceholder: 'Pick a day',
|
||||||
|
selectPlaceholder: 'Select',
|
||||||
|
tableDate: 'tableDate',
|
||||||
|
tableName: 'tableName',
|
||||||
|
tableAddress: 'tableAddress',
|
||||||
|
default: 'default:',
|
||||||
|
primary: 'primary',
|
||||||
|
success: 'success',
|
||||||
|
info: 'info',
|
||||||
|
warning: 'warning',
|
||||||
|
danger: 'danger',
|
||||||
|
one: 'One',
|
||||||
|
two: 'Two',
|
||||||
|
three: 'Three'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue