Merge branch 'master' into deploy
This commit is contained in:
		@@ -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>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										155
									
								
								src/lang/es.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										155
									
								
								src/lang/es.js
									
									
									
									
									
										Executable file
									
								
							@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,16 @@ import articleAPI from './article'
 | 
				
			|||||||
import remoteSearchAPI from './remoteSearch'
 | 
					import remoteSearchAPI from './remoteSearch'
 | 
				
			||||||
import transactionAPI from './transaction'
 | 
					import transactionAPI from './transaction'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 修复在使用 MockJS 情况下,设置 withCredentials = true,且未被拦截的跨域请求丢失 Cookies 的问题
 | 
				
			||||||
 | 
					// https://github.com/nuysoft/Mock/issues/300
 | 
				
			||||||
 | 
					Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send
 | 
				
			||||||
 | 
					Mock.XHR.prototype.send = function() {
 | 
				
			||||||
 | 
					  if (this.custom.xhr) {
 | 
				
			||||||
 | 
					    this.custom.xhr.withCredentials = this.withCredentials || false
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  this.proxy_send(...arguments)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Mock.setup({
 | 
					// Mock.setup({
 | 
				
			||||||
//   timeout: '350-600'
 | 
					//   timeout: '350-600'
 | 
				
			||||||
// })
 | 
					// })
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -296,3 +296,7 @@ export function deepClone(source) {
 | 
				
			|||||||
export function uniqueArr(arr) {
 | 
					export function uniqueArr(arr) {
 | 
				
			||||||
  return Array.from(new Set(arr))
 | 
					  return Array.from(new Set(arr))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function isExternal(path) {
 | 
				
			||||||
 | 
					  return /^(https?:|mailto:|tel:)/.test(path)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@
 | 
				
			|||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import { validateURL } from '@/utils/validate'
 | 
					import { isExternal } from '@/utils'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  props: {
 | 
					  props: {
 | 
				
			||||||
@@ -18,7 +18,7 @@ export default {
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    isExternalLink(routePath) {
 | 
					    isExternalLink(routePath) {
 | 
				
			||||||
      return validateURL(routePath)
 | 
					      return isExternal(routePath)
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    linkProps(url) {
 | 
					    linkProps(url) {
 | 
				
			||||||
      if (this.isExternalLink(url)) {
 | 
					      if (this.isExternalLink(url)) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@
 | 
				
			|||||||
<script>
 | 
					<script>
 | 
				
			||||||
import path from 'path'
 | 
					import path from 'path'
 | 
				
			||||||
import { generateTitle } from '@/utils/i18n'
 | 
					import { generateTitle } from '@/utils/i18n'
 | 
				
			||||||
import { validateURL } from '@/utils/validate'
 | 
					import { isExternal } from '@/utils'
 | 
				
			||||||
import Item from './Item'
 | 
					import Item from './Item'
 | 
				
			||||||
import AppLink from './Link'
 | 
					import AppLink from './Link'
 | 
				
			||||||
import FixiOSBug from './FixiOSBug'
 | 
					import FixiOSBug from './FixiOSBug'
 | 
				
			||||||
@@ -98,7 +98,7 @@ export default {
 | 
				
			|||||||
      return path.resolve(this.basePath, routePath)
 | 
					      return path.resolve(this.basePath, routePath)
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    isExternalLink(routePath) {
 | 
					    isExternalLink(routePath) {
 | 
				
			||||||
      return validateURL(routePath)
 | 
					      return isExternal(routePath)
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    generateTitle
 | 
					    generateTitle
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user