silverstripe-reports/lang/es.yml
2015-09-15 10:42:32 +12:00

427 lines
20 KiB
YAML

es:
AssetAdmin:
ADDFILES: 'Añadir Archivos'
ActionAdd: 'Añadir carpeta'
AppCategoryArchive: Archivar
AppCategoryAudio: Audio
AppCategoryDocument: Documento
AppCategoryFlash: Flash
AppCategoryImage: Imagen
AppCategoryVideo: Vídeo
BackToFolder: 'Volver a la carpeta'
CREATED: Fecha
CurrentFolderOnly: '¿Límite a la carpeta actual?'
DetailsView: Detalles
FILES: Archivos
FILESYSTEMSYNC: 'Sincronizar archivos'
FILESYSTEMSYNCTITLE: 'Actualizar las entradas de base de datos del CMS de archivos en el sistema de archivos. Es útil cuando los nuevos archivos se han subido desde fuera del CMS, p.e., a través de FTP.'
FROMTHEINTERNET: 'Desde internet'
FROMYOURCOMPUTER: 'Desde tu ordenador'
Filetype: 'Tipo de archivo'
ListView: 'Vista de Lista'
MENUTITLE: Archivos
NEWFOLDER: NuevaCarpeta
SIZE: Tamaño
THUMBSDELETED: '{count} miniaturas no utilizadas han sido eliminadas'
TreeView: 'Vista en árbol'
Upload: Subir
AssetAdmin_DeleteBatchAction:
TITLE: 'Eliminar carpetas'
AssetAdmin_Tools:
FILTER: Filtro
AssetAdmin_left_ss:
GO: Ir
AssetTableField:
BACKLINKCOUNT: 'Usado en:'
PAGES: página(s)
BackLink_Button_ss:
Back: Atras
BrokenLinksReport:
Any: Cualquiera
BROKENLINKS: 'Informe de enlaces rotos'
CheckSite: 'Compobar sitio'
CheckSiteDropdownDraft: 'Sitio en Borrador'
CheckSiteDropdownPublished: 'Sitio Publicado'
ColumnDateLastModified: 'Fecha de última modificación'
ColumnDateLastPublished: 'Fecha de última publicación'
ColumnProblemType: 'Tipo de problema'
ColumnURL: URL
HasBrokenFile: 'tiene un archivo roto'
HasBrokenLink: 'tiene un enlace roto'
HasBrokenLinkAndFile: 'tiene un enlace y archivo roto'
HoverTitleEditPage: 'Editar página'
PageName: 'Nombre de la página'
ReasonDropdown: 'Problema a comprobar'
ReasonDropdownBROKENFILE: 'Archivo roto'
ReasonDropdownBROKENLINK: 'Enlace roto'
ReasonDropdownRPBROKENLINK: 'Página de redirección apuntando a una página que no existe'
ReasonDropdownVPBROKENLINK: 'Página virtual apuntando a una página que no existe'
RedirectorNonExistent: 'página de redirección apuntando a una página que no existe'
VirtualPageNonExistent: 'página virtual apuntando a una página que no existe'
CMSAddPageController:
Title: 'Añadir página'
CMSBatchActions:
ARCHIVE: Archivar
ARCHIVED_PAGES: '%d páginas archivadas'
DELETED_DRAFT_PAGES: 'Eliminadas %d páginas del sitio en borrador, %d fallos'
DELETED_PAGES: 'Eliminadas %d páginas del sitio publicado, %d fallos'
DELETE_DRAFT_PAGES: 'Eliminar del sitio borrador'
DELETE_PAGES: 'Eliminar del sitio público'
PUBLISHED_PAGES: 'Publicadas %d páginas, %d fallos'
PUBLISH_PAGES: Publicar
RESTORE: Restaurar
RESTORED_PAGES: '%d páginas restauradas'
CMSFileAddController:
MENUTITLE: Archivos
CMSMain:
ACCESS: 'Acceso a la sección ''{title}'''
ACCESS_HELP: 'Permitir la visualización de la sección que contiene el árbol de la página y el contenido. Ver y editar permisos puede ser gestionado a través de menús desplegables específicos de las páginas, así como los "permisos de contenido" separados.'
ARCHIVE: Archivar
ARCHIVEDPAGE: '''%s'' páginas archivadas'
AddNew: 'Añadir nueva página'
AddNewButton: 'Añadir nuevo'
AddPageRestriction: 'Agregar restricción a la página'
Cancel: Cancelar
ChoosePageParentMode: 'Elegir donde crear esta página'
ChoosePageType: 'Elegir tipo de página'
Create: Crear
DELETE: 'Eliminar del borrador de la web'
DELETEFP: Eliminar de la web publicada
DESCREMOVED: 'y {count} descendientes'
DUPLICATED: 'Duplicado'
DUPLICATEDWITHCHILDREN: 'Duplicado con hijos'
EMAIL: E-mail
EditTree: 'Editar árbol'
ListFiltered: 'Mostrar lista'
MENUTITLE: 'Editar página'
NEWPAGE: 'Nuevo {pagetype}'
PAGENOTEXISTS: 'Esta página no existe'
PAGES: Páginas
PAGETYPEANYOPT: Cualquiera
PAGETYPEOPT: 'Tipo de Página'
PUBALLCONFIRM: 'Por favor publica todas las páginas del sitio, copiando el contenido del borrador al sitio público'
PUBALLFUN: 'Función "Publicar Todo"'
PUBALLFUN2: "Pulsando este botón es el equivalente de ir a cada página y pulsar \"Publicar\". Está pensado para ser usado en ediciones masivas del contenido, por ejemplo cuando el sitio se construye por primera vez."
PUBPAGES: 'Hecho: Publicadas {count} páginas'
PageAdded: 'Página creada correctamente'
REMOVED: 'Removido'
REMOVEDPAGE: 'Eliminado ''{title}'' del sitio publicado'
REMOVEDPAGEFROMDRAFT: 'Borrado ''%s''%s desde el sitio no publicado'
RESTORED: 'Restablecido ''{title}'' correctamente'
RESTORE_DESC: 'Recuperar la versión archivada del borrador'
RESTORE_TO_ROOT: 'Recuperar borrador al nivel superior'
RESTORE_TO_ROOT_DESC: 'Recuperar la versión archivada del borrador como de nivel superior'
ROLLBACK: 'Restaurar esta versión'
ROLLEDBACKPUBv2: 'Restaurado'
ROLLEDBACKVERSIONv2: 'Versión #%d restaurada'
SAVE: Guardar
SAVEDRAFT: 'Guardar borrador'
TabContent: Contenido
TabHistory: Historial
TabSettings: Ajustes
TreeFiltered: 'Árbol filtrado'
TreeFilteredClear: 'Borrar filtro'
CMSMain_left_ss:
APPLY_FILTER: 'Aplicar filtro'
CLEAR_FILTER: 'Limpiar filtro'
RESET: Restablecer
CMSPageAddController:
MENUTITLE: 'Añadir página'
ParentMode_child: 'Debajo de otra página'
ParentMode_top: 'Nivel superior'
CMSPageEditController:
MENUTITLE: 'Editar página'
CMSPageHistoryController:
COMPAREMODE: 'Modo comparación (seleccionar dos)'
COMPAREVERSIONS: 'Comparar Versiones'
COMPARINGVERSION: 'Comparando versiones {version1} y {version2}'
MENUTITLE: Historial
REVERTTOTHISVERSION: 'Volver a esta versión'
SHOWUNPUBLISHED: 'Mostrar versiones no publicadas'
SHOWVERSION: 'Mostrar Versión'
VIEW: vista
VIEWINGLATEST: 'Viendo la última versión'
VIEWINGVERSION: 'Actualmente viendo la versión {version}.'
CMSPageHistoryController_versions_ss:
AUTHOR: Autor
NOTPUBLISHED: 'Sin publicar'
PUBLISHER: Publicado por
UNKNOWN: Desconocido
WHEN: Cuando
CMSPageSettingsController:
MENUTITLE: 'Editar página'
CMSPagesController:
GalleryView: 'Ver como galería'
ListView: 'Vista como lista'
MENUTITLE: Páginas
TreeView: 'Ver como árbol'
CMSPagesController_ContentToolbar_ss:
MULTISELECT: Multi-selección
CMSPagesController_Tools_ss:
FILTER: Filtro
CMSSIteTreeFilter_PublishedPages:
Title: 'Páginas publicadas'
CMSSearch:
FILTERDATEFROM: De
FILTERDATEHEADING: Fecha
FILTERDATETO: Hasta
FILTERLABELTEXT: Filtrar
CMSSettingsController:
MENUTITLE: Ajustes
CMSSiteTreeFilter_Search:
Title: 'Todas las paginas'
CMSSiteTreeFilter_StatusRemovedFromDraftPages:
Title: 'Publicada, pero eliminada de los borradores'
ContentControl:
NOTEWONTBESHOWN: 'Nota: este mensaje no se mostrará a tus visitantes'
ContentController:
ARCHIVEDSITE: 'Vista previa de la versión'
ARCHIVEDSITEFROM: 'Sitio archivado desde'
CMS: CMS
DRAFT: Borrador
DRAFTSITE: 'Sitio en Borrador'
DRAFT_SITE_ACCESS_RESTRICTION: 'Debe iniciar sesión para poder acceder a los contenidos archivados o al borrador. <a href="%s">De un click aquí para regresar al sitio publicado.</a>'
Email: Correo electrónico
INSTALL_SUCCESS: '¡Instalación Correcta!'
InstallFilesDeleted: 'Los archivos de instalación han sido borrados correctamente.'
InstallSecurityWarning: 'Por razones de seguridad ahora debes eliminar los archivos de instalación, a menos que estés planeando reinstalar más tarde (<em>requiere inicio de sesión de administrador, ver arriba</em>). El servidor web ahora tan sólo necesita acceso de escritura a la carpeta "assets", puedes quitar el acceso de escritura de todas las demás carpetas. <a href="{link}" style="text-align: center;">Haz clic aquí para borrar los archivos de instalación.</a>'
InstallSuccessCongratulations: '¡SilverStripe ha sido instalado con éxito!'
LOGGEDINAS: 'Conectado como'
LOGIN: Iniciar sesión
LOGOUT: 'Desconectar'
NOTLOGGEDIN: 'No conectado'
PUBLISHED: Publicado
PUBLISHEDSITE: 'Sitio Publicado'
Password: Contraseña
PostInstallTutorialIntro: 'Este sitio web es una versión simple de un sitio SilverStripe 3. Para ampliarlo, por favor echa un vistazo en {link}.'
StartEditing: 'Comenzar a editar'
UnableDeleteInstall: 'No se pueden eliminar los archivos de instalación. Por favor, elimina los siguientes archivos manualmente'
VIEWPAGEIN: 'Ver página en:'
ErrorPage:
400: '400 - Petición incorrecta (Bad Request)'
401: '401 - No autorizado (Unauthorized)'
403: '403 - Prohibido (Forbidden)'
404: '404 - No encontrado (Not Found)'
405: '405 - Método no permitido (Method Not Allowed)'
406: '406 - No aceptable (Not Acceptable)'
407: '407 - Autenticación del Proxy requerida (Proxy Authentication Required)'
408: '408 - Tiempo de espera agotado para la solicitud (Request Timeout)'
409: '409 - Conflicto (Conflict)'
410: '410 - Ido (Gone)'
411: '411 - Longitud requerida (Length Required)'
412: '412- Ha fallado una condición previa'
413: '413- La entidad requerida es demasiado grande'
414: '414 - URI Requerida Demasiado Larga'
415: '415- No hay cobertura para este tipo de soporte.'
416: '416- El rango requerido no puede cumplirse'
417: '417- Expectación fallida'
422: '422 - No es posible procesar la Entidad '
429: '429 - Muchas Peticiones al servidor'
500: '500 - Error interno en el servidor'
501: '501- No implementado'
502: '502- Pasarela de comunicación equivocada'
503: '503 - Servicio no Disponible'
504: '504- La pasarela de comunicación claudicó '
505: '505- Versión HTTP no cubierta'
CODE: 'Código de error'
DEFAULTERRORPAGECONTENT: '<p>Lo sentimos, parece que intentaste acceder a una página que no existe.</p><p>Por favor, comprueba que la URL que intentabas acceder está bien escrita e inténtalo de nuevo.</p>'
DEFAULTERRORPAGETITLE: 'Página no encontrada'
DEFAULTSERVERERRORPAGECONTENT: '<p>Lo sentimos, hubo un problema al gestionar tu solicitud.</p>'
DEFAULTSERVERERRORPAGETITLE: 'Error de servidor'
DESCRIPTION: 'Contenido personalizado para los distintos casos de error (p.e. "Página no encontrada")'
ERRORFILEPROBLEM: 'Error abriendo el archivo "{filename}" para escritura. Por favor comprueba los permisos del archivo.'
PLURALNAME: 'Páginas de error'
SINGULARNAME: 'Página de error'
Folder:
AddFolderButton: 'Añadir carpeta'
DELETEUNUSEDTHUMBNAILS: 'Borrar miniaturas sin usar'
UNUSEDFILESTITLE: 'Archivos sin usar'
UNUSEDTHUMBNAILSTITLE: 'Miniaturas sin usar'
UploadFilesButton: Subir
LeftAndMain:
DELETED: Borrado.
PreviewButton: Previsualizar
SAVEDUP: Guardado
SearchResults: 'Resultados de la búsqueda'
Permission:
CMS_ACCESS_CATEGORY: 'Acceso CMS'
Permissions:
CONTENT_CATEGORY: 'Permisos de contenido'
PERMISSIONS_CATEGORY: 'Permisos de roles y accesos'
RedirectorPage:
DESCRIPTION: 'Redirige a un página interna diferente'
HASBEENSETUP: 'Se ha establecido una página redireccionadora sin ningún sitio al cual redireccionar.'
HEADER: 'Esta página redireccionará a los usuarios a otra página'
OTHERURL: 'Otra dirección URL de un sitio web'
PLURALNAME: 'Páginas de redirección'
REDIRECTTO: 'Redireccionar a'
REDIRECTTOEXTERNAL: 'Otro sitio web'
REDIRECTTOPAGE: 'Una página en su sitio web'
SINGULARNAME: 'Página de redirección apuntando a una página que no existe'
YOURPAGE: 'Página en su sitio web'
ReportAdmin:
MENUTITLE: Informes
ReportTitle: Título
ReportAdminForm:
FILTERBY: 'Filtrar por'
SITETREE:
VIRTUALPAGEDRAFTWARNING: 'Esta página es un borrador de página virtual'
VIRTUALPAGEWARNING: 'Esta es una página virtual'
VIRTUALPAGEWARNINGSETTINGS: 'Configuración de página virtual'
SearchForm:
GO: IR
SEARCH: Buscar
SearchResults: 'Resultados de la búsqueda'
SideReport:
BROKENFILES: 'Páginas con archivos rotos'
BROKENLINKS: 'Página con enlaces rotos'
BROKENREDIRECTORPAGES: 'Páginas de redirección apuntando a páginas borradas'
BROKENVIRTUALPAGES: 'Páginas Virtuales apuntando a páginas borradas'
BrokenLinksGroupTitle: 'Informes de enlaces rotos'
ContentGroupTitle: 'Informes de contenido'
EMPTYPAGES: 'Páginas vacías'
LAST2WEEKS: 'Páginas editadas en las últimas 2 semanas'
OtherGroupTitle: Otro
ParameterLiveCheckbox: 'Comprobar sitio activo'
REPEMPTY: 'El informe {title} está vacío.'
SilverStripeNavigator:
ARCHIVED: Archivado
SilverStripeNavigatorLink:
ShareLink: 'Compartir enlace'
SilverStripeNavigatorLinkl:
CloseLink: Cerrar
SiteConfig:
DEFAULTTHEME: '(Usar tema por defecto)'
EDITHEADER: '¿Quién puede editar páginas en este sitio?'
EDIT_PERMISSION: 'Gestionar configuración del sitio'
EDIT_PERMISSION_HELP: 'Capacidad de editar el acceso de configuración global/permisos de página de nivel superior.'
PLURALNAME: 'Configuraciones del sitio'
SINGULARNAME: 'Configuración del sitio'
SITENAMEDEFAULT: 'Nombre de tu Sitio'
SITETAGLINE: 'Lema/Eslogan del Sitio'
SITETITLE: 'Título de tu sitio'
TABACCESS: Acceso
TABMAIN: Principal
TAGLINEDEFAULT: 'tu lema aquí'
THEME: Tema
TOPLEVELCREATE: '¿Quién puede crear páginas en este sitio?'
VIEWHEADER: '¿Quién puede ver páginas en este sitio?'
SiteTree:
ACCESSANYONE: Cualquiera
ACCESSHEADER: '¿Quién puede ver esta página?'
ACCESSLOGGEDIN: 'Usuarios autentificados'
ACCESSONLYTHESE: 'Solo estas personas (elija de la lista)'
ADDEDTODRAFTHELP: 'La página aún no ha sido publicada'
ADDEDTODRAFTSHORT: Borrador
ALLOWCOMMENTS: '¿Permitir comentarios en esta página?'
APPEARSVIRTUALPAGES: 'Este contenido también aparece en las páginas virtuales en las secciones {title}.'
ARCHIVEDPAGEHELP: 'Esta página ha sido removida de los borradores y del sitio en vivo'
ARCHIVEDPAGESHORT: Archivada
BUTTONARCHIVEDESC: 'Ocultar y mandar al archivo'
BUTTONCANCELDRAFT: 'Cancelar los cambios en el borrador'
BUTTONCANCELDRAFTDESC: 'Elimine el borrador y regrese a la página que se encuentra publicada actualmente'
BUTTONPUBLISHED: Publicado
BUTTONSAVED: Guardado
BUTTONSAVEPUBLISH: 'Guardar y publicar'
BUTTONUNPUBLISH: Sin Publicar
BUTTONUNPUBLISHDESC: 'Elimine esta página del sitio publicado'
Comments: Comentarios
Content: Contenido
DEFAULTABOUTCONTENT: '<p>Tú puedes rellenar esta página con tu propio contenido, o borrarla y crear tus propias páginas.<br />Aquí pondrías información sobre los dueños de tu página.<br /></p>'
DEFAULTABOUTTITLE: 'Sobre nosotros'
DEFAULTCONTACTCONTENT: '<p>Tú puedes rellenar esta página con tu propio contenido, o borrarla y crear tus propias páginas.<br />Aquí pondrías tu información de contacto.<br /></p>'
DEFAULTCONTACTTITLE: 'Contacta con nosotros'
DEFAULTHOMECONTENT: '<p>¡Bienvenido a SilverStripe! Esta es la página de inicio por defecto. Tú puedes editar esta página abriendo <a href="admin/">el CMS</a>.</p><p>También puedes acceder a la <a href="http://docs.silverstripe.org">documentación de desarrollo</a>, o comenzar con las<a href="http://www.silverstripe.org/learn/lessons">Lecciones de SilverStripe</a>.</p>'
DEFAULTHOMETITLE: Inicio
DELETEDPAGEHELP: 'La página ya no está publicada'
DELETEDPAGESHORT: Borrado
DEPENDENT_NOTE: 'Las siguientes páginas dependen de esta página. Esto incluye páginas virtuales, páginas de redireccionamiento, y las páginas con enlaces de contenido.'
DESCRIPTION: 'Página genérica de contenido'
DependtPageColumnLinkType: 'Tipo de enlace'
DependtPageColumnURL: Depende de
EDITANYONE: 'Cualquiera que pueda iniciar sesión en el CMS'
EDITHEADER: '¿Quién puede editar esta página?'
EDITONLYTHESE: 'Solo estas personas (elija de la lista)'
EDITORGROUPS: 'Grupos de Editor'
EDIT_ALL_DESCRIPTION: 'Editar cualquier página'
EDIT_ALL_HELP: 'Posibilidad de editar cualquier página en el sitio, independientemente de la configuración de la pestaña de Acceso. Requiere permiso "Acceso a la sección ''Páginas''"'
Editors: 'Grupo de Editores'
GroupPlaceholder: 'Grupo'
HASBROKENLINKS: 'Esta página contiene enlaces rotos.'
HTMLEDITORTITLE: Contenido
INHERIT: 'Heredar de página padre'
LASTPUBLISHED: 'Última publicación'
LASTSAVED: 'Última vez que se guardó'
LASTUPDATED: 'Última actualización'
LINKCHANGENOTE: 'Cambio el enlace de esta página también afectará a los enlaces de todas las páginas hijas.'
MENUTITLE: 'Etiqueta de Navegación'
METADESC: 'Descripción'
METADESCHELP: 'Los motores de búsqueda usan este contenido para mostrar resultados de búsqueda (aunque no influirá en su ranking).'
METAEXTRA: 'Meta Tags Personalizadas'
METAEXTRAHELP: 'Etiquetas HTML para meta información adicional. Por ejemplo &lt;meta name="nombrePersonalizado" content="tu contenido personalizado aquí" /&gt;'
MODIFIEDONDRAFTHELP: 'La página tiene cambios sin publicar'
MODIFIEDONDRAFTSHORT: Modificado
MetadataToggle: Metadata
MoreOptions: 'Más opciones'
NOTPUBLISHED: 'No publicado'
OBSOLETECLASS: 'Clase obsoleta'
PAGELOCATION: 'Localización de la página'
PAGETITLE: 'Nombre de la página'
PAGETYPE: 'Tipo de Página'
PARENTID: 'Página padre'
PARENTTYPE: 'Localización de la página'
PARENTTYPE_ROOT: 'Página de nivel superior'
PARENTTYPE_SUBPAGE: 'Sub-página por debajo de una página padre'
PERMISSION_GRANTACCESS_DESCRIPTION: 'Controlar qué grupos pueden acceder o editar determinadas páginas'
PERMISSION_GRANTACCESS_HELP: 'Permitir la creación de restricciones de acceso específicas a la página en la sección "Páginas".'
PLURALNAME: Páginas
PageTypNotAllowedOnRoot: 'La página tipo "{type}" no está permitida en el nivel raiz'
PageTypeNotAllowed: 'El tipo de página "{type}" no está permitido como hijo de esta página padre'
REMOVEDFROMDRAFTHELP: 'La página está publicada, pero ha sido eliminada de borrador'
REMOVEDFROMDRAFTSHORT: 'Eliminar de borrador'
REMOVE_INSTALL_WARNING: 'Aviso: Deberías eliminar install.php de esta instalación de SilverStripe por motivos de seguridad.'
REORGANISE_DESCRIPTION: 'Cambiar la estructura del sitio'
REORGANISE_HELP: 'Reorganizar las páginas en el árbol del sitio a través de drag&drop.'
SHOWINMENUS: '¿Mostrar en menús?'
SHOWINSEARCH: '¿Mostrar en la búsqueda?'
SINGULARNAME: Página
TABBEHAVIOUR: Comportamiento
TABCONTENT: 'Contenido'
TABDEPENDENT: 'Páginas dependientes'
TOPLEVEL: 'Contenido del Sitio (Top Level)'
TOPLEVELCREATORGROUPS: 'Creadores de nivel superior'
URLSegment: 'Segmento de URL'
VIEWERGROUPS: 'Visor de Grupos'
VIEW_ALL_DESCRIPTION: 'Ver cualquier página'
VIEW_ALL_HELP: 'Ver toda la ayuda'
VIEW_DRAFT_CONTENT: 'Ver contenido en borrador'
VIEW_DRAFT_CONTENT_HELP: 'Se aplica a la visualización de las páginas fuera del CMS en modo borrador. Útil para los colaboradores externos que no tienen acceso al CMS.'
Viewers: 'Grupos de Observadores'
Visibility: Visibilidad
has_one_Parent: 'Página padre'
many_many_BackLinkTracking: 'Rastreo de Backlinks'
many_many_ImageTracking: 'Rastreo de Imágenes'
many_many_LinkTracking: 'Rastreo de Enlaces'
SiteTreeFileExtension:
BACKLINK_LIST_DESCRIPTION: 'Esta lista muestra todas las páginas que han sido añadidas mediante un editor WYSIWYG.'
EDIT: Editar
SiteTreeURLSegmentField:
EMPTY: 'Vacío'
HelpChars: 'Los caracteres especiales son automáticamente convertidos o eliminados.'
URLSegmentField:
Cancel: Cancelar
Edit: Editar
OK: Ok
ViewArchivedEmail_ss:
CANACCESS: 'Puede acceder al sitio archivado con este enlace:'
HAVEASKED: 'Ha pedido ver el contenido de nuestro sitio el'
VirtualPage:
CHOOSE: 'Seleccionar'
DESCRIPTION: 'Muestra el contenido de otra página'
EditLink: Editar
HEADER: 'Esta es una página virtual'
HEADERWITHLINK: 'Título con link'
PLURALNAME: 'Páginas virtuales'
PageTypNotAllowedOnRoot: 'Tipo de página original "{type}" no se permite en el nivel raíz para esta página virtual'
SINGULARNAME: 'Página Virtual'