<chapter id="dictionaries">
<title
>Diccionarios</title>

<para
>&kbabel; incluye 3 métodos de búsqueda de cadenas de mensajes <acronym
>PO</acronym
> traducidas:</para>

<itemizedlist
> <listitem
> <para
>Búsqueda de una traducción, utilizando una base de datos de traducciones </para
> </listitem
> <listitem
> <para
>Traducción rápida </para
> </listitem
> <listitem
> <para
>&kbabeldict; </para
> </listitem
> </itemizedlist>

<sect1 id="database">
<!-- FIXME: settings -->
<title
>Base de datos de traducciones</title>

<para
>La base de datos de traducciones le permite almacenar traducciones en una base de datos basada en Berkeley Database II, &ie;, se almacenan de forma binaria en su disco duro. La base de datos garantiza una búsqueda rápida entre un gran número de traducciones.</para>

<para
>Este método es el mejor integrado en &kbabel;. Además de la búsqueda y la traducción rápida, incorpora las siguientes características:</para>

<itemizedlist
> <listitem
> <para
>Cada nueva traducción introducida en el editor de &kbabel; puede almacenarse automáticamente en la base de datos.</para
> </listitem
> <listitem
> <para
>Esta base de datos puede utilizarse para hallar diferencias mediante <quote
>diff</quote
> en los <acronym
>msgid</acronym
>.</para
> </listitem
> </itemizedlist>

<para
>Obviamente, cuantas más traducciones haya almacenadas en la base de datos, más productivo resulta el trabajo con la misma. Para alimentar la base de datos puede utilizar la pestaña <guilabel
>Base de datos</guilabel
> en el diálogo de preferencias, o puede activar la adición automática de cada mensaje traducido en la misma pestaña.</para>

<sect2 id="database-settings">
<title
>Preferencias</title>
<para
> Puede configurar este método de búsqueda y cómo debe ser utilizado seleccionando <menuchoice
> <guisubmenu
>Preferencias</guisubmenu
> <guisubmenu
>Configurar diccionario</guisubmenu
> <guimenuitem
>Base de datos de traducciones</guimenuitem
> </menuchoice
> en el menú de &kbabel;. </para>
<para
> La pestaña <guilabel
>Genérico</guilabel
> contiene las preferencias generales de búsqueda en la base de datos. </para>
<variablelist
> <varlistentry
> <term
><guilabel
>Buscar en la base de datos completa (lenta)</guilabel
></term
> <listitem
> <para
> No utiliza <quote
>claves buenas</quote
>, busca en toda la base de datos. Es lento, pero devolverá los resultados más precisos. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Buscar en la lista de "claves buenas" (mejor)</guilabel
></term
> <listitem
> <para
> Utiliza una estrategia de <quote
>claves buenas</quote
>. Esta opción le dará la mejor relación entre velocidad y coincidencia exacta. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Devolver la lista de "claves buenas" (rápido)</guilabel
></term
> <listitem
> <para
> Símplemente devuelve las <quote
>claves buenas</quote
>, no intentando eliminar ningún otro texto. Este es el método más rápido, pero puede producir muchos resultados imprecisos. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guibutton
>Sensible a mayúsculas</guibutton
></term
> <listitem
> <para
> Distingue entre mayúsculas y minúsculas al buscar en el texto. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guibutton
>Normalizar espacio en blanco</guibutton
></term
> <listitem
> <para
> Evita los espacios en blanco innecesarios de los textos, de forma que la búsqueda ignorará las diferencias en los espacios en blanco, &eg; el número de espacios en el texto. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guibutton
>Borrar el comentario de contexto</guibutton
></term
> <listitem
> <para
> No incluye los comentarios de contexto en la búsqueda. Esto es mejor que esté activado. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Carácter a ignorar</guilabel
></term
> <listitem
> <para
>Aquí puede introducir caracteres, que serán ignorados durante la búsqueda. Un ejemplo típico podría ser la marca del acceso directo, &ie; &amp; en los textos de &kde;. </para
> </listitem
> </varlistentry
> </variablelist>
<para
> En la pestaña <guilabel
>Búsqueda</guilabel
> encontrará la posibilidad de especificar con más precisión los parámetros de búsqueda en el texto. Puede definir cómo buscar y también le permite utilizar otro método especial de búsqueda llamado <emphasis
><guilabel
>Sustitución de palabras</guilabel
></emphasis
>. Al sustituir una o dos palabras también se puede encontrar el texto aproximado. Por ejemplo, piense que está tratando de encontrar el texto <userinput
>Mi nombre es Andrea</userinput
>. </para>
<variablelist
> <varlistentry
> <term
><guilabel
>Igual</guilabel
></term
> <listitem
> <para
> El texto de la base de datos coincide si es el mismo que el de la cadena buscada. En nuestro ejemplo puede ser <emphasis
>Mi nombre es &amp;Andrea</emphasis
> (si &amp; está indicado como uno de los <guilabel
>Caracteres a ignorar</guilabel
> o la pestaña <guilabel
>Genérico</guilabel
>). </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Búsqueda contenida</guilabel
></term
> <listitem
> <para
> El texto de la base de datos coincide si la cadena de búsqueda está contenida en él. En nuestro caso sería <emphasis
>Mi nombre es Andrea, ¿vale?</emphasis
>. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Consulta contenida</guilabel
></term
> <listitem
> <para
> El texto de la base de datos coincide si la cadena buscada lo contiene. Para nuestro ejemplo podría ser <emphasis
>Andrea</emphasis
>. Puede utilizarlo para enumerar las posibilidades que se encontrarán. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guibutton
>Expresión regular</guibutton
></term
> <listitem
> <para
> Considerar el texto buscado como una expresión regular. Esto se utiliza mayormente en &kbabeldict;. Es difícil encontrar expresiones regular en los archivos PO. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guibutton
>Use una palabra de sustitución</guibutton
></term
> <listitem
> <para
> Si el texto de consulta contiene menos palabras que las especificada más abajo, también tratará de sustituir una de las palabras de la consulta. En nuestro ejemplo también encontraría <emphasis
>Tu nombre es Andrea</emphasis
>. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guibutton
>Máximo número de palabras en la consulta</guibutton
></term
> <listitem
> <para
> Número máximo de palabras en una consulta para activar la sustitución de una palabra. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Caracteres locales para expresiones regulares</guilabel
></term
> <listitem
> <para
> Caracteres que se considerarán parte de una expresión regular. </para
> </listitem
> </varlistentry
> </variablelist>
<note
> <para
> La sustitución de dos palabras aún no está implementada. </para
> </note>
</sect2>

