/**
 * Spanish translation
 * @author Ricardo Obregón <robregonm@gmail.com>
 * @version 2010-09-18
 */
(function($) {
elRTE.prototype.i18Messages.es = {
	'_translator'    : 'Ricardo Obregón &lt;robregonm@gmail.com&gt;',
	'_translation'   : 'Spanish translation',
	'Editor' : 'Editor',
	'Source' : 'Código Fuente',
	// Panel Name
	'Copy/Pase'      : 'Copiar/Pegar',
	'Undo/Redo'      : 'Deshacer/Rehacer',
	'Text styles'    : 'Estilos de Texto',
	'Colors'         : 'Colores',
	'Alignment'      : 'Alineación',
	'Indent/Outdent' : 'Aumentar/Disminuir Sangría',
	'Text format'    : 'Formato de texto',
	'Lists'          : 'Listas',
	'Misc elements'  : 'Elementos varios',
	'Links'          : 'Vínculos',
	'Images'         : 'Imágenes',
	'Media'          : 'Multimedia',
	'Tables'         : 'Tablas',
	'File manager (elFinder)' : 'Administrador de archivos',
	// button names
	'Save'                    : 'Guardar',
	'Copy'                    : 'Copiar',
	'Cut'                     : 'Cortar',
	'Paste'                   : 'Pegar',
	'Paste only text'         : 'Pegar solo texto',
	'Paste formatted text'    : 'Pegar texto formateado',
	'Clean format'            : 'Limpiar formato',
	'Undo last action'        : 'Deshacer la última acción',
	'Redo previous action'    : 'Rehacer la última acción',
	'Bold'                    : 'Negrita',
	'Italic'                  : 'Cursiva',
	'Underline'               : 'Subrayado',
	'Strikethrough'           : 'Tachado',
	'Superscript'             : 'Superíndice',
	'Subscript'               : 'Subíndice',
	'Align left'              : 'Alinear a la izquierda',
	'Ailgn right'             : 'Alinear a la derecha',
	'Align center'            : 'Centrar',
	'Align full'              : 'Justificado',
	'Font color'              : 'Color de texto',
	'Background color'        : 'Color de fondo',
	'Indent'                  : 'Aumentar sangría',
	'Outdent'                 : 'Reducir sangría',
	'Format'                  : 'Formato',
	'Font size'               : 'Tamaño de letra',
	'Font'                    : 'Fuente',
	'Ordered list'            : 'Lista ordenada',
	'Unordered list'          : 'Lista desordenada',
	'Horizontal rule'         : 'Línea horizontal',
	'Blockquote'              : 'Cita',
	'Block element (DIV)'     : 'Bloque de Elementos (DIV)',
	'Link'                    : 'Vínculo',
	'Delete link'             : 'Eliminar vínculo',
	'Bookmark'                : 'Marcador',
	'Image'                   : 'Imagen',
	'Table'                   : 'Tabla',
	'Delete table'            : 'Eliminar tabla',
	'Insert row before'       : 'Insertar fila antes',
	'Insert row after'        : 'Insertar fila después',
	'Delete row'              : 'Eliminar fila',
	'Insert column before'    : 'Insertar columna antes',
	'Insert column after'     : 'Insertar columna después',
	'Delete column'           : 'Eliminar columna',
	'Merge table cells'       : 'Fundir celdas',
	'Split table cell'        : 'Dividir celda',
	'Toggle display document structure' : 'Pantalla de estructura de documento',
	'Table cell properties'   : 'Propiedades de celda',
	'Table properties'        : 'Propiedades de tabla',
	'Toggle full screen mode' : 'Modo de pantalla completa',
	'Open file manager'       : 'Abrir administrador de archivos',
	'Non breakable space'     : 'Espacio indivisible',
	'Stop element floating'   : 'Detener elemento flotante',
	// dialogs
	'Warning' : 'Advertencia',
	'Properies' : 'Propiedades',
	'Popup' : 'Ventana emergente',
	'Advanced' : 'Avanzado',
	'Events' : 'Eventos',
	'Width' : 'Ancho',
	'Height' : 'Alto',
	'Left'   : 'Izquierda',
	'Center' : 'Centrado',
	'Right'  : 'Derecha',
	'Border' : 'Borde',
	'Background' : 'Fondo',
	'Css class' : 'Clase CSS',
	'Css style' : 'Estilo CSS',
	'No' : 'No',
	'Title' : 'Título',
	'Script direction' : 'Dirección del script',
	'Language' : 'Idioma',
	'Charset' : 'Charset',
	'Not set' : 'No establecido',
	'Left to right' : 'Izquierda a derecha',
	'Right to left' : 'Derecha a izquierda',
	'In this window' : 'En esta ventana (_self)',
	'In new window (_blank)' : 'En nueva ventana (_blank)',
	'In new parent window (_parent)' : 'En nueva ventana padre (_parent)',
	'In top frame (_top)' : 'En marco superior (_top)',
	'URL' : 'URL',
	'Open in' : 'Abrir en',
	// copy
	'This operation is disabled in your browser on security reason. Use shortcut instead.' : 'Esta operación está desactivada en su navegador por razones de seguridad. Utilice en su lugar un comando de teclado.',
	// format 
	'Heading 1' : 'Encabezado 1',
	'Heading 2' : 'Encabezado 2',
	'Heading 3' : 'Encabezado 3',
	'Heading 4' : 'Encabezado 4',
	'Heading 5' : 'Encabezado 5',
	'Heading 6' : 'Encabezado 6',
	'Paragraph' : 'Párrafo',
	'Address' : 'Dirección',
	'Preformatted' : 'Preformateado',
	// font size
	'Small (8pt)'   : 'Pequeño (8pt)',
	'Small (10px)'  : 'Pequeño (10px)',
	'Small (12pt)'  : 'Pequeño (12pt)',
	'Normal (14pt)' : 'Normal (14pt)',
	'Large (18pt)'  : 'Grande (18pt)',
	'Large (24pt)'  : 'Grande (24pt)',
	'Large (36pt)'  : 'Grande (36pt)',
	// bookmark
	'Bookmark name' : 'Nombre del marcador',
	// link
	'Link URL' : 'URL del vínculo',
	'Target' : 'Objetivo',
	'Open link in popup window' : 'Abrir vínculo en ventana emergente',
	'Window name' : 'Nombre de la ventana',
	'Window size' : 'Tamaño de la ventana',
	'Window position' : 'Posición de la ventana',
	'Location bar' : 'Barra de dirección',
	'Menu bar' : 'Barra de Menú',
	'Toolbar' : 'Barra de herramientas',
	'Scrollbars' : 'Barras de desplazamiento',
	'Status bar' : 'Barra de estado',
	'Resizable' : 'Redimensionable',
	'Depedent' : 'Dependiente (Netscape)',
	'Add return false' : 'Agregar (return false)',
	'Target MIME type' : 'Objetivo de Tipo MIME',
	'Relationship page to target (rel)' : '',
	'Relationship target to page (rev)' : '',
	'Tab index' : '',
	'Access key' : 'Tecla de acceso',
	// image
	'Size' : 'Tamaño',
	'Preview' : 'Previsualización',
	'Margins' : 'Márgenes',
	'Alt text' : 'Texto alternativo',
	'Image URL' : 'URL de la imagen',
	// table
	'Spacing'       : 'Espaciado (Spacing)',
	'Padding'       : 'Relleno (Padding)',
	'Rows'          : 'Filas',
	'Columns'       : 'Columnas',
	'Groups'        : 'Grupos',
	'Cells'         : 'Celdas',
	'Caption'       : 'Leyenda',
	'Inner borders' : 'Bordes internos'
	
	
}
})(jQuery);
