From ebefc65c57bc5276706a158cb7f3dc2b5447e89b Mon Sep 17 00:00:00 2001 From: Laura Arjona Reina Date: Thu, 22 Mar 2018 15:11:46 +0100 Subject: [PATCH 1/2] add initial Spanish translation (just some strings, WIP) --- shell/i18n/es.i18n.json | 1786 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1786 insertions(+) create mode 100644 shell/i18n/es.i18n.json diff --git a/shell/i18n/es.i18n.json b/shell/i18n/es.i18n.json new file mode 100644 index 0000000000..8b290e271c --- /dev/null +++ b/shell/i18n/es.i18n.json @@ -0,0 +1,1786 @@ +{ + "error": "Error: %s", + "shell": { + "layout": { + "demoExpired": { + "title": "Ha expirado la Demo", + "canUpgrade": "¡Gracias por probar la Demo de Sandstorm! Tu cuenta demo ha expirado. Si deseas continuar usando Sandstorm y hacer tus datos permanentes, por favor inicia sesión.", + "cannotUpgrade": "¡Gracias por probar la Demo de Sandstorm! Tu cuenta demo ha expirado.", + "signOut": "Cerrar sesión" + }, + "adminAlert": { + "icon": "!", + "title": "Nota para Admin" + }, + "demoModal": { + "header": "Sandstorm es un «suite» de productividad web autoalojable.", + "withAppDemo": "con aplicaciones como %s.", + "withoutAppDemo": "con todas las aplicaciones que necesitas en un lugar.", + "startButton": { + "withAppDemo": "Prueba %s »", + "withoutAppDemo": "Iniciar »" + }, + "explanation": "

Sandstorm hace fácil ejecutar aplicaciones en tu propio servidor. Además de mejorar la privacidad y el control, esto lleva las aplicaciones de software libre a una audiencia más amplia.

", + "securityOverview": "

Sandstorm también es segurísimo. Si te interesa la seguridad, consulta un resumen del modelo de seguridad de Sandstorm.

" + } + }, + "notifications": { + "hint": "Notificaciones", + "text": "Notificaciones" + }, + "notificationsPopup": { + "title": "Notificaciones", + "empty": "No hay notificaciones..." + }, + "loading": { + "title": "Cargando...", + "text": "Cargando..." + }, + "notFound": { + "title": "No encontrado", + "text": "404 no encontrado :(" + }, + "root": { + "title": "Inicio" + }, + "grainLogContents": { + "prefix": "..." + }, + "grainLog": { + "title": "Registro de depuración: %s" + }, + "signup": { + "title": "Reclamar invitación", + "signedUp": { + "keyIsUsedWithOrigin": "¡Ya has iniciado sesión! Ahora instala algunas aplicaciones.", + "keyIsNotUsed": "Parece que ya tienes una cuenta, así que no necesitas esta clave de registro." + }, + "keyIsUsed": "Lo siento, esta clave de registro ya se ha usado.", + "processing": "Por favor, espera...", + "signInGuide": "Primero debes iniciar sesión. Pulsa en \"Iniciar sesión\" arriba a la derecha.", + "invalidKey": "Lo siento, no es una clave de registro válida." + }, + "uploadStatus": { + "title": "Cargando...", + "uploadFailedWithError": "Carga fallida: %s %s", + "statusWithProgress": "%s... %s", + "status": "%s...", + "uploadFailed": "Ha fallado la carga. Por favor inténtalo de nuevo." + }, + "uploadTest": { + "title": "Cargar página de prueba", + "explanation": "Esta página está para que la usen los scripts de prueba.", + "uploadApp": "Cargar aplicación:", + "uploadBackup": "Cargar copia de seguridad:" + }, + "referrals": { + "title": "Programa de referencia", + "header": { + "isPaid": { + "title": "¡Consigue hasta 30 GB de espacio libre cuando tus amistades comparten en Oasis!", + "explanation": "Por cada persona que cree un enlace para compartir, te premiaremos con 2 GB." + }, + "isNotPaid": { + "title": "¡Consigue granitos ilimitados & hasta 2 GB de espacio libre cuando tus amistades comparten en Oasis!", + "explanation": "Por cada persona que crea un enlace para compartir, te premiaremos con 50 MB. También obtendrás granitos ilimitados." + } + }, + "howTo": { + "title": "Compartir es referenciar", + "explanation": "Para empezar, abre cualquier granito y pulsa en Compartir acceso.", + "getStart": { + "step1": "Compartes un granito con tus amistades (que aún no son usuarios de Oasis).", + "step2": "Tus amistades inician sesión.", + "step3": "Tus amistades comparten un granito con alguien (incluido tú mismo)." + } + }, + "status": { + "title": "Your referrals & status", + "explanation": "Once you send a sharing link out, people will appear in this list after they sign in.", + "pending": { + "title": "Still needs to share", + "explanation": "Tell these people to make a grain and share it with you. You must actually view the grain they shared with you!" + }, + "success": { + "title": "Successful referrals", + "explanation": "You've successfully referred these people. Congratulations!" + } + }, + "finePrint": { + "title": "La letra pequeña", + "warningWithAccountLink": "Your referral bonus lasts until 1 year after the referral. The terms of this referral program may change without warning; however, such changes will not affect bonuses you have already received. If you need even more space, upgrade your account.", + "explanation": "Paid subscribers can get up to 30 GB of free storage, 2 GB per person they refer, in addition to the storage from their account level. Free account holders can earn unlimited grains and 50 MB of free storage per person they refer, up to 2 GB total." + } + }, + "about": { + "title": "Acerca de Sandstorm", + "intro": { + "explanation": "Sandstorm.io is an open source hosting platform for personal/private instances of web apps. Users can upload and install arbitrary software through a simple app-store-like web interface. In addition to better privacy, this is the only way to make Open Source web apps viable.", + "version": "Version: %s", + "unofficialWarning": "WARNING: This server is running an unofficial build of Sandstorm which may contain modifications not reviewed by the developers." + }, + "changelog": { + "title": "Cambios recientes" + }, + "developers": { + "title": "Equipo de desarrollo" + }, + "advisors": { + "title": "Consultores" + }, + "corporate": { + "title": "Patrocinadores corporativos", + "explanation": "These companies contributed heavily to Sandstorm's crowdfunding campaign." + }, + "individual": { + "title": "Patrocinadores individuales clave", + "explanation": "These individuals contributed heavily to Sandstorm's crowdfunding campaign." + }, + "backers": { + "title": "Personas que respaldan el proyecto", + "explanation": "from our Indiegogo campaign >", + "anonymous": "and %s anonymous contributors", + "loading": "loading..." + }, + "dependencies": { + "title": "Third-party works used", + "license": "license", + "explanation": "These works are copyright the respective authors and used under the terms of the respective licenses." + }, + "copyright": { + "title": "Copyright", + "license": "The Sandstorm implementation is copyright by Sandstorm Development Group, Inc. and contributors. The implementation is licensed under the Apache License 2.0.", + "trademark": "\"Sandstorm\" and the Sandstorm logo are trademarks of Sandstorm Development Group, Inc., and may not be used to advertise derivative works nor commercial services without written consent from Sandstorm Development Group, Inc." + }, + "terms": { + "license": "License", + "terms": "Terms of service", + "privacy": "Privacy policy" + } + } + }, + "grains": { + "title": "Grains", + "grainView": { + "notFoundWithId": "No grain found with ID %s.", + "openWithWhichIdentity": "Would you like to reveal your identity to this grain, or remain anonymous?", + "openInIncognitoMode": "Open in Incognito Mode", + "revealMyIdentity": "Reveal my identity" + }, + "grainInMyTrash": { + "explanation": "This grain is in your trash. You cannot access it unless you restore it to your main list.", + "restore": "Restore to main list" + }, + "grainInOwnersTrash": { + "explanation": "You can no longer access this grain because its owner has moved it to the trash." + }, + "grainOwnerSuspended": { + "explanation": "You can no longer access this grain because its owner's account has been suspended." + }, + "wrongIdentity": { + "explanation": "This link was intended for the user:" + }, + "requestAccess": { + "permissionDenied": "You do not have permission to access this grain.", + "requestAccessHint": "Request access", + "requestAccess": "Request Access", + "warnIdentityRevealing": "Requesting access will reveal your identity to the grain owner.", + "sendRequest": "Sending your request...", + "waitForApproving": "Your request has been sent. You will receive an email if your request is approved.", + "requestFailed": "Your request failed because: %s", + "signInPlease": "Please sign in to request access." + }, + "invalidToken": { + "invalidToken": "Invalid token: %s" + }, + "revokedShareLink": { + "linkRevoked": "Sorry, this link has been revoked." + }, + "grainTitle": { + "was": "was: %s", + "renamedFrom": "renamed from: %s" + }, + "grainDeleteButton": { + "hint": "Move to trash", + "text": "Move to trash" + }, + "grainDebugLogButton": { + "hint": "Show Debug Log", + "text": "Log" + }, + "grainBackupButton": { + "hint": "Download Backup", + "text": "Backup" + }, + "grainBackupPopup": { + "title": "Download Backup", + "warning": "Warning! Restoring this backup might not work how you expect it to.", + "processing": "Preparing backup...", + "cancelHint": "cancel", + "cancel": "Cancel", + "confirmHint": "download backup", + "confirm": "Download backup" + }, + "grainRestartButton": { + "hint": "Restart App", + "text": "Restart" + }, + "grainApiTokenButton": { + "hint": "Get webkey", + "text": "Get Webkey" + }, + "grainApiTokenPopup": { + "title": "Webkeys", + "processing": "Generating...", + "cancel": "Cancel", + "copyForExternalApp": "Copy this webkey and give it to the external app:", + "back": "Go back", + "description": "A webkey allows you to connect an external app (e.g. a mobile app) to this app.", + "labelTitle": "Label:", + "labelPlaceholder": "e.g. 'Android app'", + "roleTitle": "Role:", + "permissionTitle": "all access", + "create": "Create", + "webkeyListTitle": "Your existing webkeys:", + "revokeHint": "Revoke", + "revoke": "Revoke" + }, + "grainShareButton": { + "hint": "Share access to this grain", + "text": "Share access" + }, + "whoHasAccessPopup": { + "title": "Who has access", + "noLoggedInUsers": "No logged-in users have visited your links yet.", + "nobody": "You have granted access to nobody.", + "addedBy": "added by", + "revokeHint": "Revoke", + "revoke": "Revoke", + "hasCustomPermissions": "[has custom permissions]" + }, + "selectRole": { + "hint": "select a role" + }, + "emailInviteTab": { + "demoModeAlert": "Sharing emails cannot be sent while in demo mode. Create an account to send sharing emails, or get a shareable link instead.", + "personalMessagePlaceholder": "Type a personal message (optional)...", + "send": "Send", + "sending": "Sending...", + "success": "Successfully sent.", + "reset": "+ Send more invites", + "startOver": "<< Start over" + }, + "shareableLinkTab": { + "withRoles": "Anyone with this link:", + "withoutRoles": "Anyone with this link can access the grain.", + "labelPlaceholder": "Label (optional)", + "labelExplanation": "Use a label to remind yourself to whom you sent this unique link.", + "create": "Create", + "creating": "Generating...", + "success": "Copy this link:", + "reset": "+ Create another link", + "cancel": "Cancel" + }, + "shareWithOthers": { + "title": "Share with others", + "sendInviteTab": "Send an invite", + "shareableLinkTab": "Get shareable link", + "whoHasAccess": "See who has access" + }, + "grainSharePopup": { + "oldSharingModelDescription": "This grain uses the old sharing model. You can share it by copy/pasting the URL from the location bar", + "upgradeDescription": "You can upgrade this grain to the new model, but anyone with whom you shared this grain previously will lose access; you will have to share with them again.", + "upgradeWarning": "Upgrading cannot be undone.", + "upgrade": "upgrade", + "openInIncognitoMode": "You are viewing this grain anonymously.", + "toShareAccess": "To share access, copy this link:", + "openNonAnonymouslyHead": "For more sharing options, you must", + "openNonAnonymouslyLink": "open this grain non-anonymously", + "openNonAnonymouslyTail": ".", + "signIn": "For more sharing options, please sign in." + }, + "grainPowerboxRequest": { + "powerboxRequestHint": "Powerbox request", + "powerboxRequest": "P" + }, + "grainPowerboxOffer": { + "powerboxOfferHint": "Powerbox offer", + "powerboxOffer": "P" + }, + "grainPowerboxOfferPopup": { + "title": "Powerbox Offer", + "dismiss": "Dismiss" + }, + "share": { + "grainNotFoundWithId": "No grain found with ID %s. Maybe you need to sign in to a different account?", + "signIn": "You must be signed in to grant access to a grain." + }, + "grainlist": { + "sandstormGrainListPage": { + "introButton": { + "hint": "What is a grain?" + }, + "mainListButton": "View main list", + "trashButton": "View trash (%s)", + "restoreButton": "Restore backup...", + "search": { + "placeholder": "search" + }, + "usageInfo": { + "quota": "__count__ of __quota__ grains", + "size": "__size__ of __total__ used" + }, + "trash": { + "emptyButton": "Empty all trash", + "explanation": "(Grains will be permanently removed after 30 days in the trash. To keep a grain, restore it to the Main list.)" + }, + "noGrains": { + "notFound": "No matching grains found.", + "inTrash": "Some grains in your trash match your search.", + "trashButton": "View trash", + "empty": "Trash is empty.", + "explanation": "You don't have any grains yet.", + "hasApps": "Select an app and create your first grain.", + "hasNoApp": "Install an app to create your first grain." + }, + "moveToTrash": "Move to trash" + }, + "sandstormGrainTable": { + "bulkAction": { + "disabledHint": "To perform bulk actions, you must first select some grains in the list." + }, + "tableHeader": { + "title": "Name", + "size": "Size", + "lastUsed": "Last activity", + "ownership": "Mine/Shared", + "collaborators": "Collaborators" + }, + "tableBody": { + "was": "(was: %s)", + "renamedFrom": "(renamed from: %s)", + "new": "Unopened", + "mine": "My grain", + "shared": "Shared with me" + } + }, + "contactAutocomplete": { + "contactInputBox": { + "placeholder": "Enter email addresses or names" + } + } + } + }, + "notifications": { + "appUpdateNotificationItem": { + "title": "App updates are available:", + "appUpdates": "__name__: version __version__ is available", + "submitButton": { + "hint": "Update all of the above apps", + "text": "Apply updates" + }, + "dismissButton": { + "hint": "Ignore the above updates", + "text": "Dismiss" + } + }, + "mailingListBonusNotificationItem": { + "explanationWithBonus": "Subscribe to our announcement list and get %s bonus storage (1-2 emails per month).", + "submitButton": "Subscribe", + "dismissButton": "No thanks" + }, + "referralNotificationItem": { + "paidUser": "Get up to 30 GB bonus with the", + "unpaidUser": "Unlimited grains & up to 2 GB bonus with the", + "link": "referral program »", + "dismissButton": "Dismiss" + }, + "adminNotificationItem": { + "explanation": "You can help Sandstorm by sending us some anonymous usage stats. Click here for more info." + }, + "backgroundedGrainNotificationItem": { + "title": "__grain__ is backgrounded:", + "cancelButton": { + "hint": "Stop the background app", + "text": "Cancel" + } + }, + "identityChangesNotificationItem": { + "explanation": "We're changing the way identities work in Sandstorm. Your account may be affected. Click here to learn more." + }, + "grainActivityNotificationItem": { + "title": "__sender__ in __grain__:", + "dismissButton": { + "hint": "Dismiss this notification", + "text": "Dismiss" + } + } + }, + "powerboxBuiltins": { + "uiViewPowerboxConfiguration": { + "explanation": "with permissions:", + "fullAccess": "Full access", + "connectButton": "Connect", + "chooseHostedObjectButton": "Browse grain contents »" + }, + "ipNetworkPowerboxCard": { + "explanation": "Admin: grant all outgoing network access", + "encryptedWith": "(encrypted with %s)" + }, + "ipInterfacePowerboxCard": { + "explanation": "Admin: grant all incoming network access" + }, + "emailVerifierPowerboxCard": { + "verifyWith": "Verify e-mail addresses using %s", + "verifyWithAnyService": "Verify e-mail addresses using any login service" + }, + "identityPowerboxConfiguration": { + "explanation": "with permissions:", + "fullAccess": "Full access", + "connectButton": "Connect" + }, + "addNewVerifiedEmailPowerboxCard": { + "explanation": "Add a new address" + }, + "httpUrlPowerboxCard": { + "useUrl": "Use %s" + }, + "httpArbitraryPowerboxCard": { + "explanation": "Specify URL..." + }, + "httpArbitraryPowerboxConfiguration": { + "explanation": "Enter URL:", + "placeholder": "https://example.com", + "connectButton": "Connect" + }, + "httpOAuthPowerboxCard": { + "useService": "Use %s" + }, + "httpOAuthPowerboxConfiguration": { + "requstPermissionsFromService": "Requesting permissions from %s (see popup)." + } + }, + "styleguide": { + "title": "Sandstorm style guide", + "note": "(note: this is a work in progress.)", + "copyRules": { + "title": "Copy rules", + "rule1": "Be terse but clear. Avoid technical terms where less-technical ones will do.", + "rule2": "Capitalize the first letter of the first word of a section heading or button. Do not capitalize the second word, or anything else, unless referring to a proper noun like Google or GitHub.", + "rule3": "Use verbs for text on buttons. The button text should describe what clicking that button will do.", + "rule4": "Use nouns for text which is a link. The link text should indicate what the link will take you to.", + "rule5": "Use nouns for basically everything else, too, to communicate the information architecture. Section headings should be nouns which describe the content of the section. Labels should be nouns which describe the content of the field." + }, + "styleRules": { + "title": "Style rules", + "rule1": "Stick to a limited color palette. (TODO: add specific colors)", + "rule2": "Use typefaces no smaller than 13px for text content. Readability is important and not everyone has young eyes.", + "rule3": "Make click targets no smaller than 32px square or 26px tall if appreciably wider. Remember that due to Fitts' Law, larger click targets are easier to interact with." + }, + "forms": { + "title": "Forms", + "rule1": "Use the standard-form class where appropriate.", + "rule2": "The primary action button of a form should be at the bottom right of the form. Secondary buttons should line up to the left of that primary action button.", + "rule3": "When providing text input fields, place labels above the input, not side-by-side or inside the field as placeholder text. Place additional explanation or instructions below the input. Placeholder text should be used for examples, not instructions.", + "rule4": "Forms are generally used for transactional interactions, where the user cares about the success or failure of the application. Avoid optimistic UI in favor of multi-state UI which communicates network activity, success, and failure. A common pattern is:", + "rule4-1": "Have the default state of the form. Disable a save button until the user makes a change.", + "rule4-2": "When the user clicks an action button, start the RPC, and disable the entire form to indicate that the action is underway.", + "rule4-3": "When the RPC completes, if the RPC failed, show an error message at the top of the context over which the action applies. If the RPC succeeded, either indicate a success message (again, at the top of the context over which the action applies) or if this was a modal interaction and the completion of the RPC indicates successful completion of the workflow, dismiss the form with no additional message." + }, + "example": { + "title": "An example:", + "label": "Email", + "placeholder": "alice@example.com", + "subtext": "You might want to receive notifications.", + "submitButton": "Save", + "discardButton": "Discard" + } + }, + "admin": { + "title": "Admin", + "admin": { + "newAdmin": { + "title": "Admin panel", + "wildcardHostBroken": "WARNING: This server seems to have its WILDCARD_HOST misconfigured. Until you fix it, you will not be able to use any apps. You can read more info in the Sandstorm docs and in your browser's Javascript console. You'll need to adjust DNS, SSL/TLS certificates, or edit the sandstorm.conf file. If you see no information in the JS console, or wish to test if you have fixed the problem, reload this page to re-run the test. If you're still having problems, please file an issue.", + "websocketBroken": "WARNING: This server seems to be unable to create a WebSocket. Sandstorm may appear to run fine, but many apps will fail to run properly. Learn more. Usually this is caused by a reverse proxy like nginx or Apache that needs to be reconfigured. If you think you are seeing this message in error, please reload this page or file an issue.", + "hasSetupToken": "You are not logged in as an admin, but you do have a setup token. You can either visit the setup wizard or view the system log.", + "hasNoSetupToken": "You are not logged in as an admin. To access the admin panel, log in as an admin user or generate a token from the command line by running `sandstorm admin-token`." + }, + "newAdminRoot": { + "configuration": { + "title": "Configuration" + }, + "management": { + "title": "Management" + } + } + }, + "identityProviders": { + "name": "Login providers", + "providers": { + "emailPassLess": "E-mail (passwordless)" + }, + "subtext": "How users log in.", + "newAdminIdentity": { + "explanation": "Choose which services users may use to identify themselves. Anyone can log in, but only users you invite will be able to install apps or create grains.", + "organizationLinkPrefix": "To configure organization membership and settings, see", + "organizationLink": "organization settings", + "organizationLinkPostfix": "." + }, + "adminIdentityProviderConfigureEmail": { + "title": "Email login configuration", + "error": "Failed to save changes: %s", + "warning": "Note: to use email login, you'll need to configure email delivery after this.", + "explanation": "Email login has no additional configuration options.", + "saveButton": "Save", + "enableButton": "Enable", + "cancelButton": "Cancel", + "disableButton": "Disable" + }, + "googleLoginSetupInstructions": { + "explanation": "First, you'll need to get a Google Client ID. Follow these steps:", + "step1": "Visit https://console.developers.google.com/", + "step2": "\"Create Project\", if needed. Wait for Google to finish provisioning.", + "step3": "On the left sidebar, go to \"Credentials\" and, on the right, \"OAuth consent screen\". Make sure to enter an email address and a product name, and save.", + "step4": "On the left sidebar, go to \"Credentials\". Click the \"Create credentials\" button, then select \"OAuth client ID\" as the type.", + "step5": "Select \"Web application\" as your application type.", + "step6": "Set Authorized Javascript Origins to: %s", + "step7": "Set Authorized Redirect URI to: %s/_oauth/google", + "step8": "Finish by clicking \"Create\"." + }, + "adminIdentityProviderConfigureGoogle": { + "title": "Google login configuration", + "formerBaseUrlWarning": "This server moved from __former__ to __current__. You'll need to visit https://console.developers.google.com/ and update the \"Authorized Javascript Origins\" and \"Authorized Redirect URI\" for this Client ID to include the values below.", + "error": "Failed to save changes: %s", + "explanation": "Then, copy over your Client ID and Client secret below:", + "clientId": "Client ID:", + "clientSecret": "Client secret:", + "saveButton": "Save", + "enableButton": "Enable", + "cancelButton": "Cancel", + "disableButton": "Disable" + }, + "githubLoginSetupInstructions": { + "explanation": "First, you'll need to get a Github Client ID and Client secret. Follow these steps:", + "step1": "Visit https://github.com/settings/applications/new", + "step2": "Set Homepage URL to: %s", + "step3": "Set Authorization callback URL to: %s_oauth/github" + }, + "adminIdentityProviderConfigureGitHub": { + "title": "GitHub login configuration", + "formerBaseUrlWarning": "This server moved from __former__ to __current__. You'll need to visit https://github.com/settings/developers and update the Homepage URL and Authorization callback URL for this application to the values below.", + "explanation": "Then, copy over your Client ID and Client secret below:", + "clientId": "Client ID:", + "clientSecret": "Client secret:", + "saveButton": "Save", + "enableButton": "Enable", + "cancelButton": "Cancel", + "disableButton": "Disable" + }, + "adminIdentityProviderConfigureLdap": { + "title": "LDAP login configuration", + "error": "Failed to save changes: %s", + "url": { + "label": "LDAP server URL:", + "subtext": "e.g. ldap://ldap.example.com:389. Use port 636 for SSL." + }, + "searchBindDn": { + "label": "Bind user DN", + "subtext": "The DN to bind as when searching for a user in the tree, e.g. cn=admin,ou=users,dc=example,dc=com. Optional, but needed if your server doesn't allow unauthenticated searches." + }, + "searchBindPassword": { + "label": "Bind user password", + "subtext": "Optional, needed if specifying bind DN above." + }, + "base": { + "label": "Base DN", + "subtext": "The root object under which to search for user account nodes, e.g. ou=users,dc=example,dc=com" + }, + "searchUsername": { + "label": "LDAP username attribute", + "subtext": "The LDAP attribute on a user object which represents the user's username (what they will enter in the username field when signing in)." + }, + "nameField": { + "label": "LDAP given name attribute", + "subtext": "The LDAP attribute on a user object which represents the user's full display name." + }, + "emailField": { + "label": "LDAP email attribute", + "subtext": "The LDAP attribute on a user object which represents the user's email address." + }, + "filter": { + "label": "Additional LDAP filter criteria", + "subtext": "An optional LDAP query fragment that will be included in the user search. This is not commonly used. See RFC2254." + }, + "caCert": { + "label": "LDAP CA certificate", + "placeholder": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----", + "subtext": "This is only necessary if your server supports SSL and is using a private CA not in the common trusted set. Note that it does NOT work to enter the LDAP server's own certificate here -- it must be the certificate of a CA which has signed the LDAP server's certificate." + }, + "saveButton": "Save", + "enableButton": "Enable", + "cancelButton": "Cancel", + "disableButton": "Disable" + }, + "adminIdentityProviderConfigureSaml": { + "title": "SAML login configuration", + "explanation": "Your SAML IDP should be configured to return a persistent nameID. In addition, if you are not using Active Directory, you must configure your IDP to provide two extra attributes, email and displayName.", + "serviceUrl": "The Service URL of this server is: %s", + "logoutUrl": "The Service Logout URL of this server is: %s", + "metadataUrlAt": "If your SAML IDP supports reading the service provider metadata from a URL, then you can point it at: __text__", + "error": "Failed to save changes: %s", + "entryPoint": { + "label": "SAML provider entry point URL:", + "placeholder": "https://YOUR_SAML_PROVIDER.com/sso/saml" + }, + "logout": { + "label": "SAML provider logout URL (optional):", + "placeholder": "https://YOUR_SAML_PROVIDER.com/sso/saml/SingleLogoutService" + }, + "publicCert": { + "label": "SAML cert for above provider:", + "placeholder": "base64 encoded cert (e.g. MIID...8F==)" + }, + "entityId": { + "label": "Entity ID:" + }, + "saveButton": "Save", + "enableButton": "Enable", + "cancelButton": "Cancel", + "disableButton": "Disable" + }, + "adminIdentityProviderTable": { + "title": "Login provider", + "status": "Status" + }, + "adminIdentityRow": { + "enabled": "Enabled", + "disabled": "Not enabled", + "baseUrlChanged": { + "explanation": "Disabled due to BASE_URL change", + "reconfigureButton": "reconfigure" + }, + "configureButton": { + "hint": "Configure %s login", + "text": "Configure" + } + } + }, + "organization": { + "name": "Organization settings", + "subtext": "Smoother onboarding and collaboration for larger teams.", + "organizationSettingsBlurb": { + "explanation": "Sandstorm allows you to define an organization. You can automatically apply some settings to all members of your organization. Users within the organization will automatically be able to log in, install apps, and create grains." + }, + "newAdminOrganization": { + "success": "Saved changes.", + "error": "Failed to save changes: %s", + "membership": { + "title": "Organization membership", + "emailToggle": { + "label": "Users authenticated via email address", + "subtext": "Note: disabled because email login is not configured." + }, + "emailDomain": { + "label": "Domain:", + "subtext": "Users with an email address at this domain will be members of this server's organization." + }, + "gappsToggle": { + "label": "Users authenticated via Google Apps for Work", + "subtext": "Note: disabled because Google login is not configured." + }, + "gappsDomain": { + "label": "Domain:", + "subtext": "Users with a Google Apps for Work account under this domain will be members of this server's organization." + }, + "ldapToggle": { + "label": "Users authenticated via LDAP", + "subtext": "Note: disabled because LDAP login is not configured." + }, + "samlToggle": { + "label": "Users authenticated via SAML", + "subtext": "Note: disabled because SAML login is not configured." + } + }, + "settings": { + "title": "Organization settings", + "disallowGuests": { + "label": "Disallow collaboration with users outside the organization.", + "subtext": "Users will be required to log in as a member of your organization to view sharing links. Guest access will be disabled." + }, + "shareContacts": { + "label": "Make all organization users visible to each other", + "subtext": "This setting automatically adds users within the organization to each other's contact list so that they can share grains with each other. Disable this if you have some users whose identity should stay hidden from other users." + } + }, + "saveButton": "Save" + } + }, + "emailConfig": { + "name": "Email configuration", + "subtext": "How email gets sent to users.", + "newAdminEmailConfig": { + "outbound": { + "title": "Outbound email", + "warning": "Email is unconfigured. Email-related features like email login, notifications, sharing invitations, and requesting access will be unavailable until you configure email." + }, + "howItWorks": { + "title": "How Sandstorm uses email", + "explanation": "Sandstorm sends email notifications, and Sandstorm apps can send email notifications, too. Every app receives a unique email address, so Sandstorm needs to send email from a variety of \"From:\" addresses. Therefore, Gmail SMTP won't work, but there are other free services. See more info in the docs." + }, + "success": "Saved changes.", + "error": "Failed to save changes: %s", + "address": { + "hostname": "SMTP host", + "port": "Port", + "subtext": "Use port 25 for SMTP (unencrypted or with StartTLS), port 465 for TLS-encrypted SMTPS." + }, + "username": { + "label": "Username (optional)" + }, + "password": { + "label": "Password (optional)" + }, + "returnAddress": { + "label": "Sandstorm server's own email address", + "subtext": "Sandstorm will send login emails, notifications of granted access requests, and other emails from this address. It will also use this address in the SMTP envelope." + }, + "submitButton": "Save Configuration", + "testButton": "Test", + "disableButton": "Disable email" + }, + "emailTestPopup": { + "title": "Send a test email", + "testAddress": { + "label": "Send test mail to:" + }, + "pending": "Sending...", + "submitButton": "Send test email", + "closeButton": "Close" + }, + "emailDisablePopup": { + "title": "Really disable email?", + "explanation": "This will disable all outbound email delivery for this server, including sharing via email, email token login (if enabled), and email notifications to users.", + "disableButton": "Disable email", + "closeButton": "Close" + } + }, + "personalization": { + "name": "Personalization", + "subtext": "Customize a splash page, terms of service, privacy policy, etc.", + "newAdminPersonalization": { + "serverTitle": { + "label": "Server title:", + "subtext": "The name of this server, as used when communicating with users." + }, + "splashUrl": { + "label": "Splash URL (experimental):", + "subtext": "This web page will be displayed in the background behind the login dialog (the home page when logged out). For security reasons, the page must be hosted within this Sandstorm server's wildcard host (otherwise it will be blocked by Content-Security-Policy). We suggest using a static web publishing app like Hacker CMS to host content.WARNING: This feature is experimental; in particular the style and positioning of the login box is subject to change without notice. Please let us know if you'd like to see it stabilize." + }, + "signupDialog": { + "label": "Signup dialog:", + "subtext": "This text will be displayed to users who click on signup links." + }, + "termsOfService": { + "label": "Terms of service URL:", + "placeholder": "https://example.com/tos", + "subtext": "If provided, new users will be required to agree to the linked terms of service." + }, + "privacyPolicy": { + "label": "Privacy policy URL:", + "placeholder": "https://example.com/privacy", + "subtext": "If provided, new users will be required to agree to the linked privacy policy." + }, + "whitelabeling": { + "title": "Whitelabeling", + "logo": { + "label": "Custom logo on sign-in dialog", + "resetButton": "Use default", + "uploadButton": "Upload logo" + }, + "hideTroubleshooting": { + "label": "Hide troubleshooting button" + }, + "hideAbout": { + "label": "Hide \"About Sandstorm\" links" + }, + "hideSendFeedback": { + "label": "Hide \"Send feedback\" link" + }, + "useServerTitleForHomeText": { + "label": "Use server title (above) for home link", + "subtext": "If enabled, changes the default label \"Sandstorm\" on the link at the very top left to match whatever you specified for the Server title above." + }, + "customLoginProviderName": { + "label": "Custom login button text", + "subtext": "Replaces the text \"with LDAP\" and \"with SAML\" on the login page with the specified text." + } + }, + "saveButton": "Save" + } + }, + "preinstalledApps": { + "name": "Pre-installed apps", + "subtext": "Choose apps to pre-install for new users.", + "newAdminPreinstalledApps": { + "explanation": "Apps you configure on this page to be pre-installed will automatically be installed (show under /apps) for new users.", + "productivitySuite": { + "label": "Productivity Suite", + "subtext": "We recommend pre-installing these core apps that are useful to most users." + }, + "systemSuite": { + "label": "System apps", + "subtext": "We recommend pre-installing these system apps that greatly enhance the abilities of Sandstorm." + }, + "allApps": { + "label": "All apps on market", + "subtext": "The checked apps below will be installed by default for all new users.", + "lessButton": "Show fewer apps", + "moreButton": "Show %s more apps" + }, + "saveButton": "Save" + }, + "_appRow": { + "download": { + "success": "Downloaded", + "failed": "Failed" + } + } + }, + "appSources": { + "name": "App sources", + "subtext": "Where to look for apps and app updates.", + "newAdminAppSources": { + "appMarketUrl": { + "label": "App market URL", + "subtext": "The \"Install...\" button on the Apps page will link to this URL." + }, + "enableAppUpdates": { + "label": "Enable app update notifications", + "subtext": "Updates to apps will be automatically downloaded by the Sandstorm server daily and notifications sent to users asking if they want to update their installed apps." + }, + "appIndexUrl": { + "label": "App index URL", + "subtext": "This is the URL that the Sandstorm server will check to learn about app updates." + }, + "saveButton": "Save", + "restoreButton": "Restore defaults" + } + }, + "networking": { + "name": "Networking", + "altName": "Security", + "subtext": "Control how the network is accessed.", + "newAdminNetworking": { + "ipBlacklist": { + "label": "Server-side request IP blacklist:", + "subtext": "Users will be prohibited from making requests to these IP addresses. This includes making a request from an app, downloading an SPK file from a user-provided URL, etc. You may specify one IP address or network (in CIDR notation, e.g. \"127.0.0.0/8\") per line. The default value includes standard local and private network addresses. Note that when an HTTP proxy is in use, this setting may be ignored; the proxy must implement its own blacklist." + }, + "saveButton": "Save", + "restoreButton": "Restore defaults" + } + }, + "users": { + "name": "Users", + "subtext": "Manage all users on this Sandstorm installation." + }, + "userAccounts": { + "newAdminUserTableRow": { + "admin": { + "hint": "Admin", + "cap": "A" + }, + "user": { + "hint": "User", + "cap": "U" + }, + "visitor": { + "hint": "Visitor", + "cap": "V" + }, + "unknownIdentity": "Unknown credential", + "unknownIdentifier": "unknown identifier", + "manageButton": "Manage" + }, + "newAdminUserTable": { + "header": { + "name": "Name", + "credentials": "Credentials", + "created": "Created", + "lastActive": "Last Active", + "actions": "Actions" + }, + "inviteLink": "Invite new user", + "notFound": "No users matched your filter.", + "processing": "Loading users..." + }, + "newAdminUsers": { + "search": { + "placeholder": "search" + }, + "filter": { + "explanation": "Show:", + "admin": "Admin", + "user": "User", + "visitor": "Visitor" + } + } + }, + "userDetails": { + "newAdminUserDetailsIdentityTableRow": { + "profilePicture": { + "label": "Profile picture" + }, + "handle": { + "title": "Handle", + "emails": "Emails" + }, + "pronouns": { + "hint": "Pronouns", + "label": "Pronouns" + }, + "emails": { + "hint": "Emails", + "label": "Emails", + "primary": "Primary", + "verified": "Verified", + "unverified": "Unverified", + "notFound": "No known emails." + }, + "properties": { + "login": "Can log in", + "org": "Org. member" + }, + "unkonwn": { + "profilePicture": { + "cell": "(unknown name)" + }, + "service": { + "hint": "unknown service", + "label": "(unknown service)", + "cell": "(unknown name)" + }, + "handle": { + "cell": "(unknown handle)" + }, + "pronouns": { + "cell": "(unknown pronouns)" + }, + "created": { + "cell": "unknown creation date" + }, + "lastActive": { + "cell": "unknown activity date" + } + } + }, + "newAdminUserDetailsIdentityTable": { + "header": { + "credential": "Credential", + "created": "Created", + "lastActive": "Last Active", + "properties": "Properties" + } + }, + "newAdminUserDetails": { + "role": { + "title": "Role", + "admin": { + "label": "Admin", + "explanation": "Manages all accounts. Can install apps, create grains, and administer the server.", + "isAdmin": "Current role", + "isNotAdmin": "Promote to admin" + }, + "user": { + "label": "User", + "explanation": "Can install apps and create grains.", + "isUser": "Current role", + "isAdmin": "Demote to user", + "isNotUser": "Promote to user" + }, + "visitor": { + "label": "Visitor", + "explanation": "Can use and re-share shared grains, but cannot create grains of their own nor install apps.", + "isVisitor": "Current role", + "isNotVisitor": "Demote to visitor" + } + }, + "credentials": { + "title": "Credentials" + }, + "profile": { + "title": "Profile" + }, + "status": { + "title": "Status", + "deleting": "Suspended - Pending deletion %s", + "suspended": "Suspended", + "active": "Active", + "unsuspendButton": "Unsuspend account", + "suspendButton": "Suspend account", + "deleteButton": "Delete account" + }, + "deletePopup": { + "title": "Delete %s", + "explanation": "You are about to mark %s's account for deletion. Once marked for deletion, this account will be suspended, and admins will have 7 days to cancel the pending deletion by returning to this page and clicking the \"Unsuspend Account\" button. %s will not be able to stop this suspension/deletion.", + "detail": "After 7 days, %s's account will be permanently deleted. Deleting this account will:", + "detail1": "Permanently delete any grains %s created", + "detail2": "Revoke all sharing links %s created", + "detail3": "Remove %s from all users' contact lists", + "detail4": "Delete all credentials owned by this account (except credentials also associated with another account).", + "deleteButton": "Delete account", + "cancelButton": "Cancel" + }, + "suspendPopup": { + "title": "Suspend %s", + "detail": "Suspending this user account will:", + "detail1": "Prevent any grains created by %s from being opened", + "detail2": "Disable any sharing links created by %s", + "detail3": "This also applies to all credentials owned by this account (except credentials associated with another account)", + "suspendButton": "Suspend account", + "cancelButton": "Cancel" + }, + "loading": "Loading user data..." + } + }, + "userInvite": { + "newAdminUserInviteLink": { + "explanation": "You can invite others to create accounts on your server by giving them an account creation link. People you invite will be granted User permission and be able to install apps and create grains of their own. Alternatively, if you want to share a specific grain with someone, you can do that within the grain's \"Share Access\" menu.", + "title": "Create a link", + "invite": { + "explanation": "This will create an account creation link which you can send to someone.", + "createButton": "Create link" + } + }, + "newAdminUserInviteEmail": { + "title": "Send an email", + "emailWarning": { + "explanation": "Email has not been configured, so sending invites via email is disabled.", + "configureLink": "Configure email" + }, + "explanation": "This will create a link and send it in an email.", + "to": { + "label": "To:", + "placeholder": "alice@email.com\nbob@example.com", + "subtext": "Email addresses, one per line." + }, + "subject": { + "label": "Subject:" + }, + "body": { + "label": "Body:", + "subtext": "$KEY will be replaced with the newly-generated link." + }, + "sendButton": "Send invite" + }, + "newAdminUserInvite": { + "title": "Invite" + } + }, + "systemStatus": { + "name": "System log", + "subtext": "View Sandstorm's debug log.", + "newAdminLogContents": { + "ellipsis": "..." + }, + "newAdminStatus": { + "downloadButton": "Download full log" + } + }, + "stats": { + "name": "Statistics", + "subtext": "View usage statistics for this server.", + "header": { + "date": "date", + "users": "users", + "grains": "grains", + "appName": "App name", + "owners": "owners", + "sharedUsers": "sharedUsers", + "daily": "daily", + "weekly": "weekly", + "monthly": "monthly", + "forever": "forever" + }, + "body": { + "notFound": "There are no stats recorded yet.", + "loading": "Loading..." + }, + "newAdminStats": { + "share": { + "title": "Publish anonymously to Sandstorm dev team", + "explanation": "We'd like to know how many Sandstorm users there are, to make graphs and such. Is it okay to send the numbers on this page once a day to the Sandstorm team, so that we can add them to the totals? Any stats you send are anonymous.", + "enableButton": "Send anonymous stats", + "disableButton": "Don't send", + "control": { + "explanation": "The developers of Sandstorm like to know how many Sandstorm users there are, to make graphs and such. You can help us by opting in to sharing the numbers on this page once a day to the Sandstorm team, so that we can add them to our totals. Any stats shared are submitted anonymously.", + "label": "Anonymous stats reporting to sandstorm.io:", + "enabled": "Enabled", + "disabled": "Disabled", + "disableButton": "Disable", + "enableButton": "Enable" + } + }, + "json": { + "title": "View as JSON", + "explanation": "If you want to integrate Sandstorm stats with an internal stats tool, use this secret link to retrieve the tables below as JSON. You can revoke the current link at any time by generating a new link.", + "label": "Stats JSON link:", + "regenerateButton": "Generate new link" + }, + "userGrains": { + "title": "Users and grains", + "current": "Right now: __users__ users, __grains__ grains", + "today": "Today: __users__ users, __grains__ grains" + }, + "apps": { + "title": "Apps", + "label": "Select a date:" + } + } + }, + "maintenanceMessage": { + "name": "Maintenance message", + "subtext": "Communicate potential downtime to users.", + "newAdminMaintenance": { + "explanation": "You can set a maintenance message which will be shown to all users in the menu bar, on the top right. This is useful for announcing scheduled maintenance so users can be prepared to tolerate downtime. If the message text is empty, no message will be displayed.", + "variables": "You may use the following variables in the \"Message text\" field, which will be automatically substituted with useful values:", + "variable1": "$TIME : The time component of \"Maintenance time\", converted to the user's local time (eg. \"1:15:45 PM\")", + "variable2": "$DATE : The date component of \"Maintenance time\", converted to the user's local time (eg. \"6/19/2015\")", + "variable3": "$IN_COUNTDOWN : An active countdown until \"Maintenance time\" (eg. \"in 3 days\" or \"in 1 minute\"). Displays \"any moment\" at the time specified in \"Maintenance time\" and then disappears after an hour.", + "messageText": { + "label": "Message text:", + "subtext": "" + }, + "maintenanceTime": { + "label": "Maintenance time:", + "subtext": "The time you intend to start performing maintenance, formatted like \"%s\"." + }, + "url": { + "label": "Link URL (optional):", + "subtext": "If given, the maintenance message will render as a clickable link to the provided URL." + }, + "saveButton": "Set message" + } + }, + "networkCapabilities": { + "name": "Network capabilities", + "subtext": "Manage direct network access for grains.", + "newAdminNetworkCapabilitiesTableCapabilityRow": { + "adminAccount": "Admin account %s", + "unknownGranter": "Unknown granter", + "anyone": "Anyone with the token", + "unknownRecipient": "Unknown recipient", + "revoked": "Revoked", + "revokeButton": "Revoke" + }, + "newAdminNetworkCapabilitiesTable": { + "header": { + "grantBy": "Granted by", + "grantTo": "Granted to", + "grantTime": "Time", + "actions": "Actions" + }, + "notFound": "No capabilities found." + }, + "newAdminNetworkCapabilitiesSection": { + "filter": { + "label": "Showing:", + "active": "Active (%s)", + "revoked": "Revoked (%s)" + } + }, + "newAdminNetworkCapabilities": { + "networkCaps": "Outbound network access", + "networkCapsTls": "TLS-encrypted outbound network access", + "interfaceCaps": "Inbound network access" + } + }, + "hostingManagement": { + "name": "Hosting management", + "newAdminHostingManagement": { + "explanation": "This feature is experiemental and only works with the LDAP login provider at the moment. Use with caution.", + "quotaEnabled": { + "label": "Enable quota for users", + "subtext": "Enable Quota management on this server. This requires both SAML and LDAP to be configured, and email addresses will be used to match between the two." + }, + "quotaLdapAttribute": { + "label": "LDAP quota attribute", + "subtext": "This is the attribute name that will be looked up from LDAP to determine quota for a user." + }, + "billingPromptUrl": { + "label": "Billing prompt url", + "subtext": "This is the url that will be used in the billing prompt." + }, + "saveButton": "Save", + "restoreButton": "Restore defaults" + } + } + }, + "people": { + "title": "People" + }, + "sharingLinks": { + "title": "Sharing Links" + }, + "apps": { + "title": "Apps", + "appList": { + "uninstallingHint": "Done uninstalling", + "doneUninstalling": "Done uninstalling", + "uninstallHint": "Uninstall an app", + "uninstallButton": "Uninstall...", + "uploadApp": "Upload app...", + "searchHint": "Search", + "search": "search", + "mostUsed": "Most used", + "allApps": "All apps", + "install": "Install...", + "fromMarket": "from app market", + "uninstall": "Uninstall", + "noMatchApp": "You have no installed apps with that name. Try searching on the app market »", + "unauthorized": "Unauthorized! :(", + "unauthorizedText": "This is a private Sandstorm server. In order to install apps, you need to be invited by the admin. The admin can invite you from the admin panel.", + "intro": "Welcome!
Create documents, chat rooms, blogs, and more.

Get started by installing an app.", + "doneButton": "Got it" + }, + "install": { + "sandstormAppInstallPage": { + "title": "Install app", + "error": { + "title": "Failed to install app", + "retryButton": "Try Again" + }, + "stepWait": { + "title": "Waiting for write access..." + }, + "stepDownload": { + "title": "Downloading...", + "cancelButton": "Cancel" + }, + "stepVerify": { + "title": "Verifying..." + }, + "stepUnpack": { + "title": "Unpacking..." + }, + "stepAnalyze": { + "title": "Analyzing..." + }, + "stepConfirm": { + "upgrade": { + "explanation": "You have an older version of this app installed. Do you want to upgrade?", + "button": "Upgrade %s" + }, + "downgrade": { + "explanation": "You already have a newer version of this app installed. Are you sure you want to revert to this older version?", + "button": "Downgrade %s" + }, + "install": { + "button": "Install %s" + } + }, + "stepRun": { + "title": "%s installed", + "explanation": "Installation complete.", + "appDetailsLink": "Go to %s" + }, + "stepDelete": { + "title": "Deleting", + "explanation": "Server is currently deleting this app..." + }, + "stepFailed": { + "title": "Failed", + "explanation": "Installation failed: %s" + } + } + }, + "appDetails": { + "sandstormAppDetailsPage": { + "newerVersion": { + "explanation": "Some of your files were made with a newer version of this app. They will keep using the newer version, as going backwards could break them." + }, + "olderVersion": { + "explanation": "Some of your grains were made with an older version of this app. Upgrade them?", + "upgradeButton": "Upgrade Grains" + }, + "search": { + "hint": "Search", + "placeholder": "search" + }, + "trash": { + "explanation": "Grains will be permanently removed after 30 days in the trash. To keep a grain, restore it to the Main list." + }, + "noGrains": { + "notFound": "No matching grains found.", + "inTrash": "Some grains in your trash match your search.", + "trashButton": "View trash" + } + }, + "sandstormAppDetails": { + "websiteLink": "Website", + "appMarketLink": "App market", + "sourceCodeLink": "Source", + "bugReportLink": "Report issue", + "mainListButton": "View main list", + "trashButton": "View trash", + "uninstallButton": "Uninstall", + "restoreButton": "Restore grain backup...", + "version": { + "label": "Version" + }, + "lastUpdate": { + "label": "Last Updated", + "unknown": "" + }, + "publisher": { + "label": "Signed by" + }, + "hasFingerprint": "The app publisher has proven using PGP that they control these accounts.", + "noFingerprint": "This app has no signature from its creator; its author cannot be verified." + } + } + }, + "accounts": { + "title": "Account settings", + "accountSettings": { + "sandstormAccountSettings": { + "title": "Account", + "identities": { + "title": "My Profile", + "success": "Success: %s", + "linkedCredentials": "Linked credentials", + "linkNewIdentity": { + "title": "Link new credential:", + "cancelButton": "Cancel", + "linkButton": "Link new credential", + "logoutAllButton": "Log out all other sessions" + }, + "email": { + "title": "Primary e-mail address for service-related notifications", + "primary": "Primary", + "primaryButton": "Set as primary", + "notFound": " No verified emails! ", + "addNew": "Add new e-mail address" + } + }, + "billing": { + "title": "Billing" + }, + "deleteAccount": { + "title": "Delete account", + "button": "Delete your account" + }, + "deletePopup": { + "title": "Delete your account", + "explanation": "You are about to mark your account for deletion. Once marked for deletion, your account will be suspended, and you will have 7 days to cancel the pending deletion by logging back into your account.", + "results": "After 7 days, your account will be permanently deleted. Deleting your account will:", + "result1": "Permanently delete any grains you created", + "result2": "Revoke all sharing links you created", + "result3": "Remove you from all users' contact lists", + "result4": "Delete all credentials owned by your account (except credentials also associated with another account).", + "confirm": "Please type \"delete my account\" below to confirm.", + "goodbye": "We're sorry to see you go. Feel free to share any feedback you have with the server admin.", + "feedbackPlaceholder": "Optional", + "deleteButton": "Delete account", + "cancelButton": "Cancel" + } + }, + "sandstormAccountsFirstSignIn": { + "title": "Confirm your profile", + "success": "Success: %s" + }, + "accountSuspended": { + "title": "This account has been suspended by you.", + "deletedIn": "This account will be deleted in %s. Would you like to cancel deletion and restore this account?", + "suspended": "This account is suspended and all of its grains and shares are disabled. Would you like to restore this account?", + "restoreButton": "Restore account", + "logoutButton": "Logout" + }, + "_accountProfileEditor": { + "picture": { + "label": "Profile picture:", + "uploadButton": "Upload new picture", + "subtext": "This picture will be shown to other users to help identify you.", + "maxSize": "512x512px, 64KiB max." + }, + "fullName": { + "label": "Full name:", + "placeholder": "full name", + "subtext": "Your regular first and last name, as you would like it displayed to others. This does not have to be your real name." + }, + "handle": { + "label": "Handle:", + "placeholder": "handle", + "hint": "Handles must start with a lower-case letter and contain only lower-case letters, digits, and underscores.", + "subtext": "To be displayed in apps that use handles. Your handle must start with a letter and contain only lower-case letters, digits, and underscores." + }, + "emailList": { + "label": "E-mail:" + }, + "pronoun": { + "label": "Preferred pronoun:", + "neutral": "they (unspecified)", + "male": "he/him (male)", + "female": "she/her (female)", + "robot": "it (robot)" + }, + "agreedToTerms": { + "agreeTo": " I have read and agree to the", + "termsOfServiceLink": "Terms of Service", + "and": " and ", + "privacyLink": "Privacy policy" + }, + "saveButton": "Save", + "continueButton": "Continue", + "cancelButton": "Cancel" + } + }, + "loginButtons": { + "icon": { + "info": "i" + }, + "loginButtons": { + "createButton": "Create account", + "signInButton": "Sign in" + }, + "accountButtons": { + "loading": "Loading..." + }, + "_loginButtonsLoggedInDropdown": { + "revealIdentity": "Reveal identity", + "title": "Account", + "sendFeedback": "Send feedback", + "referralProgram": "Referral program", + "signOutButton": "Sign out" + }, + "_loginButtonsLoggedOutDropdown": { + "demo": { + "title": "Create account", + "explanation": "Your demo data will be transferred to your new account." + }, + "title": "Sign in", + "shared": { + "explanation": "Sign in so that collaborators know who you are." + }, + "signInButton": "Sign in", + "anonymousButton": "Stay anonymous" + }, + "oauthLoginButton": { + "with": "with " + }, + "devLoginForm": { + "label": "with a Dev account", + "hint": "unexpand", + "alice": "Alice (admin)", + "bob": "Bob", + "carol": "Carol", + "dave": "Dave", + "customPlaceholder": "Eve", + "customButton": "Custom" + }, + "loginButtonsList": { + "configure": "configure login", + "troubleshooting": "troubleshooting", + "about": "about Sandstorm" + }, + "emailLoginForm": { + "description": "with e-mail", + "sendButtonText": "send Login Email" + }, + "emailAuthenticationForm": { + "hint": "Passwordless E-mail Login allows you to log in using an e-mail address. No password is required; instead, every time you log in, we send you a new email confirmation code. You will only need to log in once per device.", + "token": { + "explanation": "We've sent a login e-mail to %s. It may take a few moments to show up in your inbox.", + "label": "Enter your token:", + "confirmButton": "Confirm", + "cancelButton": "Cancel" + }, + "disabled": "A server admin must enable email authentication before you can confirm your email." + }, + "ldapLoginForm": { + "username": { + "label": "username", + "hint": "This is your LDAP username. It will be the name that you normally use to log in to other internal services at your company." + }, + "password": { + "label": "password", + "hint": "This is your LDAP password. It will be the password that you normally use to log in to other internal services at your company." + }, + "loginButton": "Log in" + }, + "_loginButtonsSeparator": { + "or": "or" + } + }, + "identity": { + "identityLoginInterstitial": { + "title": "Logging in...", + "loading": "loading...", + "logoutButton": "Log out", + "cancelButton": "Cancel", + "goBackButton": "Go back", + "create": "creating account...", + "createFailed": "Failed to create account.", + "loginAccount": "logging in to account...", + "loginAccountFailed": "Account login failed", + "loginToken": "logging back in to account...", + "loginTokenFailed": "Failed to resume session.", + "link": "linking credential to account...", + "success": "Unlinked credential from %s", + "explanation": "You have authenticated as this credential", + "warning": "but that is not a login credential for any account.", + "moreIdentities": "The following credentials can log in to your credential's accounts:", + "unlinkButton": { + "hint": "Unlink your credential from this account.", + "text": "unlink" + }, + "unlink": { + "explanation": "Are you sure you want to unlink your credential from the account of %s?", + "unlinkButton": "Unlink", + "cancelButton": "Cancel" + } + }, + "identityManagementButtons": { + "toggleLogin": { + "label": "Allow this credential to log in to your account.", + "unlinkButton": "Unlink" + } + }, + "loginIdentitiesOfLinkedAccounts": { + "show": { + "explanation": "This credential is shared with other accounts. Those accounts have the following login credentials:", + "unlinkButton": "unlink", + "hideButton": "hide other accounts" + }, + "hide": { + "explanation": "This credential is shared with at least one other account.", + "showButton": "show other accounts" + } + }, + "identityCardSignInButton": { + "hint": "sign in as %s", + "title": "Sign in" + }, + "accountCardSignInButton": { + "reSign": "To sign out of your current account and sign in as this user, choose how to sign in:", + "howToSignIn": "Choose how to sign in:" + } + }, + "tokenTemplates": { + "_emailTokenError": { + "title": "Invalid authentication code. If it has been more than 15 minutes, the token has expired, otherwise you may have simply mistyped it." + }, + "_emailLinkIdentityError": { + "title": "To confirm your email address, you must be logged in as the account that created this link." + }, + "addNewVerifiedEmailPowerboxConfiguration": { + "email": { + "placeholder": "enter email address", + "selectButton": "Select", + "sendButton": "Send confirmation email" + }, + "sendingTo": "Sending to %s", + "resetButton": "Try a different address", + "token": { + "placeholder": "enter your token", + "confirmButton": "Confirm" + }, + "verifying": "Verifying token..." + } + } + }, + "wizard": { + "setupWizardLoading": { + "loading": "Loading..." + }, + "setupWizardProgressBar": { + "identityProviders": "Login providers", + "organization": "Organization", + "email": "Email", + "preinstalledApps": "Pre-installed apps", + "adminAccount": "Admin account" + }, + "setupWizardHelpFooter": { + "needHelp": "Need help?", + "documentation": "Documentation", + "emailSupport": "Email support", + "systemLog": "System Log" + }, + "setupWizardSystemLog": { + "header": { + "label": "System log", + "downloadButton": "Download log" + }, + "permissionDenied": "You cannot view the system log because you are not logged in as an admin and you do not have a setup token." + }, + "setupWizardIntro": { + "title": "Welcome to Sandstorm!", + "revisitWizardLink": "Revisit setup wizard", + "noIdpEnabled": { + "explanation": "This Sandstorm server has been set up previously, but due to a change in sandstorm.conf, you'll need to configure login providers again." + }, + "idpEnabled": { + "explanation": "This Sandstorm server is ready to roll. You can adjust server settings, including which providers are enabled and how Sandstorm sends email.", + "turnUserIntoAdmin": "You can also turn an existing user into an administrator.", + "isAdmin": { + "adminPanelLink": "Proceed to admin panel", + "suButton": "Give yourself admin privileges " + }, + "isNotAdmin": { + "explanation": "To make an account into an admin account, please sign in:", + "signInLabel": "Sign in", + "signInButton": "Sign in to become admin" + } + }, + "setupButton": "Begin Sandstorm Setup" + }, + "setupWizardIdentity": { + "title": "Login providers", + "explanation1": "To use Sandstorm, you need to create a user account. Every user account on Sandstorm is backed by an login provider. You'll use this login provider to authenticate as the first administrator of this Sandstorm install.", + "explanation2": "Configure the login provider or providers you wish to enable.", + "nextButton": "Next", + "backButton": "Back" + }, + "setupWizardOrganization": { + "title": "Organization settings", + "error": "Failed to save change: %s", + "membership": { + "title": "Organization membership", + "emailToggle": { + "label": "Users authenticated via email address", + "subtext": "Note: disabled because email login is not configured." + }, + "emailDomain": { + "label": "Domain:", + "subtext": "Users with an email address at this domain will be members of this server's organization." + }, + "gappsToggle": { + "label": "Users authenticated via Google Apps for Work", + "subtext": "Note: disabled because Google login is not configured." + }, + "gappsDomain": { + "label": "Domain:", + "subtext": "Users with a Google Apps for Work account under this domain will be members of this server's organization." + }, + "ldapToggle": { + "label": "Users authenticated via LDAP", + "subtext": "Note: disabled because LDAP login is not configured." + }, + "samlToggle": { + "label": "Users authenticated via SAML", + "subtext": "Note: disabled because SAML login is not configured." + } + }, + "settings": { + "title": "Organization settings", + "disallowGuests": { + "label": "Disallow collaboration with users outside the organization.", + "subtext": "Users will be required to log in as a member of your organization to view sharing links. Guest access will be disabled." + }, + "shareContacts": { + "label": "Make all organization users visible to each other", + "subtext": "This setting automatically adds users within the organization to each other's contact list so that they can share grains with each other. Disable this if you have some users whose identity should stay hidden from other users." + } + }, + "saveButton": "Save and continue", + "backButton": "Back" + }, + "setupWizardEmailConfig": { + "title": "Email delivery", + "explanation": "Sandstorm needs a way to send email. You can skip this step (unless you're using email login), but email-related features will be unavailable until you configure email in the future.", + "moreDetail": "How Sandstorm uses email: Sandstorm sends email notifications, and Sandstorm apps can send email notifications, too. Every app receives a unique email address, so Sandstorm needs to send email from a variety of \"From:\" addresses. Therefore, Gmail SMTP won't work, but there are other free services. See more info in the docs.", + "error": "Failed to save changes: %s", + "hostPort": { + "host": "SMTP host", + "port": "Port", + "subtext": "Use port 25 for SMTP (unencrypted or with StartTLS), port 465 for TLS-encrypted SMTPS." + }, + "username": { + "label": "Username (optional)" + }, + "password": { + "label": "Password (optional)" + }, + "email": { + "label": "Sandstorm server's own email address", + "subtext": "Sandstorm will send login emails, notifications of granted access requests, and other emails from this address. It will also use this address in the SMTP envelope." + }, + "saveButton": "Save and continue", + "skipButton": "Skip for now", + "testButton": "Test", + "backButton": "Back" + }, + "setupWizardPreinstalled": { + "title": "Pre-installed Apps Setup", + "explanation": "Please wait while Sandstorm installs the following Productivity Suite apps that are useful for most users. You will be able to configure all pre-installed apps in the Admin Settings panel after setup.", + "downloaded": "Downloaded", + "failed": "Failed", + "loading": "Please wait, loading app index...", + "nextButton": "Next", + "skipButton": "Skip for now", + "backButton": "Back" + }, + "setupWizardLoginUser": { + "title": "Create admin account", + "firstLogin": { + "title": "Confirm your profile" + }, + "isAdmin": "Great! Your account has admin privileges.", + "hasAdmin": { + "explanation": "This Sandstorm server already has an admin user, but if you want, you can also make yourself an admin.", + "adminButton": "Become an admin" + }, + "makeYouAnAdmin": "Making you an admin on this server...", + "loggedOut": { + "explanation": "You can now create an admin account on this Sandstorm server.", + "description": "Log in to create your admin account", + "dialogLabel": "Create account" + }, + "finishButton": "Finish", + "backButton": "Back" + }, + "setupWizardSuccess": { + "title": "Ready to roll!", + "serverIsReady": "Your Sandstorm server is now ready to use.", + "whatsNext": "What would you like to do next?", + "addUsersLink": "Add users", + "editSettingsLink": "Edit other settings", + "sandstormLink": "Start using Sandstorm", + "backButton": "Back" + }, + "setupWizardVerifyToken": { + "title": "Verifying token...", + "explanation": "Sorry, it looks like your setup token has expired.", + "howToFix": "Generate a new one now from the command line by running sandstorm admin-token to access the setup wizard." + }, + "setupWizardTokenExpired": { + "title": "Setup token required", + "alreadySetup": "This server is already set up, so we recommend administering it via the main", + "adminRootLink": "administration panel", + "explanation": "To use this server's setup page, you need a valid setup token.", + "howToFix": "Generate a new one now from the command line by running sandstorm admin-token and following the link it outputs." + } + }, + "packages": { + "topbar": { + "updated": "Sandstorm has been updated — Click here to reload", + "apps": "Apps", + "grains": "Grains", + "oasis": "Start collaborating with others by using Sandstorm on Oasis:", + "createAccount": "Create free account »", + "demoHint": "Your demo data will be transferred.", + "selfHostHint": "Or, run Sandstorm on your own server (it's open source):", + "signUp": "Sign up within:", + "close": "Close" + }, + "powerbox": { + "title": "Powerbox request", + "inputToken": "Please input an api token:", + "importToken": "Import token", + "selected": "Selected:", + "selectOne": "Select one:", + "noGrain": "No grains can provide the requested interface.", + "loading": "Loading..." + } + } +} From 1d20293c1604e5fa74bc8262fbb8b2b5722824f9 Mon Sep 17 00:00:00 2001 From: Laura Arjona Reina Date: Fri, 16 Oct 2020 15:17:01 +0200 Subject: [PATCH 2/2] Spanish translation, work in progress --- shell/i18n/es.i18n.json | 410 ++++++++++++++++++++++------------------ 1 file changed, 230 insertions(+), 180 deletions(-) diff --git a/shell/i18n/es.i18n.json b/shell/i18n/es.i18n.json index 8b290e271c..1e8168ecf1 100644 --- a/shell/i18n/es.i18n.json +++ b/shell/i18n/es.i18n.json @@ -3,25 +3,25 @@ "shell": { "layout": { "demoExpired": { - "title": "Ha expirado la Demo", - "canUpgrade": "¡Gracias por probar la Demo de Sandstorm! Tu cuenta demo ha expirado. Si deseas continuar usando Sandstorm y hacer tus datos permanentes, por favor inicia sesión.", - "cannotUpgrade": "¡Gracias por probar la Demo de Sandstorm! Tu cuenta demo ha expirado.", + "title": "La demo ha caducado", + "canUpgrade": "¡Gracias por probar la Demo de Sandstorm! Tu cuenta de demo ha caducado. Si quieres continuar usando Sandstorm y hacer permanentes tus datos, por favor inicia sesión.", + "cannotUpgrade": "¡Gracias por probar la Demo de Sandstorm! Tu cuenta ha caducado.", "signOut": "Cerrar sesión" }, "adminAlert": { "icon": "!", - "title": "Nota para Admin" + "title": "Nota del Administrador" }, "demoModal": { - "header": "Sandstorm es un «suite» de productividad web autoalojable.", + "header": "Sandstorm es una suite de productividad web auto-alojable.", "withAppDemo": "con aplicaciones como %s.", - "withoutAppDemo": "con todas las aplicaciones que necesitas en un lugar.", + "withoutAppDemo": "con todas las aplicaciones que necesitas, en un solo lugar.", "startButton": { - "withAppDemo": "Prueba %s »", - "withoutAppDemo": "Iniciar »" + "withAppDemo": "Probar %s »", + "withoutAppDemo": "Comenzar »" }, - "explanation": "

Sandstorm hace fácil ejecutar aplicaciones en tu propio servidor. Además de mejorar la privacidad y el control, esto lleva las aplicaciones de software libre a una audiencia más amplia.

", - "securityOverview": "

Sandstorm también es segurísimo. Si te interesa la seguridad, consulta un resumen del modelo de seguridad de Sandstorm.

" + "explanation": "

Sandstorm hace fácil poner en marcha aplicaciones en tu propio servidor. Además de mejorar la privacidad y el control, esto lleva las aplicaciones de software libre a una amplia audiencia.

", + "securityOverview": "

Sandstorm también es increíblemente seguro. Si te interesa la seguridad, echa un vistazo a una revisión del modelo de seguridad de Sandstorm.

" } }, "notifications": { @@ -38,10 +38,7 @@ }, "notFound": { "title": "No encontrado", - "text": "404 no encontrado :(" - }, - "root": { - "title": "Inicio" + "text": "404 No encontrado :(" }, "grainLogContents": { "prefix": "..." @@ -52,298 +49,344 @@ "signup": { "title": "Reclamar invitación", "signedUp": { - "keyIsUsedWithOrigin": "¡Ya has iniciado sesión! Ahora instala algunas aplicaciones.", - "keyIsNotUsed": "Parece que ya tienes una cuenta, así que no necesitas esta clave de registro." + "keyIsUsedWithOrigin": "¡Ya has iniciado sesión! Ahora instala algunas aplicaciones.", + "keyIsNotUsed": "Parece que ya tienes una cuenta, así que no necesitas esta clave de inicio de sesión." }, - "keyIsUsed": "Lo siento, esta clave de registro ya se ha usado.", + "keyIsUsed": "Lo siento, ya se ha usado esa clave de inicio de sesión.", "processing": "Por favor, espera...", - "signInGuide": "Primero debes iniciar sesión. Pulsa en \"Iniciar sesión\" arriba a la derecha.", - "invalidKey": "Lo siento, no es una clave de registro válida." + "signInGuide": "Primero necesitas iniciar sesión. Pulsa en \"Iniciar sesión\" arriba a la derecha.", + "invalidKey": "Lo siento, esto no es una clave de inicio de sesión válida." }, "uploadStatus": { - "title": "Cargando...", - "uploadFailedWithError": "Carga fallida: %s %s", + "title": "Subiendo...", + "uploadFailedWithError": "Falló la subida: %s %s", "statusWithProgress": "%s... %s", "status": "%s...", - "uploadFailed": "Ha fallado la carga. Por favor inténtalo de nuevo." + "uploadFailed": "Falló la subida. Por favor, inténtalo de nuevo." }, "uploadTest": { - "title": "Cargar página de prueba", - "explanation": "Esta página está para que la usen los scripts de prueba.", - "uploadApp": "Cargar aplicación:", - "uploadBackup": "Cargar copia de seguridad:" + "title": "Página de prueba de subida", + "explanation": "Esta página está pensada para ser usada por los scritps de prueba.", + "uploadApp": "Subir aplicación:", + "uploadBackup": "Subir copia de seguridad:" }, "referrals": { "title": "Programa de referencia", "header": { "isPaid": { "title": "¡Consigue hasta 30 GB de espacio libre cuando tus amistades comparten en Oasis!", - "explanation": "Por cada persona que cree un enlace para compartir, te premiaremos con 2 GB." + "explanation": "Por cada amigo o amiga que crea un enlace para compartir, te premiaremos con 2 GB." }, "isNotPaid": { - "title": "¡Consigue granitos ilimitados & hasta 2 GB de espacio libre cuando tus amistades comparten en Oasis!", - "explanation": "Por cada persona que crea un enlace para compartir, te premiaremos con 50 MB. También obtendrás granitos ilimitados." + "title": "¡Consigue granitos ilimitados y hasta 2 GB de espacio libre cuando tus amistades comparten en Oasis!", + "explanation": "Por cada amigo o amiga que crea un enlace para compartir, te premiaremos con 50 MB. También conseguirás granitos ilimitados." } }, "howTo": { "title": "Compartir es referenciar", - "explanation": "Para empezar, abre cualquier granito y pulsa en Compartir acceso.", + "explanation": "Para comenzar, abre cualquier granito y pulsa Compartir acceso.", "getStart": { - "step1": "Compartes un granito con tus amistades (que aún no son usuarios de Oasis).", - "step2": "Tus amistades inician sesión.", - "step3": "Tus amistades comparten un granito con alguien (incluido tú mismo)." + "step1": "Compartes un granito con tu amigo o amiga (que aún no usa Oasis).", + "step2": "Tu amigo o amiga inicia sesión.", + "step3": "Tu amigo o amiga comparte un granito con cualquier otra persona (o contigo)." } }, "status": { - "title": "Your referrals & status", - "explanation": "Once you send a sharing link out, people will appear in this list after they sign in.", + "title": "Tus referencias y estado", + "explanation": "Una vez que envíes un enlace para compartir, las personas aparecerán en esta lista tras iniciar sesión.", "pending": { - "title": "Still needs to share", - "explanation": "Tell these people to make a grain and share it with you. You must actually view the grain they shared with you!" + "title": "Todavía necesita compartir", + "explanation": "Dile a estas personas que creen un granito y lo compartan contigo. ¡Debes visualizar el granito que compartieron contigo!" }, "success": { - "title": "Successful referrals", - "explanation": "You've successfully referred these people. Congratulations!" + "title": "Referencias exitosas", + "explanation": "Has referenciado correctamente a estas personas. ¡Felicidades!" } }, "finePrint": { "title": "La letra pequeña", - "warningWithAccountLink": "Your referral bonus lasts until 1 year after the referral. The terms of this referral program may change without warning; however, such changes will not affect bonuses you have already received. If you need even more space, upgrade your account.", - "explanation": "Paid subscribers can get up to 30 GB of free storage, 2 GB per person they refer, in addition to the storage from their account level. Free account holders can earn unlimited grains and 50 MB of free storage per person they refer, up to 2 GB total." + "warningWithAccountLink": "Tu bono de referencia dura hasta 1 año tras la referencia. Los términos de este programa de referencia pueden cambiar sin previo aviso; sin embargo, estos cambios no afectarían a los bonos que ya hayas recibido. Si necesitas más espacio, mejora tu cuenta.", + "explanation": "Los suscriptores de pago pueden conseguir hasta 30 GB de espacio libre, 2 GB por persona que referencien, además del espacio de su cuenta acorde a su nivel. Los titulares de cuentas gratuitas no son elegibles para un bono de referencia." } }, "about": { "title": "Acerca de Sandstorm", "intro": { - "explanation": "Sandstorm.io is an open source hosting platform for personal/private instances of web apps. Users can upload and install arbitrary software through a simple app-store-like web interface. In addition to better privacy, this is the only way to make Open Source web apps viable.", - "version": "Version: %s", - "unofficialWarning": "WARNING: This server is running an unofficial build of Sandstorm which may contain modifications not reviewed by the developers." + "explanation": "Sandstorm.io es una plataforma de alojamiento de software libre para uso personal/privado de instancias de aplicaciones web. Los usuarios pueden subir e instalar determinado software a través de una interfaz sencilla de tipo tienda de aplicaciones. Además de una mejor privacidad, es la única manera de hacer viables las aplicaciones web de software libre.", + "version": "Versión: %s", + "unofficialWarning": "AVISO: Este servidor funciona con una versión no oficial de Sandstorm, que puede contener modificaciones no revisadas por los desarrolladores." }, "changelog": { "title": "Cambios recientes" }, "developers": { - "title": "Equipo de desarrollo" + "title": "Desarrolladores principales" }, "advisors": { "title": "Consultores" }, "corporate": { "title": "Patrocinadores corporativos", - "explanation": "These companies contributed heavily to Sandstorm's crowdfunding campaign." + "explanation": "Estas empresas han contribuido sustancialmente a la campaña de financiación colectiva de Sandstorm." }, "individual": { "title": "Patrocinadores individuales clave", - "explanation": "These individuals contributed heavily to Sandstorm's crowdfunding campaign." + "explanation": "Estas personas han contribuido sustancialmente a la campaña de financiación colectiva de Sandstorm." }, "backers": { - "title": "Personas que respaldan el proyecto", - "explanation": "from our Indiegogo campaign >", - "anonymous": "and %s anonymous contributors", - "loading": "loading..." + "title": "Contribuidores", + "explanation": "de nuestra campaña en Indiegogo >", + "anonymous": "y %s contribuidores anónimos", + "loading": "cargando..." }, "dependencies": { - "title": "Third-party works used", - "license": "license", - "explanation": "These works are copyright the respective authors and used under the terms of the respective licenses." + "title": "Obras de terceras partes usadas", + "license": "licencia", + "explanation": "Estas obras tienen derechos de autor de sus respectivos titulares y se usan bajo los términos de sus respectivas licencias." }, "copyright": { - "title": "Copyright", - "license": "The Sandstorm implementation is copyright by Sandstorm Development Group, Inc. and contributors. The implementation is licensed under the Apache License 2.0.", - "trademark": "\"Sandstorm\" and the Sandstorm logo are trademarks of Sandstorm Development Group, Inc., and may not be used to advertise derivative works nor commercial services without written consent from Sandstorm Development Group, Inc." + "title": "Derechos de autor", + "license": "La implementación de Sandstorm tiene derechos de autor de Sandstorm Development Group, Inc. y sus contribuidores. La implementación está bajo la licencia Apache License 2.0.", + "trademark": "\"Sandstorm\" y el logo de Sandstorm son marcas registradas de Sandstorm Development Group, Inc., y no deben usarse para anunciar trabajos derivados ni servicios comerciales sin consentimiento escrito de Sandstorm Development Group, Inc." }, "terms": { - "license": "License", - "terms": "Terms of service", - "privacy": "Privacy policy" + "license": "Licencia", + "terms": "Términos del servicio", + "privacy": "Política de privacidad" } } }, "grains": { - "title": "Grains", + "title": "Granitos", "grainView": { - "notFoundWithId": "No grain found with ID %s.", - "openWithWhichIdentity": "Would you like to reveal your identity to this grain, or remain anonymous?", - "openInIncognitoMode": "Open in Incognito Mode", - "revealMyIdentity": "Reveal my identity" + "notFoundWithId": "No se ha encontrado un granito con ID %s.", + "quotaExhausted": "No se puede iniciar el granito porque la cuota del propietario/a está agotada. Si es tu granito, por favor mejora tu plan de suscripción para continuar.", + "openWithWhichIdentity": "¿Te gustaría revelar tu identidad para este granito, o permanecer anónimo/a?", + "openInIncognitoMode": "Abrir en modo incógnito", + "revealMyIdentity": "Revelar mi identidad" }, "grainInMyTrash": { - "explanation": "This grain is in your trash. You cannot access it unless you restore it to your main list.", - "restore": "Restore to main list" + "explanation": "Este granito está en tu papelera. No puedes acceder a menos que lo restaures a tu lista principal.", + "restore": "Restaurar a la lista principal" }, "grainInOwnersTrash": { - "explanation": "You can no longer access this grain because its owner has moved it to the trash." + "explanation": "Ya no puedes acceder a este granito porque su propietario/a lo ha movido a la papelera." }, "grainOwnerSuspended": { - "explanation": "You can no longer access this grain because its owner's account has been suspended." + "explanation": "Ya no puedes acceder a este granito porque la cuenta de su propietario/a ha sido suspendida." }, "wrongIdentity": { - "explanation": "This link was intended for the user:" + "explanation": "Este enlace pretende ser para el usuario:" }, "requestAccess": { - "permissionDenied": "You do not have permission to access this grain.", - "requestAccessHint": "Request access", - "requestAccess": "Request Access", - "warnIdentityRevealing": "Requesting access will reveal your identity to the grain owner.", - "sendRequest": "Sending your request...", - "waitForApproving": "Your request has been sent. You will receive an email if your request is approved.", - "requestFailed": "Your request failed because: %s", - "signInPlease": "Please sign in to request access." + "permissionDenied": "No tienes permiso para acceder a este granito.", + "requestAccessHint": "Solicitar acceso", + "requestAccess": "Solicitar acceso", + "warnIdentityRevealing": "Solicitar acceso revelará tu identidad al propietario/a del granito.", + "sendRequest": "Enviando la solicitud...", + "waitForApproving": "Solicitud enviada. Recibirás un correo electrónico si se aprueba la solicitud.", + "requestFailed": "La solicitud falló por: %s", + "signInPlease": "Por favor inicia sesión para solicitar acceso." }, "invalidToken": { - "invalidToken": "Invalid token: %s" + "invalidToken": "Token inválido: %s" }, "revokedShareLink": { - "linkRevoked": "Sorry, this link has been revoked." + "linkRevoked": "Lo siento, este enlace ha sido revocado." }, "grainTitle": { - "was": "was: %s", - "renamedFrom": "renamed from: %s" + "was": "era: %s", + "renamedFrom": "renombrado de: %s" }, "grainDeleteButton": { - "hint": "Move to trash", - "text": "Move to trash" + "hint": "Mover a la papelera", + "text": "Mover a la papelera" }, "grainDebugLogButton": { - "hint": "Show Debug Log", - "text": "Log" + "hint": "Mostrar registro de depuración", + "text": "Regisro" }, "grainBackupButton": { - "hint": "Download Backup", - "text": "Backup" + "hint": "Descargar copia de seguridad", + "text": "Copia de seguridad" }, "grainBackupPopup": { - "title": "Download Backup", - "warning": "Warning! Restoring this backup might not work how you expect it to.", - "processing": "Preparing backup...", - "cancelHint": "cancel", - "cancel": "Cancel", - "confirmHint": "download backup", - "confirm": "Download backup" + "title": "Descargar copia de seguridad", + "warning": "¡Aviso! Restaurar esta copia de seguridad puede no funcionar como esperas.", + "processing": "Preparando copia de seguridad...", + "cancelHint": "cancelar", + "cancel": "Cancelar", + "confirmHint": "descargar copia de seguridad", + "confirm": "Descargar copia de seguridad" + }, + "grainCloneButton": { + "hint": "Clonar granito", + "text": "Clonar", + "copyTitle": "Copia de %s" + }, + "grainClonePopup": { + "title": "Clonar granito", + "processing": "Clonando granito..." }, "grainRestartButton": { - "hint": "Restart App", - "text": "Restart" + "hint": "Reiniciar aplicación", + "text": "Reiniciar" }, "grainApiTokenButton": { - "hint": "Get webkey", - "text": "Get Webkey" + "hint": "Obtener clave web", + "text": "Obtener clave web" }, "grainApiTokenPopup": { - "title": "Webkeys", - "processing": "Generating...", - "cancel": "Cancel", - "copyForExternalApp": "Copy this webkey and give it to the external app:", - "back": "Go back", - "description": "A webkey allows you to connect an external app (e.g. a mobile app) to this app.", - "labelTitle": "Label:", - "labelPlaceholder": "e.g. 'Android app'", - "roleTitle": "Role:", - "permissionTitle": "all access", - "create": "Create", - "webkeyListTitle": "Your existing webkeys:", - "revokeHint": "Revoke", - "revoke": "Revoke" + "title": "Claves web", + "processing": "Generando...", + "cancel": "Cancelar", + "copyForExternalApp": "Copiar esta clave web y dársela a la aplicación externa:", + "back": "Volver", + "description": "Una clave web permite conectar una aplicación externa (p.ej. una aplicación móvil) a esta aplicación.", + "labelTitle": "Etiqueta:", + "labelPlaceholder": "p.ej. 'Aplicación Android'", + "roleTitle": "Rol:", + "permissionTitle": "acceso completo", + "create": "Crear", + "webkeyListTitle": "Claves web existentes:", + "revokeHint": "Revocar", + "revoke": "Revocar" }, "grainShareButton": { - "hint": "Share access to this grain", - "text": "Share access" + "hint": "Compartir acceso a este granito", + "text": "Compartir acceso" }, "whoHasAccessPopup": { - "title": "Who has access", - "noLoggedInUsers": "No logged-in users have visited your links yet.", - "nobody": "You have granted access to nobody.", - "addedBy": "added by", - "revokeHint": "Revoke", - "revoke": "Revoke", - "hasCustomPermissions": "[has custom permissions]" + "title": "Quién tiene acceso", + "noLoggedInUsers": "Ningún usuario de los que han iniciado sesión ha visitado tus enlaces aún.", + "nobody": "No has permitido acceso a nadie.", + "addedBy": "agregado por", + "revokeHint": "Revocar", + "revoke": "Revocar", + "hasCustomPermissions": "[tiene permisos personalizados]" }, "selectRole": { - "hint": "select a role" + "hint": "seleccionar un rol" }, "emailInviteTab": { - "demoModeAlert": "Sharing emails cannot be sent while in demo mode. Create an account to send sharing emails, or get a shareable link instead.", - "personalMessagePlaceholder": "Type a personal message (optional)...", - "send": "Send", - "sending": "Sending...", - "success": "Successfully sent.", - "reset": "+ Send more invites", - "startOver": "<< Start over" + "demoModeAlert": "En el modo demo no se pueden enviar correos para compartir. Crea una cuenta para enviar correos para compartir, o, alternativamente, usa un enlace para compartir.", + "personalMessagePlaceholder": "Escribe un mensaje personal (opcional)...", + "send": "Enviar", + "sending": "Enviando...", + "success": "Enviado correctamente.", + "reset": "+ Enviar más invitaciones", + "startOver": "<< Comenzar de nuevo" }, "shareableLinkTab": { - "withRoles": "Anyone with this link:", - "withoutRoles": "Anyone with this link can access the grain.", - "labelPlaceholder": "Label (optional)", - "labelExplanation": "Use a label to remind yourself to whom you sent this unique link.", - "create": "Create", - "creating": "Generating...", - "success": "Copy this link:", - "reset": "+ Create another link", - "cancel": "Cancel" + "withRoles": "Cualquiera con este enlace:", + "withoutRoles": "Cualquiera con este enlace puede acceder al granito.", + "labelPlaceholder": "Etiqueta (opcional)", + "labelExplanation": "Usa una etiqueta para recordar a quién enviaste este enlace único.", + "create": "Crear", + "creating": "Generando...", + "success": "Copia este enlace:", + "reset": "+ Crear otro enlace", + "cancel": "Cancelar" }, "shareWithOthers": { - "title": "Share with others", - "sendInviteTab": "Send an invite", - "shareableLinkTab": "Get shareable link", - "whoHasAccess": "See who has access" + "title": "Compartir con otros", + "sendInviteTab": "Enviar una invitación", + "shareableLinkTab": "Obtener un enlace para compartir", + "whoHasAccess": "Ver quién tiene acceso" }, "grainSharePopup": { - "oldSharingModelDescription": "This grain uses the old sharing model. You can share it by copy/pasting the URL from the location bar", - "upgradeDescription": "You can upgrade this grain to the new model, but anyone with whom you shared this grain previously will lose access; you will have to share with them again.", - "upgradeWarning": "Upgrading cannot be undone.", - "upgrade": "upgrade", - "openInIncognitoMode": "You are viewing this grain anonymously.", - "toShareAccess": "To share access, copy this link:", - "openNonAnonymouslyHead": "For more sharing options, you must", - "openNonAnonymouslyLink": "open this grain non-anonymously", + "oldSharingModelDescription": "Este granito usa el modo antiguo para compartir. Puedes compartirlo copiando/pegando la URL desde la barra de direcciones", + "upgradeDescription": "Puedes actualizar este granito al nuevo modelo, pero cualquiera con quien habías compartido este granito perderá el acceso; tendrás que volverlo a compartir.", + "upgradeWarning": "La actualización no se puede deshacer.", + "upgrade": "actualizar", + "openInIncognitoMode": "Estás viendo este granito de manera anónima.", + "toShareAccess": "Para compartir el acceso, copia este enlace:", + "openNonAnonymouslyHead": "Para más opcoines de compartición, debes", + "openNonAnonymouslyLink": "abrir este granito de manera no anónima", "openNonAnonymouslyTail": ".", - "signIn": "For more sharing options, please sign in." + "signIn": "Para más opciones de compartición, por favor inicia sesión." }, "grainPowerboxRequest": { - "powerboxRequestHint": "Powerbox request", + "powerboxRequestHint": "Solicitud de Powerbox", "powerboxRequest": "P" }, "grainPowerboxOffer": { - "powerboxOfferHint": "Powerbox offer", + "powerboxOfferHint": "Oferta de Powerbox", "powerboxOffer": "P" }, "grainPowerboxOfferPopup": { - "title": "Powerbox Offer", - "dismiss": "Dismiss" + "title": "Oferta de Powerbox", + "dismiss": "Descartar" }, "share": { - "grainNotFoundWithId": "No grain found with ID %s. Maybe you need to sign in to a different account?", - "signIn": "You must be signed in to grant access to a grain." + "grainNotFoundWithId": "No se ha encontrado un granito con ID %s. ¿Quizá necesitas iniciar sesión con otra cuenta?", + "signIn": "Debes iniciar sesión para permitir acceso a un granito." }, "grainlist": { "sandstormGrainListPage": { "introButton": { - "hint": "What is a grain?" + "hint": "¿Qué es un granito?" }, - "mainListButton": "View main list", - "trashButton": "View trash (%s)", - "restoreButton": "Restore backup...", + "mainListButton": "Ver lista principal", + "restoreButton": "Restaurar copia de seguridad...", "search": { - "placeholder": "search" + "placeholder": "buscar" }, "usageInfo": { - "quota": "__count__ of __quota__ grains", - "size": "__size__ of __total__ used" + "quota": "__count__ de __quota__ granitos", + "size": "__size__ de __total__ usados" }, + "trashButton": "Ver papelera (%s)", + "moveToTrash": "Mover a la papelera", "trash": { - "emptyButton": "Empty all trash", - "explanation": "(Grains will be permanently removed after 30 days in the trash. To keep a grain, restore it to the Main list.)" + "emptyButton": "Vaciar la papelera", + "explanation": "(Los granitos se eliminarán permanentemente después de estar 30 días en la papelera. Para conservar un granito, restáurarlo a la lista principal.)" }, "noGrains": { - "notFound": "No matching grains found.", - "inTrash": "Some grains in your trash match your search.", - "trashButton": "View trash", - "empty": "Trash is empty.", - "explanation": "You don't have any grains yet.", - "hasApps": "Select an app and create your first grain.", - "hasNoApp": "Install an app to create your first grain." - }, - "moveToTrash": "Move to trash" + "notFound": "No se encontraron granitos coincidentes.", + "inTrash": "Algunos granitos en la papelera coinciden con la búsqueda.", + "trashButton": "Ver la papelera", + "empty": "La papelera está vacía.", + "explanation": "Aún no tienes granitos.", + "hasApps": "Selecciona una aplicación y crea tu primer granito.", + "hasNoApp": "Instala una aplicación para crear tu primer granito." + }, + "transfers": { + "massTransfer": "Transferencia masiva...", + "transfers": "Transferencias", + "transfer": "Transferir", + "blockedInitiateBeforeSource": "Parece que estás intentando iniciar una nueva transferencia desde", + "blockedInitiateAfterSource": ", pero ya tienes una transferencia en curso. Por favor completa o cancela la transferencia existente para continuar.", + "incomingTransferActive": "Transferencia entrante activa", + "cancel": "Cancelar", + "remaining": "Restante", + "retryErrors": "Errores de reintento", + "pauseTransfer": "Pausar transferencia", + "continueTransfer": "Continuar transferencia", + "startTransfer": "Comenzar transferencia", + "closeTransfer": "Cerrar transferencia", + "outgoingTransferActive": "Transferencia saliente activa", + "currentlyTransferring": "Actualmente estás transfiriendo granitos a:", + "manageAt": "Gestionar tu transferencia en:", + "inOrder": "Para comenzar una nueva transferencia (entrante o saliente), debes cancelar la existente.", + "cancelTransfer": "Cancelar transferencia", + "initiateInboundTransfer": "Iniciar transferencia entrante", + "initiateOutboundTransfer": "Iniciar transferencia saliente", + "theSandstormServerAt": "El servidor Sandstorm en", + "wantsToTransfer": "quiere transferir granitos a este servidor.", + "insecureSource": "AVISO: El servidor fuente no soporta HTTPS. Los datos se transferirán sin cifrar.", + "deny": "Denegar", + "fetchGrainList": "Obtener lista de granitos", + "noTransfersInProgress": "Actualmente no hay transferencias en curso.", + "transferAllMyGrainsTo": "Transferir todos mis granitos a:", + "initiateTransfer": "Iniciar transferencia", + "whatDoesThisDo": "¿Qué hace esto?", + "whatCan": "Puedes usar esta función para transferir todos tus granitos a un nuevo servidor de Sandstorm. Esto automatiza el proceso de guardar una copia de seguridad de cada granito en este servidor, y restaurar cada copia de seguridad en el servidor que especifiques.", + "whatWhen": "Cuando inicies la transferencia, se te redirigirá al servidor de destino donde tendrás que iniciar sesión. Entonces se te dará la opción de qué granitos transferir, y finalmente iniciarás la transferencia. La transferencia continuará en segundo plano, puedes cerrar la sesión.", + "whatOrder": "Para que una transferencia funcione, el servidor de destino debe poder conectar con el servidor origen directamente por internet. Sin embargo, lo opuesto no es necesario. Así, puedes realizar una transferencia masiva que transfiera granitos de un servidor en la internet pública (como Sandstorm Oasis) a un servidor en una red interna privada, pero no al contrario. Si el servidor origen soporta HTTPS, entonces la transferencia se hará por HTTPS, sin tener en cuenta el protocolo del servidor de destino.", + "warningGiving": "AVISO: Estás dando permiso a %s para descargar todos tus granitos desde este servidor. ¿Estás seguro/a?", + "errorAcceptingTransfer": "Error al aceptar la transferencia:" + } }, "sandstormGrainTable": { "bulkAction": { @@ -880,6 +923,12 @@ "restoreButton": "Restore defaults" } }, + "certificates": { + "name": "SSL/TLS Certificates", + "subtext": "Configure certificates manually or using Let's Encrypt.", + "newAdminCertificates": { + } + }, "users": { "name": "Users", "subtext": "Manage all users on this Sandstorm installation." @@ -1165,6 +1214,7 @@ "networkCapabilities": { "name": "Network capabilities", "subtext": "Manage direct network access for grains.", + "explanation": "This page displays network capabilities granted to grains. By default, grains have very limited network access. A grain can request full network access while it is being used. Only an admin can approve the request, which grants a \"network capability\" to the grain.", "newAdminNetworkCapabilitiesTableCapabilityRow": { "adminAccount": "Admin account %s", "unknownGranter": "Unknown granter", @@ -1456,7 +1506,7 @@ "_loginButtonsLoggedOutDropdown": { "demo": { "title": "Create account", - "explanation": "Your demo data will be transferred to your new account." + "explanation": "WARNING: Your demo data will be deleted." }, "title": "Sign in", "shared": { @@ -1768,9 +1818,9 @@ "grains": "Grains", "oasis": "Start collaborating with others by using Sandstorm on Oasis:", "createAccount": "Create free account »", - "demoHint": "Your demo data will be transferred.", - "selfHostHint": "Or, run Sandstorm on your own server (it's open source):", - "signUp": "Sign up within:", + "demoHint": "WARNING: Your demo data will be deleted.", + "selfHostHint": "This is a limited-time demo. If you want to use Sandstorm for real, install it on your own server (it's open source):", + "signUp": "Demo time remaining:", "close": "Close" }, "powerbox": {