<sect2 id="database-fill">
<title
>Alimentar la base de datos</title>
<para
> La pestaña <guilabel
>Base de datos</guilabel
> le permite definir dónde se almacena la base de datos en el disco. (<guilabel
>Directorio de base de datos</guilabel
>) y si se debe utilizar el añadido automático de las nuevas traducciones (<guibutton
>Auto incluir entrada a la base de datos</guibutton
>). En este caso deberá especificar el autor de la nueva traducción en <guilabel
>Añadir automáticamente entrada autor</guilabel
>. </para>
<para
> El resto de la pestaña le permite alimentar la base de datos a partir de archivos PO ya existentes. Utilice uno de los botones del centro de la ventana de diálogo. En las barras de progreso colocadas debajo de los botones se mostrará el desarrollo de la cargar del archivo. El botón <guilabel
>Cadenas repetidas</guilabel
> debería utilizarse en un caso especial, cuando una cadena traducida se repita en muchas ocasiones y no desea guardarlas todas. Aquí puede limitar el número de cadenas repetidas. </para>
<screenshot
> <screeninfo
>Alimentar la base de datos</screeninfo
> <mediaobject
> <imageobject
> <imagedata fileref="dbcan.png" format="PNG"/> </imageobject
> <textobject
><phrase
>Alimentar la base de datos a partir de los archivos PO existentes</phrase
></textobject
> </mediaobject
> </screenshot
></sect2>

<sect2 id="database-goodkeys">
<title
>Definición de claves buenas</title>
<para
> En la pestaña <guilabel
>Claves buenas</guilabel
> están los umbrales que especifican cómo rellenar la lista de claves buenas. <guilabel
>Número mínimo de palabras buscadas en la clave (%)</guilabel
> especifica eso exactamente. Se necesitará que el texto contenga sólo este porcentaje de las palabras para ser calificado como clave buena. El caso opuesto es <guilabel
>Número mínimo de palabras de la clave también en la búsqueda (%)</guilabel
>. La longitud de las palabras se puede establecer en el selector <guilabel
>Longitud máxima</guilabel
>. </para>
<para
>El texto buscado normalmente contiene un número de palabras genéricas, &eg;, artículos. Puede eliminar esas palabras en base a su frecuencia. Puede descartarlas por medio de <guilabel
>Descartar palabras más frecuentes que</guilabel
> o considerarlas como siempre presentes con <guilabel
>Palabras frecuentes se consideran como en todas las claves</guilabel
>. De esta forma las palabras frecuentes serán casi invisibles para las consultas. </para>
</sect2>
</sect1>


<sect1 id="auxiliary">
<title
>Archivo PO auxiliar</title>

