diff options
Diffstat (limited to 'es/docs/customising')
-rw-r--r-- | es/docs/customising/config.md | 1186 | ||||
-rw-r--r-- | es/docs/customising/index.md | 44 | ||||
-rw-r--r-- | es/docs/customising/states.md | 218 | ||||
-rw-r--r-- | es/docs/customising/states_informatazyrtare.md | 87 | ||||
-rw-r--r-- | es/docs/customising/themes.md | 191 | ||||
-rw-r--r-- | es/docs/customising/translation.md | 172 |
6 files changed, 1898 insertions, 0 deletions
diff --git a/es/docs/customising/config.md b/es/docs/customising/config.md new file mode 100644 index 000000000..dc79df3e9 --- /dev/null +++ b/es/docs/customising/config.md @@ -0,0 +1,1186 @@ +--- +layout: es/page +title: Configuración +--- + +# Configuración de Alaveteli + +<p class="lead"> + Puede controlar numerosos detalles sobre el aspecto y el comportamiento de Alaveteli con tan solo + modificar los ajustes de configuración. +</p> + +## Archivo de configuración general + +El código de Alaveteli incluye un ejemplo de archivo de configuración: `config/general.yml-example`. + +Como parte del [proceso de instalación]({{ page.baseurl }}/docs/installing/ ), el +archivo de ejemplo se copia en `config/general.yml`. **Debe** editar este archivo para +adaptarlo a sus necesidades. + +Los ajustes predeterminados para los ejemplos de páginas frontales están diseñados para trabajar con +los datos de prueba incluidos en Alaveteli. Al disponer de datos reales debe editarlos. + +También existen [otros archivos de configuración](#other-config) para aspectos específicos de Alaveteli. + + +## Ajustes de configuración por tema + +Los siguientes ajustes de configuración pueden modificarse en `config/general.yml`. +Al editar este archivo, recuerde que debe hacerlo con la <a href="http://yaml.org">sintaxis de YAML</a>. +No es complicado, pero (especialmente al editar un listado) debe prestar atención en mantener el +sangrado de texto correcto. Si tiene dudas, consulte los ejemplos que se hallan en el archivo +y no utilice tabulaciones. + +### Apariencia y comportamiento general del sitio: + +<code><a href="#site_name">SITE_NAME</a></code> +<br> <code><a href="#domain">DOMAIN</a></code> +<br> <code><a href="#force_ssl">FORCE_SSL</a></code> +<br> <code><a href="#force_registration_on_new_request">FORCE_REGISTRATION_ON_NEW_REQUEST</a></code> +<br> <code><a href="#theme_urls">THEME_URLS</a></code> +<br> <code><a href="#theme_branch">THEME_BRANCH</a></code> +<br> <code><a href="#frontpage_publicbody_examples">FRONTPAGE_PUBLICBODY_EXAMPLES</a></code> +<br> <code><a href="#public_body_statistics_page">PUBLIC_BODY_STATISTICS_PAGE</a></code> +<br> <code><a href="#minimum_requests_for_statistics">MINIMUM_REQUESTS_FOR_STATISTICS</a></code> +<br> <code><a href="#responsive_styling">RESPONSIVE_STYLING</a></code> + +### Estado del sitio: + +<code><a href="#read_only">READ_ONLY</a></code> +<br> <code><a href="#staging_site">STAGING_SITE</a></code> + +### Localización e internacionalización: + +<code><a href="#iso_country_code">ISO_COUNTRY_CODE</a></code> +<br> <code><a href="#time_zone">TIME_ZONE</a></code> +<br> <code><a href="#available_locales">AVAILABLE_LOCALES</a></code> +<br> <code><a href="#default_locale">DEFAULT_LOCALE</a></code> +<br> <code><a href="#use_default_browser_language">USE_DEFAULT_BROWSER_LANGUAGE</a></code> +<br> <code><a href="#include_default_locale_in_urls">INCLUDE_DEFAULT_LOCALE_IN_URLS</a></code> + +### Definición de «late» (fuera de plazo): + +<code><a href="#reply_late_after_days">REPLY_LATE_AFTER_DAYS</a></code> +<br> <code><a href="#reply_very_late_after_days">REPLY_VERY_LATE_AFTER_DAYS</a></code> +<br> <code><a href="#special_reply_very_late_after_days">SPECIAL_REPLY_VERY_LATE_AFTER_DAYS</a></code> +<br> <code><a href="#working_or_calendar_days">WORKING_OR_CALENDAR_DAYS</a></code> + +### Acceso a la interfaz de administración: + +<code><a href="#admin_username">ADMIN_USERNAME</a></code> +<br> <code><a href="#admin_password">ADMIN_PASSWORD</a></code> +<br> <code><a href="#disable_emergency_user">DISABLE_EMERGENCY_USER</a></code> +<br> <code><a href="#skip_admin_auth">SKIP_ADMIN_AUTH</a></code> + +### Gestión del correo electrónico: + +<code><a href="#incoming_email_domain">INCOMING_EMAIL_DOMAIN</a></code> +<br> <code><a href="#incoming_email_prefix">INCOMING_EMAIL_PREFIX</a></code> +<br> <code><a href="#incoming_email_secret">INCOMING_EMAIL_SECRET</a></code> +<br> <code><a href="#blackhole_prefix">BLACKHOLE_PREFIX</a></code> +<br> <code><a href="#contact_email">CONTACT_EMAIL</a></code> +<br> <code><a href="#contact_name">CONTACT_NAME</a></code> +<br> <code><a href="#track_sender_email">TRACK_SENDER_EMAIL</a></code> +<br> <code><a href="#track_sender_name">TRACK_SENDER_NAME</a></code> +<br> <code><a href="#raw_emails_location">RAW_EMAILS_LOCATION</a></code> +<br> <code><a href="#exception_notifications_from">EXCEPTION_NOTIFICATIONS_FROM</a></code> +<br> <code><a href="#exception_notifications_to">EXCEPTION_NOTIFICATIONS_TO</a></code> +<br> <code><a href="#forward_nonbounce_responses_to">FORWARD_NONBOUNCE_RESPONSES_TO</a></code> +<br> <code><a href="#mta_log_path">MTA_LOG_PATH</a></code> +<br> <code><a href="#mta_log_type">MTA_LOG_TYPE</a></code> + +### Administración general (claves, rutas, servicios de soporte del sistema): + +<code><a href="#cookie_store_session_secret">COOKIE_STORE_SESSION_SECRET</a></code> +<br> <code><a href="#recaptcha_public_key">RECAPTCHA_PUBLIC_KEY</a></code> +<br> <code><a href="#recaptcha_private_key">RECAPTCHA_PRIVATE_KEY</a></code> +<br> <code><a href="#gaze_url">GAZE_URL</a></code> +<br> <code><a href="#ga_code">GA_CODE</a></code> (GA=Google Analytics) +<br> <code><a href="#utility_search_path">UTILITY_SEARCH_PATH</a></code> +<br> <code><a href="#shared_files_path">SHARED_FILES_PATH</a></code> +<br> <code><a href="#shared_files">SHARED_FILES</a></code> +<br> <code><a href="#shared_directories">SHARED_DIRECTORIES</a></code> + +### Disparadores y ajustes de comportamiento: + +<code><a href="#new_response_reminder_after_days">NEW_RESPONSE_REMINDER_AFTER_DAYS</a></code> +<br> <code><a href="#max_requests_per_user_per_day">MAX_REQUESTS_PER_USER_PER_DAY</a></code> +<br> <code><a href="#override_all_public_body_request_emails">OVERRIDE_ALL_PUBLIC_BODY_REQUEST_EMAILS</a></code> +<br> <code><a href="#allow_batch_requests">ALLOW_BATCH_REQUESTS</a></code> +<br> <code><a href="#public_body_list_fallback_to_default_locale">PUBLIC_BODY_LIST_FALLBACK_TO_DEFAULT_LOCALE</a></code> +<br> <code><a href="#cache_fragments">CACHE_FRAGMENTS</a></code> + +### Servicios públicos externos: + +<code><a href="#blog_feed">BLOG_FEED</a></code> +<br> <code><a href="#twitter_username">TWITTER_USERNAME</a></code> +<br> <code><a href="#twitter_widget_id">TWITTER_WIDGET_ID</a></code> +<br> <code><a href="#donation_url">DONATION_URL</a></code> + +### Casos especiales o trabajo de desarrollo: + +<code><a href="#debug_record_memory">DEBUG_RECORD_MEMORY</a></code> +<br> <code><a href="#varnish_host">VARNISH_HOST</a></code> +<br> <code><a href="#use_mailcatcher_in_development">USE_MAILCATCHER_IN_DEVELOPMENT</a></code> +<br> <code><a href="#use_ghostscript_compression">USE_GHOSTSCRIPT_COMPRESSION</a></code> +<br> <code><a href="#html_to_pdf_command">HTML_TO_PDF_COMMAND</a></code> + + +--- + +## Todos los ajustes generales + + +<dl class="glossary"> + + <dt> + <a name="site_name"><code>SITE_NAME</code></a> + </dt> + <dd> + <strong>SITE_NAME</strong> aparece en diversos lugares del sitio. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>SITE_NAME: 'Alaveteli'</code> + </li> + <li> + <code>SITE_NAME: 'WhatDoTheyKnow'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="domain"><code>DOMAIN</code></a> + </dt> + <dd> + Dominio utilizado en direcciones URL generadas por scripts (por ejemplo, para incluirse en algunos correos). + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>DOMAIN: '127.0.0.1:3000'</code> + </li> + <li> + <code>DOMAIN: 'www.ejemplo.com'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="force_ssl"><code>FORCE_SSL</code></a> + </dt> + <dd> + Si tiene asignado el valor «true», fuerza a todo el mundo (dentro del entorno de producción) a utilizar conexiones cifradas + (https), redirigiendo las conexiones sin cifrado. Esta característia está <strong>altamente + recomendada</strong> para que las credenciales no puedan ser interceptadas por personas malintencionadas. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>FORCE_SSL: true</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="iso_country_code"><code>ISO_COUNTRY_CODE</code></a> + </dt> + <dd> + <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">Código ISO nacional</a> + del país donde se implementa su sitio basado en Alaveteli. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>ISO_COUNTRY_CODE: GB</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="time_zone"><code>TIME_ZONE</code></a> + </dt> + <dd> + Esta es la <a href="http://en.wikipedia.org/wiki/List_of_tz_database_time_zones">zona horaria</a> + que utiliza Alaveteli para mostrar la fecha y la hora. + Si no se configura, utiliza UTC por defecto. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>TIME_ZONE: Australia/Sydney</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="blog_feed"><code>BLOG_FEED</code></a> + </dt> + <dd> + Estas transmisiones se muestran consecuentemente en la página del blog de Alaveteli: <!-- TODO --> + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>BLOG_FEED: 'https://www.mysociety.org/category/projects/whatdotheyknow/feed/'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="twitter_username"><code>TWITTER_USERNAME</code></a> + <a name="twitter_widget_id"><code>TWITTER_WIDGET_ID</code></a> + </dt> + <dd> + Si desea mostrar las novedades de Twitter en la página del blog, introduzca el identificador y el código de usuario para el widget. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>TWITTER_USERNAME: WhatDoTheyKnow</code> + </li> + <li> + <code>TWITTER_WIDGET_ID: '833549204689320031'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="available_locales"><code>AVAILABLE_LOCALES</code></a> y + <a name="default_locale"><code>DEFAULT_LOCALE</code></a> + </dt> + <dd> + <strong>AVAILABLE_LOCALES</strong> lista todas las localizaciones que desea soportar en su sitio. + Si hay más de una, utilice espacios para separar las entradas. + Defina una de las localizaciones como predeterminada con la variable <strong>DEFAULT_LOCALE</strong>. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>AVAILABLE_LOCALES: 'en es'</code> + </li> + <li> + <code>DEFAULT_LOCALE: 'en'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="use_default_browser_language"><code>USE_DEFAULT_BROWSER_LANGUAGE</code></a> + </dt> + <dd> + ¿Desea que Alaveteli intente utiliza el idioma predeterminado del navegador del usuario? + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>USE_DEFAULT_BROWSER_LANGUAGE: true</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="include_default_locale_in_urls"><code>INCLUDE_DEFAULT_LOCALE_IN_URLS</code></a> + </dt> + <dd> + Normalmente Alaveteli incluirá la localización en sus direcciones URL, de este modo: + <code>www.ejemplo.com/en/body/list/all</code>. Si no desea este comportamiento + cuando se trate de la localización por defecto, asigne a + <strong>INCLUDE_DEFAULT_LOCALE_IN_URLS</strong> el valor «false». + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>INCLUDE_DEFAULT_LOCALE_IN_URLS: true</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="reply_late_after_days"><code>REPLY_LATE_AFTER_DAYS</code></a><br> + <a name="reply_very_late_after_days"><code>REPLY_VERY_LATE_AFTER_DAYS</code></a><br> + <a name="special_reply_very_late_after_days"><code>SPECIAL_REPLY_VERY_LATE_AFTER_DAYS</code></a> + <a name="working_or_calendar_days"><code>WORKING_OR_CALENDAR_DAYS</code></a> + </dt> + <dd> + Las variables <strong>REPLY...AFTER_DAYS</strong> definen cuántos días deben pasar + antes de que la respuesta a una solicitud se considere oficialmente <em>late</em> (fuera de plazo). + Existe un caso SPECIAL para ciertos tipos de autoridades (por ejemplo, los colegios en el Reino Unido) que + disponen de algo más de tiempo que las demás para responder a las consultas. + La variable <strong>WORKING_OR_CALENDAR_DAYS</strong> puede contener los valores «working» (predeterminado) + o «calendar», que determinan qué días se incluyen en el contador. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>REPLY_LATE_AFTER_DAYS: 20</code> + </li> + <li> + <code>REPLY_VERY_LATE_AFTER_DAYS: 40</code> + </li> + <li> + <code>SPECIAL_REPLY_VERY_LATE_AFTER_DAYS: 60</code> + </li> + <li> + <code>WORKING_OR_CALENDAR_DAYS: working</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="frontpage_publicbody_examples"><code>FRONTPAGE_PUBLICBODY_EXAMPLES</code></a> + </dt> + <dd> + Especifique qué organismos públicos desea listar como ejemplo en la página de inicio + utilizando su nombre corto, <code>short_name</code>. + Si desea mostrar más de uno, sepárelos por punto y coma. + Comente este apartado si desea que se genere de forma automática. + <p> + <strong>Advertencia</strong>: esta opción es lenta, ¡no la utilice en producción! + </p> + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>FRONTPAGE_PUBLICBODY_EXAMPLES: 'tgq'</code> + </li> + <li> + <code>FRONTPAGE_PUBLICBODY_EXAMPLES: 'tgq;foo;bar'</code> + </li> + <li> + <code># FRONTPAGE_PUBLICBODY_EXAMPLES: </code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="theme_urls"><code>THEME_URLS</code></a> + </dt> + <dd> + Direcciones URL de <a href="{{ page.baseurl }}/docs/customising/themes/">temas</a> para descargar y utilizar + (al ejecutar el script <code>rails-post-deploy</code>). Las primeras plantillas de la lista tienen + mayor prioridad que las siguientes. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <pre> +THEME_URLS: + - 'git://github.com/mysociety/alavetelitheme.git' +</pre> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="theme_branch"><code>THEME_BRANCH</code></a> + </dt> + <dd> + Cuando el script <code>rails-post-deploy</code> instale los <a href="{{ page.baseurl }}/docs/customising/themes/">temas</a>, + probará primero la rama de temas, pero solo si ha asignado a <code>THEME_BRANCH</code> + el valor «true». Si la rama no existe, retornará al uso de una versión etiquetada específica + en su versión instalada de Alaveteli y, en caso de que no exista ninguna, retornará a + la maestra, <code>master</code>. + <p> + El tema por defecto es el denominado «Alaveteli». Se instala automáticamente cuando se ejecuta + <code>rails-post-deploy</code>. + </p> + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>THEME_BRANCH: false</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="force_registration_on_new_request"><code>FORCE_REGISTRATION_ON_NEW_REQUEST</code></a> + </dt> + <dd> + ¿Necesitan los usuarios iniciar sesión para comenzar un nuevo proceso de solicitud? + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>FORCE_REGISTRATION_ON_NEW_REQUEST: false</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="incoming_email_domain"><code>INCOMING_EMAIL_DOMAIN</code></a> + </dt> + <dd> + Su dominio de correo electrónico para recibir correo entrante. Consulte también la <a href="{{ page.baseurl }}/docs/installing/email#how-alaveteli-handles-email">gestión de correo de Alaveteli</a>. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>INCOMING_EMAIL_DOMAIN: 'localhost'</code> + </li> + <li> + <code>INCOMING_EMAIL_DOMAIN: 'foifa.com'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="incoming_email_prefix"><code>INCOMING_EMAIL_PREFIX</code></a> + </dt> + <dd> + Un prefijo opcional para ayudarle a distinguir las solicitudes de información pública. Consulte también la <a href="{{ page.baseurl }}/docs/installing/email#how-alaveteli-handles-email">gestión de correo de Alaveteli</a>. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>INCOMING_EMAIL_PREFIX: ''</code> + </li> + <li> + <code>INCOMING_EMAIL_PREFIX: 'foi+'</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="incoming_email_secret"><code>INCOMING_EMAIL_SECRET</code></a> + </dt> + <dd> + Utilizada para almacenar el código hash en la dirección de correo de la solicitud. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>INCOMING_EMAIL_SECRET: '11ae 4e3b 70ff c001 3682 4a51 e86d ef5f'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="blackhole_prefix"><code>BLACKHOLE_PREFIX</code></a> + </dt> + <dd> + Utilizada como campo remitente «from» en el dominio de correo entrante para casos en que no se tienen en cuenta los posibles errores. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>BLACKHOLE_PREFIX: 'do-not-reply-to-this-address'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="admin_username"><code>ADMIN_USERNAME</code></a> + y + <a name="admin_password"><code>ADMIN_PASSWORD</code></a> + <br> + <a name="disable_emergency_user"><code>DISABLE_EMERGENCY_USER</code></a> + </dt> + <dd> + Detalles sobre el + <a href="{{ page.baseurl }}/docs/glossary/#emergency" class="glossary__link">usuario de emergencia</a>. + <p> + Estas opciones resultan útiles para crear los usuarios administradores iniciales de su sitio: + <ul> + <li>Cree un nuevo usuario (mediante el registro común del sitio).</li> + <li>Inicie sesión con el usuario de emergencia.</li> + <li>Ascienda la nueva cuenta a administrador.</li> + <li>Deshabilite el usuario de emergencia.</li> + </ul> + </p> + <p> + Para obtener detalles sobre este proceso, consulte la + <a href="{{ page.baseurl }}/docs/installing/next_steps/#cree-una-cuenta-de-administrador-superusuario">creación + de cuentas de superusuario</a>. + </p> + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>ADMIN_USERNAME: 'adminxxxx'</code> + </li> + <li> + <code>ADMIN_PASSWORD: 'passwordx'</code> + </li> + <li> + <code>DISABLE_EMERGENCY_USER: false</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="skip_admin_auth"><code>SKIP_ADMIN_AUTH</code></a> + </dt> + <dd> + Asigne a esta variable el valor «true» para que la interfaz de administración sea accesible para usuarios anónimos. + Evidentemente, esta opción no debe activarse en entornos de producción. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>SKIP_ADMIN_AUTH: false</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="contact_email"><code>CONTACT_EMAIL</code></a> + y + <a name="contact_name"><code>CONTACT_NAME</code></a> + </dt> + <dd> + Detalles del campo del remitente «from» en el correo electrónico. Consulte también la <a href="{{ page.baseurl }}/docs/installing/email#how-alaveteli-handles-email">gestión de correo de Alaveteli</a>. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>CONTACT_EMAIL: 'team@example.com'</code> + </li> + <li> + <code>CONTACT_NAME: 'Alaveteli Webmaster'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="track_sender_email"><code>TRACK_SENDER_EMAIL</code></a> y + <a name="track_sender_name"><code>TRACK_SENDER_NAME</code></a> + </dt> + <dd> + Detalles del campo del remitente «from» para mensajes de seguimiento. Consulte también la <a href="{{ page.baseurl }}/docs/installing/email#how-alaveteli-handles-email">gestión de correo de Alaveteli</a>. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>TRACK_SENDER_EMAIL: 'alaveteli@ejemplo.com'</code> + </li> + <li> + <code>TRACK_SENDER_NAME: 'Alaveteli Webmaster'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="raw_emails_location"><code>RAW_EMAILS_LOCATION</code></a> + </dt> + <dd> + Lugar donde se almacenan los datos de tipo raw del correo entrante. + <strong>¡Asegúrese de hacer copias de seguridad de estos datos!</strong> + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>RAW_EMAILS_LOCATION: 'files/raw_emails'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="cookie_store_session_secret"><code>COOKIE_STORE_SESSION_SECRET</code></a> + </dt> + <dd> + Clave secreta para firmar sesiones cookie_store. Debe ser larga y aleatoria. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>COOKIE_STORE_SESSION_SECRET: 'uIngVC238Jn9NsaQizMNf89pliYmDBFugPjHS2JJmzOp8'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="read_only"><code>READ_ONLY</code></a> + </dt> + <dd> + Si está presente, <strong>READ_ONLY</strong> aplica el modo de solo lectura al sitio + y utiliza el texto como razón (el párrafo completo). Utilice un usuario de solo lectura + también en la base de datos, pues solo se verifica en unos pocos lugares evidentes. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + Normalmente <strong>no</strong> deseará que su sitio funcione en + modo de solo lectura, por lo que deberá dejar <strong>READ_ONLY</strong> + en blanco. + <br> + <code> + READ_ONLY: '' + </code> + </li> + <li> + <code> + READ_ONLY: 'Actualmente el sitio no acepta solicitudes porque estamos trasladando el servidor.' + </code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="staging_site"><code>STAGING_SITE</code></a> + </dt> + <dd> + ¿Es este un servidor de + <a href="{{ page.baseurl }}/docs/glossary/#staging" class="glossary__link">pruebas</a> o de + <a href="{{ page.baseurl }}/docs/glossary/#development" class="glossary__link">desarrollo</a>? + Si no es así, se trata de un servidor real de <a href="{{ page.baseurl }}/docs/glossary/#production" class="glossary__link">producción</a>. + Esta opción controla si el script <code>rails-post-deploy</code> + debe o no crear el archivo <code>config/rails_env.rb</code> para forzar + Rails en el entorno de producción. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + Para servidores de pruebas o de desarrollo: + <p> + <code>STAGING_SITE: 1</code> + </p> + </li> + <li> + Para producción: + <p> + <code>STAGING_SITE: 0</code> + </p> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="recaptcha_public_key"><code>RECAPTCHA_PUBLIC_KEY</code></a> y + <a name="recaptcha_private_key"><code>RECAPTCHA_PRIVATE_KEY</code></a> + </dt> + <dd> + Recaptcha, para la detección de humanos. Obtenga aquí las claves: + <a href="http://recaptcha.net/whyrecaptcha.html">http://recaptcha.net/whyrecaptcha.html</a> + + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>RECAPTCHA_PUBLIC_KEY: '7HoPjGBBBBBBBBBkmj78HF9PjjaisQ893'</code> + </li> + <li> + <code>RECAPTCHA_PRIVATE_KEY: '7HjPjGBBBBBCBBBpuTy8a33sgnGG7A'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="new_response_reminder_after_days"><code>NEW_RESPONSE_REMINDER_AFTER_DAYS</code></a> + </dt> + <dd> + Número de días tras los cuales se enviará un recordatorio de respuesta «new response reminder». + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>NEW_RESPONSE_REMINDER_AFTER_DAYS: [3, 10, 24]</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="debug_record_memory"><code>DEBUG_RECORD_MEMORY</code></a> + </dt> + <dd> + Para depurar problemas de memoria. Si se le asigna el valor «true», Alaveteli registra + los aumentos de uso de memoria del proceso de Ruby debido a la + solicitud (solamente en Linux). Como Ruby nunca devuelve memoria al sistema operativo, + si el proceso existente había dado servicio previamente a una solicitud de mayor tamaño, + no se mostrará ningún consumo para la siguiente. + + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>DEBUG_RECORD_MEMORY: false</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="use_ghostscript_compression"><code>USE_GHOSTSCRIPT_COMPRESSION</code></a> + </dt> + <dd> + Actualmente predeterminamos el uso de pdftk para comprimir archivos en formato PDF. + Opcionalmente, puede probar Ghostscript, que debería llevar a cabo un mejor trabajo + de compresión. Algunas versiones de pdftk generan errores respecto a la compresión, + en cuyo caso Alaveteli no recomprime los archivos PDF + y registra un mensaje de advertencia, «Unable to compress PDF», un motivo más + para probar esta opción. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>USE_GHOSTSCRIPT_COMPRESSION: true</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="gaze_url"><code>GAZE_URL</code></a> + </dt> + <dd> + Alateveli utiliza el servicio geográfico de mySociety para determinar el país de la dirección + IP recibida (así podemos sugerir un sitio basado en Alaveteli del país correspondiente, si existe alguno). + Normalmente no es necesario modificar esta opción. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>GAZE_URL: http://gaze.mysociety.org</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="forward_nonbounce_responses_to"><code>FORWARD_NONBOUNCE_RESPONSES_TO</code></a> + </dt> + <dd> + Dirección de correo electrónico a la que se dirigen las respuestas no rebotadas. Consulte también la <a href="{{ page.baseurl }}/docs/installing/email#how-alaveteli-handles-email">gestión de correo de Alaveteli</a>. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>FORWARD_NONBOUNCE_RESPONSES_TO: soporte-usuario@ejemplo.com</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="html_to_pdf_command"><code>HTML_TO_PDF_COMMAND</code></a> + </dt> + <dd> + Ruta hacia un programa que convierte una página HTML de un archivo a PDF. Debería + recibir dos parámetros: la dirección URL y la ruta del archivo de salida. + Se recomienda una version binaria estática de <a href="http://wkhtmltopdf.org">wkhtmltopdf</a>. + Si el comando no está presente, se generará en su lugar una versión de texto. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>HTML_TO_PDF_COMMAND: /usr/local/bin/wkhtmltopdf-amd64</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="exception_notifications_from"><code>EXCEPTION_NOTIFICATIONS_FROM</code></a> y + <a name="exception_notifications_to"><code>EXCEPTION_NOTIFICATIONS_TO</code></a> + </dt> + <dd> + Direcciones de correo utilizadas para enviar notificaciones de excepciones. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <pre> +EXCEPTION_NOTIFICATIONS_FROM: no-responda-a-esta-direccion@ejemplo.com + +EXCEPTION_NOTIFICATIONS_TO: + - robin@ejemplo.com + - seb@ejemplo.com +</pre> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="max_requests_per_user_per_day"><code>MAX_REQUESTS_PER_USER_PER_DAY</code></a> + </dt> + <dd> + Este límite puede desactivarse por usuario a través de la interfaz de administración. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>MAX_REQUESTS_PER_USER_PER_DAY: 6</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="varnish_host"><code>VARNISH_HOST</code></a> + </dt> + <dd> + Si su sitio funciona con Varnish, + puede activar esta opción para + averiguar dónde enviar las solicitudes + de purga. En caso contrario, no + la configure. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>VARNISH_HOST: null</code> + </li> + <li> + <code>VARNISH_HOST: localhost</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="ga_code"><code>GA_CODE</code> (GA=Google Analytics)</a> + </dt> + <dd> + Añadir aquí un valor activará Google Analytics en todas las páginas que no pertenezcan a la administración para todos los usuarios que no sean administradores. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>GA_CODE: ''</code> + </li> + <li> + <code>GA_CODE: 'AB-8222142-14'</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="override_all_public_body_request_emails"><code>OVERRIDE_ALL_PUBLIC_BODY_REQUEST_EMAILS</code></a> + </dt> + <dd> + Utilice esta opción si desea sobrescribir <strong>todas</strong> las direcciones de correo de solicitudes para organismos públicos + con su propia dirección de correo, para que los mensajes de solicitudes que normalmente se dirigirían a los organismos + públicos se dirijan a usted en su lugar. + Esta opción resulta práctica en el servidor de pruebas para poder reproducir el proceso completo de envío de solicitudes + si remitir correos a ninguna autoridad real. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <code>OVERRIDE_ALL_PUBLIC_BODY_REQUEST_EMAILS: test-email@foo.com</code> + </li> + <li> + Si no le interesa este comportamiento, comente la opción: + <br> + <code># OVERRIDE_ALL_PUBLIC_BODY_REQUEST_EMAILS:</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="utility_search_path"><code>UTILITY_SEARCH_PATH</code></a> + </dt> + <dd> + Ruta de búsqueda para utilidades externas de línea de comando (como pdftohtml, pdftk y unrtf). + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>UTILITY_SEARCH_PATH: ["/usr/bin", "/usr/local/bin"]</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="mta_log_path"><code>MTA_LOG_PATH</code></a> + </dt> + <dd> + Ruta hacia sus archivos de registro de exim o postfix que serán absorbidos por + <code>script/load-mail-server-logs</code>. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>MTA_LOG_PATH: '/var/log/exim4/exim-mainlog-*'</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="mta_log_type"><code>MTA_LOG_TYPE</code></a> + </dt> + <dd> + ¿Utiliza «exim» o «postfix» para su servidor de correo (MTA)? + + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>MTA_LOG_TYPE: "exim"</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="donation_url"><code>DONATION_URL</code></a> + </dt> + <dd> + URL donde las personas pueden donar dinero a la organización que gestiona el sitio. Si se configura, + se incluirá en el mensaje que ven los usuarios cuando su solicitud tiene resultados satisfactorios. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>DONATION_URL: "https://www.mysociety.org/donate/"</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="public_body_statistics_page"><code>PUBLIC_BODY_STATISTICS_PAGE</code></a> y + <a name="minimum_requests_for_statistics"><code>MINIMUM_REQUESTS_FOR_STATISTICS</code></a> + </dt> + <dd> + Si a <strong>PUBLIC_BODY_STATISTICS_PAGE</strong> se le asigna el valor «true», Alaveteli creará + una página de estadísticas sobre el comportamiento de los organismos públicos (que puede consultar en + <code>/body_statistics</code>). + La página solo considerará los organismos públicos que hayan recibido al menos el número de solicitudes + definido en <strong>MINIMUM_REQUESTS_FOR_STATISTICS</strong>. + + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>PUBLIC_BODY_STATISTICS_PAGE: false</code> + </li> + <li> + <code>MINIMUM_REQUESTS_FOR_STATISTICS: 50</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="public_body_list_fallback_to_default_locale"><code>PUBLIC_BODY_LIST_FALLBACK_TO_DEFAULT_LOCALE</code></a> + </dt> + <dd> + Si desea que la página del listado de organismos públicos incluya autoridades que no disponen de traducción + para la localización actual (pero que sí disponen de traducción para la localización predeterminada), asigne el valor «true» a esta variable. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>PUBLIC_BODY_LIST_FALLBACK_TO_DEFAULT_LOCALE: false</code> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="use_mailcatcher_in_development"><code>USE_MAILCATCHER_IN_DEVELOPMENT</code></a> + </dt> + <dd> + <!-- TODO check mailcatcher URL --> + Si se el asigna el valor «true», durante la fase de desarrollo, intente enviar correo por SMTP al puerto + 1025 (puerto predeterminado de escucha de <a href="http://mailcatcher.me">mailcatcher</a>): + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>USE_MAILCATCHER_IN_DEVELOPMENT: true</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="cache_fragments"><code>CACHE_FRAGMENTS</code></a> + </dt> + <dd> + Utilice memcached para almacenar en caché fragmentos de HTML con la finalidad. + de obtener un mejor rendimiento. Solo tendrá efecto en entornos en los que se + asigne a <code>config.action_controller.perform_caching</code> el valor «true». + + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>CACHE_FRAGMENTS: true</code> + </li> + </ul> + </div> + </dd> + + + + <dt> + <a name="shared_files_path"><code>SHARED_FILES_PATH</code></a> + </dt> + <dd> + En algunas implementaciones de Alaveteli tal vez desee instalar cada nueva versión + implementada junto con las anteriores, en cuyo caso ciertos archivos y recursos + se compartirán entre las diferentes instalaciones. + Por ejemplo, el directorio de archivos, <code>files</code>, el directorio <code>cache</code> + y los gráficos generados, tales como <code>public/foi-live-creation.png</code>. Si + instala Alaveteli con este tipo de configuración, asigne a <strong>SHARED_FILES_PATH</strong> + el directorio en el que almacena estos archivos. En caso contrario, déjela en blanco. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>SHARED_FILES_PATH: ''</code> <!-- TODO specific example --> + </li> + </ul> + </div> + </dd> + + + <dt> + <a name="shared_files"><code>SHARED_FILES</code></a> y + <a name="shared_directories"><code>SHARED_DIRECTORIES</code></a> + </dt> + <dd> + Si tiene configurada la variable <strong>SHARED_FILES_PATH</strong>, estas opciones listan + los archivos y directorios que se comparten, por ejemplo, aquellos hacia los que los scripts + de despliegue crean enlaces simbólicos desde el repositorio. + <div class="more-info"> + <p>Ejemplos:</p> + <ul class="examples"> + <li> + <pre> +SHARED_FILES: + - config/database.yml + - config/general.yml + - config/rails_env.rb + - config/newrelic.yml + - config/httpd.conf + - public/foi-live-creation.png + - public/foi-user-use.png + - config/aliases + </pre> + </li> + <li> + <pre> +SHARED_DIRECTORIES: + - files/ + - cache/ + - lib/acts_as_xapian/xapiandbs/ + - vendor/bundle + - public/assets + </pre> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="allow_batch_requests"><code>ALLOW_BATCH_REQUESTS</code></a> + </dt> + <dd> + Permita que algunos usuarios realicen solicitudes en bloque a múltiples autoridades. Una vez + asignado el valor «true» a esta variable, puede activar las solicitudes en bloque para usuarios + individuales a través de la página de administración de cada usuario. + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>ALLOW_BATCH_REQUESTS: false</code> + </li> + </ul> + </div> + </dd> + + <dt> + <a name="responsive_styling"><code>RESPONSIVE_STYLING</code></a> + </dt> + <dd> + + Utilice las plantillas y hojas de estilo de diseño web adaptable en lugar de + aquellas que solo muestran el sitio con una anchura determinada. Estas hojas + de estilo son experimentales actualmente, pero se predeterminarán en el futuro. + Permiten que el sitio se muestre correctamente en dispositivos móviles, así + como en pantallas de mayor tamaño. Actualmente las hojas de estilos de anchura + fija se utilizan por defecto. + + <div class="more-info"> + <p>Ejemplo:</p> + <ul class="examples"> + <li> + <code>RESPONSIVE_STYLING: true</code> + </li> + </ul> + </div> + </dd> + +</dl> + +<a name="other-config"> </a> + +## Otros archivos de configuración + +Existen otros archivos de configuración para Alaveteli, que puede encontrar en el +directorio `config`. Se presentan en el repositorio de git como archivos `*-example`, +que puede copiar en su correspondiente ubicación. + +<dl> + <dt> + <strong>database.yml</strong> + </dt> + <dd> + ajustes de base de datos (para Rails) + </dd> + <dt> + <strong>deploy.yml</strong> + </dt> + <dd> + especificaciones de implementación utilizadas por Capistrano + </dd> + <dt> + <strong>httpd.conf, nginx.conf</strong> + </dt> + <dd> + sugerencias de configuración de Apache y Nginx + </dd> + <dt> + <strong>newrelic.yml</strong> + </dt> + <dd> + configuración de análisis + </dd> +</dl> diff --git a/es/docs/customising/index.md b/es/docs/customising/index.md new file mode 100644 index 000000000..030466411 --- /dev/null +++ b/es/docs/customising/index.md @@ -0,0 +1,44 @@ +--- +layout: es/page +title: Personalización +--- + +# Personalización de Alaveteli + +<p class="lead"> + Existen dos formas de aplicar el aspecto y funcionamiento deseados a su instalación. + Algunos comportamientos pueden controlarse con <strong>los ajustes de configuración</strong>. + Para realizar cambios más complejos, necesitará crear un nuevo <strong>tema</strong>. +</p> + + +## Ajustes de configuración + +Puede personalizar numerosos comportamientos de Alaveteli solamente editando el archivo de configuración. +Esta [lista completa de los ajustes de configuración de Alaveteli]({{ page.baseurl }}/docs/customising/config/) +muestra el tipo de opciones que puede controlar de este modo. + +<!-- TODO key settings --> + +## Adaptaciones sencillas de marca: color y logotipo + +Es habitual querer cambiar la apariencia básica del sitio. A pesar de que puede simplemente +editar las plantillas y los estilos CSS predeterminados, le **recomendamos +encarecidamente** que [cree un tema]({{ page.baseurl }}/docs/customising/themes/). + +Los temas no necesitan ser especialmente complejos, pero le permiten añadir sus cambios junto +con el código principal, que puede actualizar (cuando haya nuevas versiones o +actualizaciones disponibles). + +## ¿Necesita Alaveteli en un idioma diferente? + +¡Ningún problema! Consulte esta [información sobre la traducción de Alaveteli]({{ page.baseurl }}/docs/customising/translation/). + +## Cambios complejos + +Si es un desarrollador (o cuenta con un equipo de programadores disponible), puede +añadir todas las personalizaciones que desee. Pero es importante que lo haga sin romper +el código principal para que pueda aceptar actualizaciones y versiones nuevas. +Encontrará más detalles en la [página sobre los temas]({{ page.baseurl }}/docs/customising/themes/). + +Consulte también la [documentación para desarrolladores]({{ page.baseurl }}/docs/developers/). diff --git a/es/docs/customising/states.md b/es/docs/customising/states.md new file mode 100644 index 000000000..660972d98 --- /dev/null +++ b/es/docs/customising/states.md @@ -0,0 +1,218 @@ +--- +layout: es/page +title: Estados de solicitud +--- + +# Estados de solicitud + +<p class="lead"> + Una <a href="{{ page.baseurl }}/docs/glossary/#request" class="glossary__link">solicitud</a> + atraviesa distintos <strong>estados</strong> durante su proceso. Estos pueden variar + de una jurisdicción a otra. +</p> + +Los estados de solicitud están definidos en el código de Alaveteli y le recomendamos su +uso (siempre que concuerden con la <a href="{{ page.baseurl }}/docs/glossary/#foi" +class="glossary__link">ley de información pública</a> de su propia jurisdicción). Pero si necesita +personalizarlos, puede consultar la +<a href="{{ page.baseurl }}/docs/customising/themes/#personalizar-los-estados-de-solicitud">personalización de los estados de solicitud</a> +para obtener más información. + +## Ejemplo de WhatDoTheyKnow + +Las solicitudes efectuadas en el sitio basado en Alaveteli del Reino Unido, [WhatDoTheyKnow](https://www.whatdotheyknow.com), +pueden hallarse en cualquiera de los estados descritos a continuación. + +Su sitio no tiene por qué utilizar los mismos estados que utiliza WhatDoTheyKnow. Por ejemplo, +el sitio de Kosovo utiliza unos estados ligeramente distintos: consulte +[esta comparación de las diferencias entre ambos]({{ page.baseurl }}/docs/customising/states_informatazyrtare/). + +### Estados + +<ul class="definitions"> + <li><a href="#waiting_response">waiting_response</a></li> + <li><a href="#waiting_classification">waiting_classification</a></li> + <li><a href="#waiting_response_overdue">waiting_response_overdue</a></li> + <li><a href="#waiting_response_very_overdue">waiting_response_very_overdue</a></li> + <li><a href="#waiting_clarification">waiting_clarification</a></li> + <li><a href="#gone_postal">gone_postal</a></li> + <li><a href="#not_held">not_held</a></li> + <li><a href="#rejected">rejected</a></li> + <li><a href="#successful">successful</a></li> + <li><a href="#partially_successful">partially_successful</a></li> + <li><a href="#internal_review">internal_review</a></li> + <li><a href="#error_message">error_message</a></li> + <li><a href="#requires_admin">requires_admin</a></li> + <li><a href="#user_withdrawn">user_withdrawn</a></li> + <li><a href="#awaiting_description">awaiting_description</a></li> +</ul> + + +<dl class="glossary"> + + <dt> + <a name="waiting_response">waiting_response</a> + </dt> + <dd> + Esperando a que la autoridad pública responda. + <ul> + <li>Estado inicial por defecto.</li> + <li>No se puede pasar a este estado desde internal_review.</li> + </ul> + </dd> + + <dt> + <a name="waiting_classification">waiting_classification</a> + </dt> + <dd> + Esperando la clasificación de una respuesta. + <ul> + <li>Estado por defecto tras recibir una respuesta.</li> + </ul> + </dd> + + <dt> + <a name="waiting_response_overdue">waiting_response_overdue</a> + </dt> + <dd> + Se ha esperado una respuesta durante demasiado tiempo. + <ul> + <li>Automático, si la fecha actual coincide con la fecha de la solicitud + festivos + 20 días.</li> + <li>Cuando un usuario actualiza/visita un elemento en este estado, se le da las gracias y se le indica cuánto tiempo debería tener que esperar.</li> + <li>Se alerta al usuario por correo cuando alguna solicitud se halla fuera de plazo.</li> + </ul> + </dd> + + <dt> + <a name="waiting_response_very_overdue">waiting_response_very_overdue</a> + </dt> + <dd> + Se ha esperado una respuesta durante muchísimo tiempo. + <ul> + <li>Automático, si la fecha actual coincide con la fecha de la solicitud + festivos + (60 días (para escuelas) o 40 días (todos los demás)).</li> + <li>Cuando un usuario actualiza/visita un elemento en este estado, se le sugiere que efectúe una reclamación, mostrando las acciones que puede emprender.</li> + <li>Se alerta al usuario por correo cuando alguna solicitud se halla en este estado.</li> + </ul> + </dd> + + <dt> + <a name="waiting_clarification">waiting_clarification</a> + </dt> + <dd> + La autoridad pública solicita una explicación sobre una parte de la solicitud. + <ul> + <li>Se envía una petición al usuario para que incluya información al respecto.</li> + <li>Si el usuario envía un mensaje saliente en una solicitud en este estado, esta pasa automáticamente al estado {{waiting_response}}.</li> + <li>Tres días más tarde de pasar a este estado, se envía un recordatorio al usuario para que actúe al respecto (suponiendo que el usuario no está bloqueado).</li> + <li>No es posible pasar a este estado desde internal_review.</li> + </ul> + </dd> + + <dt> + <a name="gone_postal">gone_postal</a> + </dt> + <dd> + La autoridad pública desea responder o ha respondido por correo postal. + <ul> + <li>Si está seleccionado este estado, se recuerda al usuario que en numerosos casos la autoridad debería responder por correo electrónico y se le anima a insistir.</li> + <li>Se proporciona la dirección de correo electrónico más reciente de la autoridad al usuario para que se solicite la comunicación postal por correo electrónico privado.</li> + <li>Se anima al usuario a actualizar la solicitud con una anotación en una fecha posterior.</li> + </ul> + </dd> + + <dt> + <a name="not_held">not_held</a> + </dt> + <dd> + La autoridad pública no dispone de la información solicitada. + <ul> + <li>Se sugiere al usuario que pruebe con una autoridad diferente o que efectúe una reclamación.</li> + </ul> + </dd> + + <dt> + <a name="rejected">rejected</a> + </dt> + <dd> + La solicitud ha sido rechazada por la autoridad pública. + <ul> + <li>Se muestra la página de posibles pasos a seguir.</li> + </ul> + </dd> + + + <dt> + <a name="successful">successful</a> + </dt> + <dd> + Se ha recibido toda la información solicitada. + <ul> + <li>Se sugiere que el usuario añada un comentario o haga una donación.</li> + </ul> + </dd> + + + <dt> + <a name="partially_successful">partially_successful</a> + </dt> + <dd> + Se ha recibido parte de la información solicitada. + <ul> + <li>Se sugiere al usuario que haga una donación y se ofrecen ideas sobre qué pasos seguir.</li> + </ul> + </dd> + + <dt> + <a name="internal_review">internal_review</a> + </dt> + <dd> + Esperando a que la autoridad pública complete una revisión interna de su gestión respecto a la solicitud. + <ul> + <li>Se indica al usuario que debería esperar una respuesta dentro de los primeros 20 días.</li> + <li>Cuando se envía un correo a la autoridad, se añade «Revisión interna de» en el asunto.</li> + <li>Se puede pasar a este estado desde el formulario de seguimiento.</li> + </ul> + </dd> + + <dt> + <a name="error_message">error_message</a> + </dt> + <dd> + Se ha recibido un mensaje de error, por ejemplo, un fallo de entrega. + <ul> + <li>Se da las gracias al usuario por informar sobre el tema y se sugiere el uso de un formulario para que proporcione una nueva dirección de correo de la autoridad, si este es el problema.</li> + <li>Se marca para revisión por parte de un administrador.</li> + </ul> + </dd> + + <dt> + <a name="requires_admin">requires_admin</a> + </dt> + <dd> + Una respuesta extraña que requiere atención por parte del equipo de WhatDoTheyKnow. + <ul> + <li>Un usuario se confunde y no sabe qué estado asignar para que intervenga un administrador.</li> + <li>Se redirige al usuario a un formulario para solicitar más información.</li> + <li>Se marca para revisión por parte de un administrador.</li> + </ul> + </dd> + + <dt> + <a name="user_withdrawn">user_withdrawn</a> + </dt> + <dd> + El solicitante ha abandonado la solicitud por algún motivo. + <ul> + <li>Se solicita al usuario que escriba un mensaje para avisar a la autoridad.</li> + </ul> + </dd> + + <dt> + <a name="awaiting_description">awaiting_description</a> + </dt> + <dd> + El awaiting_description no es realmente de un estado, sino de un distintivo que indica que no hay ningún estado. + </dd> + +</dl> + diff --git a/es/docs/customising/states_informatazyrtare.md b/es/docs/customising/states_informatazyrtare.md new file mode 100644 index 000000000..8a230371d --- /dev/null +++ b/es/docs/customising/states_informatazyrtare.md @@ -0,0 +1,87 @@ +--- +layout: es/page +title: Estados de solicitud (InformataZyrtare) +--- + +# Estados de solicitud: comparación de ejemplo + +<p class="lead"> + Esta página muestra las diferencias entre los estados utilizados en dos implementaciones + distintas de Alaveteli: una en Kosovo y otra en Reino Unido. Se trata de un ejemplo + práctico que muestra que es posible personalizar los estados que su sitio utiliza. +</p> + +Los estados des solicitud están definidos en el código de Alaveteli y le recomendamos +utilizarlos (siempre que concuerden con la <a href="{{ page.baseurl }}/docs/glossary/#foi" +class="glossary__link">ley de información pública</a> de su propia jurisdicción). + +## Ejemplo de InformataZyrtare.org (Kosovo) + +Las solicitudes realizadas en la implementación de Alaveteli de Kosovo, +[InformataZyrtare](http://informatazyrtare.org), utilizan unos estados ligeramente diferentes +a los utilizados en la implementación de Reino Unido, [WhatDoTheyKnow](http://www.whatdotheyknow.com) +(WDTK). + +En general estas diferencias se deben a que la legislación local o el modo en que funcionan +los grupos que gestionan los sitios son distintos y se hallan en distintos lugares. Alavateli +facilita los cambios permitiendo personalizar los estados que se utilizan. + +Este ejemplo muestra claramente que puede utilizar distintos estados dependiendo de sus +requisitos locales y el aspecto que pueden tener. Consulte la [personalización de los estados +de solicitud]({{ page.baseurl }}/docs/customising/themes/) para obtener detalles sobre cómo hacerlo. + +### Estados utilizados por InformataZyrtare, pero no por WDTK + + * <a href="#deadline_extended">deadline_extended</a> + * <a href="#partial_rejected">partial_rejected</a> + * <a href="#wrong_response">wrong_response</a> + +### Estados utilizados por WDTK, pero no por InformataZyrtare + + * <a href="{{ page.baseurl }}/docs/customising/states/#awaiting_description">awaiting_description</a> + * <a href="{{ page.baseurl }}/docs/customising/states/#gone_postal">gone_postal</a> + * <a href="{{ page.baseurl }}/docs/customising/states/#internal_review">internal_review</a> + * <a href="{{ page.baseurl }}/docs/customising/states/#user_withdrawn">user_withdrawn</a> + * <a href="{{ page.baseurl }}/docs/customising/states/#waiting_response_very_overdue">waiting_response_very_overdue</a> + +Para obtener más información, consulte todos los [estados utilizados por WhatDoTheyKnow]({{ page.baseurl }}/docs/customising/states/). + + +--- + + + +### Detalles de los estados de InformataZytare + +Los estados no representados dentro de los [estados de WDTK]({{ page.baseurl }}/docs/customising/states/) +se describen aquí más detalladamente: + +<ul class="definitions"> + <li><a href="#deadline_extended">deadline_extended</a></li> + <li><a href="#partial_rejected">partial_rejected</a></li> + <li><a href="#wrong_response">wrong_response</a></li> +</ul> + +<dl class="glossary"> + <dt> + <a name="deadline_extended">deadline_extended</a> + </dt> + <dd> + La autoridad ha solicitado una extensión del tiempo disponible para responder. + </dd> + <dt> + <a name="partial_rejected">partial_rejected</a> + </dt> + <dd> + Solo se ha rechazado parte de la solicitud, pero la parte satisfactoria de la solicitud + no se ha adjuntado. + </dd> + <dt> + <a name="wrong_response">wrong_response</a> + </dt> + <dd> + La autoridad ha respondido, pero la respuesta no corresponde a la solicitud realizada. + </dd> + +</dl> + diff --git a/es/docs/customising/themes.md b/es/docs/customising/themes.md new file mode 100644 index 000000000..5327b31d8 --- /dev/null +++ b/es/docs/customising/themes.md @@ -0,0 +1,191 @@ +--- +layout: es/page +title: Temas +--- + +# Temas de Alaveteli + +<p class="lead"> + Alaveteli utiliza <strong>temas</strong> para que el sitio tenga un aspecto + y un funcionamiento distintos del predeterminado.. + Los cambios pequeños, como el color y el logotipo, son relativamente sencillos, pero los temas + también pueden controlar detalles más complejos, como el <em>comportamiento</em> del sitio. +</p> + +Al personalizar su sitio basado en Alaveteli, existen numerosos detalles que puede modificar +con tan solo editar los [ajustes de configuración]({{ page.baseurl }}/docs/customising/config/). +Pero si desea modificar el aspecto del sitio o añadir comportamientos más específicos, +necesitará elaborar un **tema**. + +No necesita ser programador para realizar pequeños cambios, pero necesitará tener la suficiente +confianza para copiar y modificar algunos archivos. Si no está seguro sobre este tema, +¡[pida ayuda](/community/)! + +## Qué le puede interesar cambiar + +El requisito más habitual es añadir una marca al sitio, por lo menos, +[insertar su propio logotipo](#modificar-el-logotipo) y su [esquema de colores](#modificar-el-esquema-de-colores). +Es posible que también desee modificar los distintos estados en los que puede +hallarse una solicitud. También querrá editar las categorías en las que los organismos públicos pueden +aparecer (por ejemplo, los grupos a mano izquierda de la página +«[View authorities](https://www.whatdotheyknow.com/body/list/all)» en +WhatDoTheyKnow). + +Es posible que desee personalizar otras opciones; escriba a la lista de correo de +desarrollo para comentar sus necesidades. ¡Seguimos trabajando para encontrar +el mejor método de llevar a cabo este tipo de modificaciones! + +En todo caso, el principio importante a tener en cuenta es que cuanto menos +sobrescriba y personalice el código, más sencillo será el mantenimiento de su +sitio a largo plazo. Toda personalización es posible, pero +para cada modificación más allá de los casos sencillos aquí documentados, +pregúntese (o pregunte a su cliente): «¿podemos vivir sin esto?». Si la +respuesta es «no», considere iniciar un debate sobre una forma +de implementar los cambios mediante un complemento en lugar de sobrescribir el código central. + +## Principios generales + +Intentamos encapsular todas las funcionalidades específicas del sitio en uno +de los siguientes lugares: + +* [Configuración]({{ page.baseurl }}/docs/customising/config/) del sitio + (por ejemplo, el nombre de su sitio, los idiomas + disponibles, etc., en `config/general.yml`). +* Datos (por ejemplo, los organismos públicos a lso que deben dirigirse las solicitudes). +* Un tema, instalado en `lib/themes`. + +Este documento trata sobre lo que puede hacer en un tema. + +Por defecto, el tema de muestra («alavetelitheme») ya está instalado. +Consulte la opción +[`THEME_URLS`]({{ page.baseurl }}/docs/customising/config/#theme_urls) +en `general.yml` para obtener información. + +También puede instalar el tema de muestra manualmente ejecutando: + + bundle exec rake themes:install + +El tema de muestra contiene ejemplos para prácticamente todo lo que pueda +interesarle personalizar. Probablemente le interese efectuar una copia, renombrarla +y utilizarla como base para su propio tema. + +## Asegúrese de que su tema es lo más ligero posible + +Cuanto más añade a su tema, más difícil resulta actualizarlo a versiones +futuras de Alaveteli. Toda la información que añade a su tema +sobrescribe detalles del tema central, así que, si elabora una nueva «plantilla +principal», los nuevos widgets que aparezcan en el tema principal no aparecerán +en su sitio web. + +Por tanto, debería considerar cómo puede adaptar el sitio a su marca sin +modificar el tema principal en exceso. Lo ideal sería que pudiese adaptar el +sitio modificando únicamente los estilos CSS. También necesitará añadir +páginas de ayuda personalizadas, como se describe a continuación. + +## Adaptar el sitio a su marca + +Las plantillas principales que comprenden la apariencia y la interfaz de usuario de un +sitio basado en Alaveteli se hallan en `app/views/` y utilizan la sintaxis ERB de Rails. +Por ejemplo, la plantilla para la página de inicio se encuentra en +`app/views/general/frontpage.html.erb` y la correspondiente a la página de información +del sitio, en `app/views/help/about.html.erb`. + +Evidentemente *podría* editar directamente estos archivos centrales, pero no sería una +buena idea, puedes cada vez le resultaría más difícil aplicar actualizaciones. +Dicho esto, a veces le interesará modificar las plantillas centrales de forma que +ofrezcan ventajas para todo el mundo, en cuyo caso, puede debatir los cambios en la +lista de correo, aplicarlos en una adaptación de Alaveteli y publicar una solicitud +de extracción (pull request). + +Sin embargo, normalmente debería sobrescribir estas páginas **en su propio +tema**, situándolas en la ubicación correspondiente dentro del directorio +`lib/` del tema. Es decir, se mostrará el archivo ubicado en +`lib/themes/alavetelitheme/lib/views/help/about.html.erb` en +lugar del archivo principal de información sobre el sitio. + +### Modificar el logotipo + +Alaveteli utiliza el [flujo de atributos](http://guides.rubyonrails.org/asset_pipeline.html) de Rails para convertir y comprimir las hojas de estilos escritas en +<a href="{{ page.baseurl }}/docs/glossary/#sass" class="glossary__link">Sass</a>, +la extensión del lenguaje CSS, en CSS minimizados y concatenados. Los atributos se almacenan en el núcleo de Alaveteli, en `app/assets`, como `fonts`, `images`, `javascripts` y `stylesheets`. +El tema predeterminado incluye los directorios de atributos correspondientes en `alavetelitheme/assets`. Los archivos añadidos a estos directorios tendrán prioridad sobre los ubicados en los directorios centrales. Al igual que con las plantillas, aparecerá el archivo `lib/themes/alavetelitheme/assets/images/logo.png` en el sitio en lugar del logotipo `app/assets/images/logo.png`. + +### Modificar el esquema de colores + +Alaveteli utiliza un conjunto básico de módulos de +<a href="{{ page.baseurl }}/docs/glossary/#sass" class="glossary__link">Sass</a> +para definir la apariencia del sitio en dispositivos de distintos tamaños, así como algunos estilos básicos. Estos módulos se hallan en `app/assets/stylesheets/responsive`. Los colores y fuentes se añaden en el tema, alavetelitheme los define en `lib/themes/alavetelitheme/assets/stylesheets/responsive/custom.scss`. Los colores utilizados en el tema se definen como variables en la parte superior de este archivo, donde pueden editarse. + +### Modificar otros detalles de estilo + +Para modificar otras opciones de estilo, puede añadir o editar los estilos en `lib/themes/alavetelitheme/assets/stylesheets/responsive/custom.scss`. Los estilos definidos aquí tendrán prioridad sobre los ubicados en los módulos Sass, en `app/assets/stylesheets/responsive`, pues serán importados en último lugar por `app/assets/stylesheets/responsive/all.scss`. Sin embargo, si desea modificar significativamente el modo en que se muestra una parte concreta del sitio, puede interesarle sobrescribir uno de los módulos principales Sass. Puede sobrescribir la apariencia de la página de inicio, por ejemplo copiando `app/assets/stylesheets/responsive/_frontpage_layout.scss` a `lib/themes/alavetelitheme/assets/stylesheets/responsive/_frontpage_layout.scss` y editándolo después. + +Puede cargar hojas de estilos y archivos javascript adicionales añadiéndolos a `lib/themes/alavetelitheme/lib/views/general/_before_head_end.html.erb`. + +## Añadir sus propias categorías de organismos públicos + +En Alaveteli las categorías se implementan utilizando etiquetas. Pueden utilizarse +etiquetas específicas para agrupar autoridades en categorías. Las categorías +se agrupan a su vez bajo encabezados de categoría en el margen de la página +de visualización de autoridades, «View authorities». Puede crear, editar y reorganizar +categorías y encabezados de categoría desde la interfaz de administración, en el +elemento «Categories» del menú. Puede aplicar las etiquetas de categoría creadas +a las autoridades en el elemento «Authorities» del menú de administración. Para que +una autoridad aparezca dentro de una categoría, la etiqueta de dicha categoría debe +ser una de las aplicadas a la autoridad en cuestión. + +## Personalizar los estados de solicitud + +Como ya se ha mencionado, si puede vivir con los +[estados de solicitud predeterminados de Alaveteli]({{ page.baseurl }}/docs/customising/states/), +es buena idea hacerlo. Tenga en cuenta que puede definir tras cuántos días se considera +que una solicitud está «fuera de plazo» en el archivo de configuración principal del sitio: consulte +[`REPLY_LATE_AFTER_DAYS`]({{ page.baseurl }}/docs/customising/config/#reply_late_after_days). + +Si no puede vivir con los estados tal y como están, existe un método muy básico para añadir otros +(que se irá mejorando con el tiempo). Actualmente no existe una forma sencilla de eliminar +un estado. Hay un ejemplo sobre cómo llevar a cabo estos cambios en el tema `alavetelitheme`. + +Para añadir estados, cree dos módulos en su tema, +`InfoRequestCustomStates` y `RequestControllerCustomStates`. El primero +debe contener estos métodos: + +* `theme_calculate_status`: devuelve una etiqueta para identificar el estado actual de la solicitud. +* `theme_extra_states`: devuelve una lista de etiquetas para identificar los estados adicionales que desea soportar. +* `theme_display_status`: devuelve cadenas de texto legibles por humanos correspondientes a dichas etiquetas. + +El segundo debe contener el siguietne método: + +* `theme_describe_state`: devuelve un aviso para el usuario correspondiente + tras haber clasificado una solicitud y lo redirige a la página siguiente correspondiente. + +Una vez añadidos los estados adicionales, necesitará crear los siguientes archivos en su tema: + +* `lib/views/general/_custom_state_descriptions.html.erb`: descripciones sobre + sus nuevos estados, adecuadas para mostrar a usuarios finales. +* `lib/views/general/_custom_state_transitions_complete.html.erb`: + descripciones de estados nuevos que desee caracterizar como estados de + «completación», para mostrar en el formulario de clasificación que requerimos + que rellenen los solicitantes. +* `lib/views/general/_custom_state_transitions_pending.html.erb`: igual que el + anterior, pero para estados nuevos que desee caracterizar como estados «pendientes». + +Puede consultar ejemplos de estas personalizaciones en +[este commit](https://github.com/sebbacon/informatazyrtare-theme/commit/2b240491237bd72415990399904361ce9bfa431d) +para la versión de Kosovo de Alaveteli, Informata Zyrtare (ignore el +archivo `lib/views/general/_custom_state_transitions.html.erb`, no se utiliza). + +## Añadir nuevas páginas en la navegación + +`alavetelitheme/lib/config/custom-routes.rb` le permite extender las rutas básicas de +Alaveteli. El ejemplo de `alavetelitheme` añade una página de ayuda adicional. +También peude utilizar esta función para sobrescribir el comportamiento de páginas +especificas, si es necesario. + +## Añadir o sobrescribir modelos o controladores + +Si necesita añadir o extender el comportamiento de Alaveteli a nivel de modelo o controlador, consulte `alavetelitheme/lib/controller_patches.rb` y `alavetelitheme/lib/model_patches.rb` para obtener algunos ejemplos. + +## Trabajar con temas + +Puede utilizar [`script/switch-theme.rb`](https://github.com/mysociety/alaveteli/blob/master/script/switch-theme.rb) para definir el tema actual, si está trabajando con múltiples temas. Esta opción puede resultar útil para cambiar entre el tema predeterminado `alavetelitheme` y uno de su propia adaptación. diff --git a/es/docs/customising/translation.md b/es/docs/customising/translation.md new file mode 100644 index 000000000..f806181c8 --- /dev/null +++ b/es/docs/customising/translation.md @@ -0,0 +1,172 @@ +--- +layout: es/page +title: Traducción +--- + +# Traducción de Alaveteli + +<p class="lead"> + Hemos diseñado Alaveteli para ser utilizado en numerosas jurisdicciones + diferentes de todo el mundo. Si aún no soporta el idioma que necesita, puede + ayudar a traducirlo. Esta página explica cómo. +</p> + +## ¡Alaveteli ya incluye traducciones! + +Alaveteli incluye varias versiones en distintos idiomas listas para su uso. +Si Alaveteli ya se ha traducido al idioma (o idiomas) que necesita, solo +deberá configurarlo: consulte +[`AVAILABLE_LOCALES`]({{ page.baseurl }}/docs/customising/config/#available_locales). + +[Consulte el directorio `locale/`](https://github.com/mysociety/alaveteli/tree/master/locale) +para ver qué traducciones hay actualmente disponibles. Algunas son traducciones completas del +sitio, mientras que otras son parciales, bien porque las traducciones aún no se han finalizado, +o bien porque los traductores no han actualizado los textos desde la última vez que los +desarrolladores añadieron texto al sitio. + +Existen dos motivos por los que la traducción puede necesitar más trabajo antes de poder utilizarse: + +* **El idioma que desea no es uno de los que ya tenemos** <br> En este caso + no habrá ninguna entrada en ``locale/`` para este idioma porque Alaveteli aún + no ha sido traducido a su idioma por nadie. Consulte el resto de esta + página para averiguar cómo añadir una nueva traducción. + +* **La traducción a su idioma está incompleta o atrasada** <br> + Este estado puede deberse simplemente a que es una tarea en proceso. Además, a veces + una traducción incompleta ya cubre todas las áreas del sitio que necesita. + Por supuesto, puede añadir contenido a una traducción parcial, pero es una buena idea + consultarnos primero, ya que seguramente sabremos quién está trabajando en la traducción + actual y el estado de dicha traducción. + +Los traductores son miembros de la +[comunidad]({{ page.baseurl }}/community/) de Alaveteli y a menudo trabajan con +independencia de los desarrolladores. Por tanto, las traducciones pueden retrasarse +bastante respecto al código. Sin embargo, nuestro proceso de actualización incluye +una «detección de la traducción», que ofrece a los traductores la oportunidad de +ponerse al día. Consulte el resto de esta página para obtener más información. + +## Traducciones de Alaveteli + +No necesita ser programador para traducir Alaveteli, pues utilizamos un sitio web +externo llamado Transifex para ayudar en la gestión de las traducciones. Así se facilita +el trabajo de los traductores, pero significa que su equipo técnico necesitará realizar +cierto trabajo adicional para incluir las traducciones resultantes de vuelta en +Alaveteli, una vez se hallen disponibles. + +El proyecto Transifex se halla en +[https://www.transifex.net/projects/p/alaveteli](https://www.transifex.net/projects/p/alaveteli). +Probablemente le interese crear una cuenta (pregunte en la lista de correo). Esta plataforma ofrece una +interfaz de uso sencillo para contribuir en las traducciones. + +Alaveteli localiza cadenas de texto mediante el uso de gettext de GNU y +<a href="{{ page.baseurl }}/docs/glossary/#po" class="glossary__link">archivos <code>.pot</code> y <code>.po</code></a>. +Si es un desarrollador, debería consultar la +[internacionalización de Alaveteli]({{ page.baseurl }}/docs/developers/i18n/). + + +## Qué necesita hacer un traductor + +**Si solamente está trabajando en la traducción de Alaveteli a un idioma que conoce, +esta es la sección que debe consultar.** + +> Recuerde que Alaveteli +> [ya incluye algunas traducciones](#alaveteli-ya-incluye-traducciones), +> por lo que se recomienda que compruebe primero si realmente necesita efectuar la traducción. +> ¡Tal vez alguien haya traducido ya Alaveteli al idioma que necesita! + +Cuando un desarrollador añade una nueva funcionalidad a la interfaz de usuario de Alaveteli, +utiliza cierto código para destacar las frases o palabras (cadenas de texto o «strings») +que considera que deben traducirse. + +Cuando el +<a href="{{ page.baseurl }}/docs/glossary/#release" class="glossary__link">gestor de actualizaciones</a> +de Alaveteli planee una nueva actualización, cargará una plantilla que contenga todas las +cadenas de texto que deben traducirse (conocida como +<a href="{{ page.baseurl }}/docs/glossary/#po" class="glossary__link">archivo <code>.pot</code></a>) +en Transifex. Así sus propias traducciones en Transifex se actualizarán con las últimas +cadenas de texto. + +Al visitar Transifex, la plataforma le invitará a rellenar los valores para todas las +cadenas de texto nuevas o modificadas. Cuando una cadena haya sido ligeramente modificada, +por ejemplo, solamente en la puntuación (de «Hello» a «Hello!»), Transifex +sugerirá una traducción adecuada (busque la pestaña de sugerencias, *Suggestions*, +debajo de la cadena de texto original). + +Para que esta característica funcione correctamente, el gestor de actualizaciones debe +descargar sus traducciones, ejecutar un programa que inserta las sugerencias y después +cargarlas de nuevo. Por tanto, cuando se anuncie una nueva actualización candidata, asegúrese de +haber cargado todas las traducciones pertinentes o las perderá. + +Cuando se informa de una nueva actualización, se entra en un periodo de **detención de la traducción**: +durante este periodo los desarrolladores no deben añadir ninguna cadena de texto nueva al software, así +que puede confiar en que está traduciendo todo lo que habrá en la versión final. + +El gestor de actualizaciones también le indicará la **fecha límite de traducción**. Después de esta fecha +puede continuar contribuyendo en nuevas traducciones, pero ya no se incluirán en la versión actual. + + +### Notas generales sobre la traducción en Transifex + +Algunas cadenas tendrán comentarios adjuntos a ellas introducidos por los desarrolladores de +Alaveteli sobre el contexto donde aparece el texto dentro de la aplicación. Estos comentarios +aparecen en la pestaña de detalles *Details* del texto en Transifex. + +Algunas cadenas incluirán **placeholders** (marcadores de contenido) para indicar que Alaveteli +insertará algo de texto por sí mismo cuando las muestre. Estarán rodeados de +llaves dobles y tendrán este aspecto: + +<code> + some text with a {{placeholder}} in it +</code> + +En estas cadenas no deberá traducir estos elementos. Necesitan mantenerse +exactamente del mismo modo en que se presentan para que el texto pueda insertarse +correctamente: + +<code> + algo de texto con un {{placeholder}} en él +</code> + +Análogamente, algunas cadenas pueden contener pequeños fragmentos de código HTML, que se +mostrarán entre corchetes angulares (es probable que indiquen que el texto es un enlace o que +necesita un formato especial). Por ejemplo: + +<code> + please <a href=\"{{url}}\">send it to us</a> +</code> + +Del mismo modo, no deberá editar estos fragmentos entre corchetes. Manténgalos en la +traducción y edite solamente el texto a su alrededor. Así, el ejemplo se convertiría en: + +<code> + por favor <a href=\"{{url}}\">envíenoslo</a> +</code> + +Algunas cadenas de texto se hallan en forma de dos porciones de texto separadas por una barra vertical +(`|`), por ejemplo: `IncomingMessage|Subject`. Esta barra representa nombres de atributos, de forma que +`IncomingMessage|Subject` es el atributo correspondiente al asunto («Subject») de un mensaje entrante («IncomingMessage») +en el sitio. No priorice estos tipos de texto al traducir, pues actualmente no aparecen en +ningún lugar del sitio y, al hacerlo, solo se utilizan dentro de la interfaz de administración. Si los traduce, +solo debe modificar el texto situado *después* de las barras `|`. + + +## Cómo se incorporan las traducciones en Alaveteli + +Para incorporar las cadenas te texto traducidas de Transifex en Alaveteli, siga las +instrucciones indicadas en estas [notas de implementación]({{ page.baseurl }}/docs/developers/i18n/#notas-de-implementacin). +Este trabajo corresponde al departamento técnico de su equipo (o incluso al +gestor de actualizaciones de mySociety). Si los traductores no disponen de conocimientos técnicos, +pueden utilizar Transifex sin preocuparse por este tema. + + +## Desarrolladores e internacionalización + +Si está escribiendo código nuevo para Alaveteli, es un desarrollador +y necesita entender cómo generar el texto para facilitar el trabajo de los +traductores. Consulte la página sobre la +[internacionalización de Alaveteli]({{ page.baseurl }}/docs/developers/i18n/). + +Si es un desarrollador o traductor que está trabajando activamente en la internacionalización +del código de Alaveteli, debería hablar con nosotros para averiguar cuándo está programada la +próxima actualización, con el objetivo de preparar sus traducciones a tiempo para que se incluyan en ella. + |