<para
>Este método de búsqueda está basado en la coincidencia de la misma cadena original en inglés (el msgid) traducida a algún otro idioma en un archivo <acronym
>PO</acronym
> auxiliar. Es muy común en las lenguas romances tener palabras similares, al igual que ocurre entre las anglosajonas y las eslavas.</para>

<para
>Por ejemplo, digamos que vamos a traducir la palabra <quote
>on</quote
>, de <filename
>kdelibs.po</filename
>, al rumano, pero no tenemos ni idea. Si buscamos en el mismo archivo de la traducción francesa encontraremos <quote
>actif</quote
>, y en la española <filename
>activado</filename
>. Así podremos llegar a la conclusión de que la mejor opción en rumano será <quote
>activ</quote
>. &kbabel; automatiza esta tarea. En la actualiza únicamente se puede definir un archivo auxiliar para las búsquedas.</para>

<sect2 id="auxiliary-settings">
<title
>Preferencias</title>
<para
> Puede configurar este método de búsqueda seleccionando <menuchoice
> <guisubmenu
>Preferencias</guisubmenu
> <guisubmenu
>Configurar diccionario</guisubmenu
> <guimenuitem
>PO auxiliar</guimenuitem
> </menuchoice
> en el menú de &kbabel;.</para>

<para
>En el diálogo de <guilabel
>Configurar PO auxiliar del diccionario</guilabel
> puede seleccionar la ruta al archivo <acronym
>PO</acronym
> auxiliar. Para automatizar el cambio de archivo <acronym
>PO</acronym
> al editar un archivo diferente, hay varias variables delimitadas por el carácter <literal
>@</literal
> que son reemplazadas por el valor apropiado:</para>

<variablelist
> <varlistentry
> <term
>@PACKAGE@</term
> <listitem
><para
> El nombre de la aplicación o el paquete que se está traduciendo. Por ejemplo, se puede convertir en kbabel, kdelibs, konqueror, etc. </para
></listitem
> </varlistentry
> <varlistentry
> <term
>@LANG@</term
> <listitem
><para
> El código del idioma. Por ejemplo puede ser: de, es, fr, etc. </para
></listitem
> </varlistentry
> <varlistentry
> <term
>@DIRn@</term
> <listitem
><para
> donde <quote
>n</quote
> es un entero positivo. Esto se convierte en el <quote
>n</quote
>-ésimo directorio contando a partir del nombre del archivo (de derecha a izquierda). </para
></listitem
> </varlistentry
> </variablelist>

<para
>En la línea de edición se muestra la ruta real al archivo <acronym
>PO</acronym
> auxiliar. Aunque es mejor utilizar las variables, es posible elegir una ruta absoluta hacia un archivo <acronym
>PO</acronym
> existente. Veamos un ejemplo.</para>

<para
>Yo soy rumano y tengo algún conocimiento de francés y trabajo en la traducción de &kde;.</para>

<para
>El primer paso es descargar un <filename
>kde-i18n-fr.tar.bz2</filename
> actual desde el <ulink url="ftp://ftp.kde.org/pub/kde/snapshots/current/kde-i18n"
>servidor &FTP; de &kde;</ulink
> o utilizar el sistema <acronym
>CVS</acronym
> para descargar a mis disco duro un árbol de traducción del francés. Lo coloco en <filename
>/home/clau/cvs-cvs.kde.org/kde-i18n/fr</filename
>.</para>

<para
>Mi directorio de fuentes <acronym
>PO</acronym
> está en <filename
>/home/clau/cvs-cvs.kde.org/kde-i18n/ro</filename
>. No olvide seleccionar <guilabel
>PO auxiliar</guilabel
> como diccionario predeterminado y activar <guilabel
>Comenzar la búsqueda automáticamente</guilabel
> en la pestaña de <guilabel
>Búsqueda</guilabel
> del diálogo de <guilabel
>Preferencias</guilabel
> de &kbabel;.</para>

</sect2>
</sect1>

<sect1 id="compendium">
<!-- FIXME: examples -->
<title
>Compendio de PO</title>

<para
>Un compendio es un archivo que contiene una colección de todos los mensajes de traducción (parejas de <acronym
>msgid</acronym
> y <acronym
>msgstr</acronym
>) de un proyecto, &eg; &kde;. Normalmente, el compendio de un idioma se genera concatenando todos los archivos <acronym
>PO</acronym
> de ese proyecto y para ese idioma. El compendio puede contener mensajes traducidos, no traducidos y dudosos. Este módulo ignora los mensajes no traducidos. </para>

<para
>De forma similar al <acronym
>PO</acronym
> auxiliar, este método de búsqueda está basado en la coincidencia de la <quote
>misma</quote
> cadena orginal (<acronym
>msgid</acronym
>) en un compendio. En este momento únicamente se puede definir un archivo de compendio en el que buscar. </para>

<para
>Este método es muy útil si no está utilizando la base de datos de traducciones y quiere realizar unas traducciones que tengan consistencia con las ya existentes. Por cierto, los archivos de compendio son mucho más fáciles de compartir con otros traductores e incluso con otros proyectos de traducción puesto que también se pueden generar para ellos. </para>

<sect2 id="compendium-settings">
<title
>Preferencias</title>

<para
> Puede configurar este método de búsqueda seleccionando <menuchoice
> <guisubmenu
>Preferencias</guisubmenu
> <guisubmenu
>Configurar diccionario</guisubmenu
> <guimenuitem
>Compendio de PO</guimenuitem
> </menuchoice
> en el menú de &kbabel;. </para>

<para
>En el diálogo <guilabel
>Configurar compendio de PO del diccionario</guilabel
> puede seleccionar la ruta al archivo de compendio. Para automatizar el cambio de archivo de compendio en los cambios de idioma, hay una variable delimitada por el carácter <literal
>@</literal
> que es reemplazada por el valor apropiado:</para>

<variablelist
> <varlistentry
> <term
>@LANG@</term
> <listitem
><para
> El código del idioma. Por ejemplo puede ser: de, es, fr, etc. </para
></listitem
> </varlistentry
> </variablelist>

<para
>En la línea de edición se muestra la ruta real al archivo de compendio de <acronym
>PO</acronym
>. Aunque es mejor utilizar variables en la ruta, también es posible elegir una ruta absoluta que indique qué archivo <acronym
>PO</acronym
> existente será utilizado como compendio.</para>

<para
>Para obtener un compendio reciente para la traducción de &kde;, &eg; al francés, puede descargar <filename
>fr.messages.bz2</filename
> del <ulink url="ftp://ftp.kde.org/pub/kde/snapshots/current/kde-i18n"
>servidor &FTP; de &kde;</ulink
>. </para>

<para
>Puede definir cómo realizar las búsquedas en el compendio utilizando las opciones que aparecen debajo de la casilla de selección de la ruta. Están divididas en dos grupos: opciones de coincidencia del texto, sonde puede especificar la forma en que el texto es comparado y si desea ignorar las traducciones dudodas, y las opciones de coincidencia del mensajes, que determinan si la traducción del compendio debe ser una subcadena del mensaje de búsca o viceversa.</para>

<variablelist
> <varlistentry
> <term
><guilabel
>Sensible a mayúsculas</guilabel
></term
> <listitem
> <para
> Si la coincidencia de un mensaje en el compendio debe distinguir entre letras mayúsculas y minúsculas. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Ignorar cadena dudosa</guilabel
></term
> <listitem
> <para
> Si se deben ignorar los mensajes dudosos del compendio durante la búsqueda. El compendio puede contener mensajes dudodos, ya que normalmente se genera concatenando los archivos <acronym
>PO</acronym
> del proyecto, que pueden incluir mensajes dudosos. Los mensajes sin traducir se ignoran siempre (no se puede buscar una traducción en un mensaje sin traducir, ¿verdad?).</para
> </listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Sólo palabras completas</guilabel
></term
> <listitem
> <para
> Si el texto coincidente debe comenzar y terminar en los límites de las palabras. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
>Un texto coincide si <guilabel
>es igual al texto buscado</guilabel
></term
> <listitem
> <para
> Un texto en el compendio coincide con el texto buscado únicamente si es exactamente igual (lógicamente en base a las opciones anterior). </para
> </listitem
> </varlistentry
> <varlistentry
> <term
>Un texto coincide si <guilabel
>es similar al texto buscado</guilabel
></term
> <listitem
> <para
> Un texto en el compendio coincide con el texto buscado únicamente si es <quote
>similar</quote
>. Ambos textos se comparan por pequeños trozos de letras (<quote
>3 gramos</quote
>) y al menos la mitad de los trozos deben ser iguales. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
>Un texto coincide si <guilabel
>contiene el texto buscado</guilabel
></term
> <listitem
> <para
> Un texto en el compendio coincide con el texto buscado si lo contiene.</para
> </listitem
> </varlistentry
> <varlistentry
> <term
>Un texto coincide si <guilabel
>está contenido en el texto buscado</guilabel
></term
> <listitem
> <para
> Un texto en el compendio coincide con el texto buscado si está contenido en él. </para
> </listitem
> </varlistentry
> <varlistentry
> <term
>Si texto coincide si <guilabel
>contiene una palabra del texto buscado</guilabel
></term
> <listitem
> <para
> Los textos se dividen en palabras y un texto del compendio coincide con el texto buscado únicamente si contiene alguna palabra en común. </para
> </listitem
> </varlistentry
> </variablelist>
</sect2>
</sect1>
</chapter>

