2011-06-02 12 views
32

Tengo un proyecto de código abierto (here) cuyo documentation se encuentra actualmente en francés. La documentación se genera a partir de comentarios XML en código, utilizando Sandcastle. Ahora me gustaría traducir la documentación al inglés y proporcionar documentación en ambos idiomas, pero realmente no sé por dónde empezar ...Cómo localizar la documentación de una biblioteca .NET

  • ¿Necesito extraer los comentarios XML del código y ponerlos? en un archivo separado? En caso afirmativo, ¿hay alguna herramienta para automatizar el proceso?
  • Estoy usando Sandcastle Help File Builder para compilar la documentación; ¿Necesito crear un proyecto separado para construir el documento en inglés, o puedo hacerlo desde el mismo proyecto?
  • ¿Hay alguna herramienta para ayudar en el proceso de traducción? p.ej. mostrar el documento original y el documento traducido uno al lado del otro?

también estoy interesado en enlaces sobre cómo producir documentación multilingüe, ya que no pude encontrar nada útil en Google ...

+0

esa es la razón, por qué hacemos todos los comentarios en inglés :) –

+0

@Andreas, eso es lo que suelo hacer ... pero este proyecto es un caso especial, ya que inicialmente estaba destinado a miembros de una comunidad de habla francesa (Developpez .com). Ahora me gustaría ampliar la audiencia de esta biblioteca ... –

Respuesta

15

Una de las estrategias, lo que requeriría algún tipo de coordinación con los archivos XSLT castillo de arena, sería utilizar el atributo xml:lang en su documentación XML. Visual Studio 2010 permite que permanezcan varias etiquetas (aunque puede recibir quejas sobre etiquetas duplicadas).

/// <summary> 
/// Gets or sets the fill size of the load operation. 
/// </summary> 
/// <summary xml:lang="fr"> 
/// Obtient ou définit la taille de remplissage de l'opération de chargement. 
/// </summary> 
public int FillSize 
{ 
    get; 
    set; 
} 

salida resultante:

<member name="P:Namespace.MyAttribute.FillSize"> 
    <summary> 
    Gets or sets the fill size of the load operation. 
    </summary> 
    <summary xml:lang="fr"> 
    Obtient ou définit la taille de remplissage de l'opération de chargement. 
    </summary> 
</member> 
+0

Gracias, me gusta este enfoque! Es similar a la solución sugerida por Remi Bourgarel, pero se siente más limpio ... –

+0

nunca encontré el tiempo para realmente probarlo, pero es la respuesta que más me gusta, así que lo acepto;) –

+0

I haven''t sido capaz de encontrar cualquier documentación sobre cómo hacer que esto funcione. Cuando lo probé, acabo de mostrar los dos idiomas en mi archivo chm. ¿Alguna pista sobre cómo hacer eso? ¿Coordinación con los archivos de Sandcastle XSLT? –

1

Usted mismo un asunto difícil. Realmente no hay una "mejor práctica" ya que la mayoría del software se desarrolla en inglés.

Dicho esto, si mira otra documentación multilingüe, ¿cómo manejan este problema?

Take International Standards. Algo así como ISO 9001. Tiene el mismo documento (ISO 9001:2008) disponible en inglés, francés, ruso, etc.

O ISO 5247-2 tiene el único documento en inglés + francés + ruso.

¿Cómo manejarías los cambios? Digamos que le doy un parche, pero mis comentarios solo están en inglés, ¿cuál sería su proceso? ¿Qué pasa si tienes el parche A en inglés, el parche B en español y el parche C en inglés + francés?

Otra opción es bifurcar el proyecto. ¿La rama principal debe estar en francés con la última compilación, y luego actualizar los otros idiomas en su propio tiempo?

Separar la separación de los comentarios en el código fuente sería complicado de mantener. Entonces, básicamente estás usando un archivo de recursos en tu script de compilación.

¿Este problema ya se ha solucionado? Si piensas en algún proyecto grande, multilingüe y de código abierto, ¿cómo lo manejan?

6

que lo hicimos así:

  • ponemos un "< ES>" etiqueta después de todo nuestra etiqueta de la documentación de la siguiente manera:

    /// <summary> 
    /// Description du produit 
    /// <EN>Product's description</EN> 
    /// </summary> 
    
  • A continuación, en el archivo XSLT castillo de arena (Desarrollo /presentaton/vs2005/transforms/main_sandcastle.xsl) fuimos a la plantilla que coincide con "param" (línea 95 para nosotros) y agregamos

    <span class="trad"> 
        <xsl:value-of select="msxsl:node-set(.)/EN"/> 
    </span> 
    
  • Y luego puede cambiar el CSS para mostrar la traducción en su color favorito.

+0

¡Eso parece prometedor, gracias! Pero muestra ambos idiomas en la misma página, ¿verdad? Me gustaría generar 2 documentaciones separadas ... –

+0

De hecho, muestra ambas documentaciones, pero puedes construir dos plantillas para castillos de arena, una que muestre el contenido de la etiqueta EN y la otra no. O puede manejar esto a través de CSS pero está algo sucio. –

+0

BTW, ¿pones esta etiqueta EN solo en el resumen, o en todos los campos de documentación (parámetros, valores devueltos, etc.)? –

2

Una posible estrategia sería tener un idioma por defecto en el código, y traducciones por separado de suministro.

No importa qué idiomas localizada Me hubiera finalmente, preferiría elegir Inglés como idioma por defecto/repliegue de la documentación.

estructura del código proporciona la indexación de la base de datos de traducción, por ejemplo:

Type, NameWithNamespace, OptionalParameterName 

"member", "MyProject.Core.Loader.FillSize", ... 

Se podría disponer de una herramienta que permita la traducción en una interfaz de usuario para cada espacio de nombres/miembro.

Usted puede tener un equipo independiente de traductores que buscan a través de los artículos que no tienen traducción todavía, y traducciones de suministro.

Y se puede empezar shipingand una documentación traducida como su buque un comunicado tan pronto como se obtiene la cantidad de artículos traducidos por encima de un umbral.

Una traducción omisión modificados que indicaría que necesita una nueva traducción para todos los otros idiomas también.

Por supuesto, si realiza cambios importantes solo en el espacio de nombres, puede reasignar los espacios de nombres como una operación de reasignación ad-hoc en la base de datos.

Si ejecuta proyecto de código abierto, que hace que el SENCE de usar una herramienta colaborativa de traducción en línea.

Un ejemplo de esta estrategia de traducción colaborativa implementado en la producción es https://translations.atlassian.com/

Básicamente sólo podría intervenir y comenzar a contribuir traducciones en línea.

Se creó para traducir los productos en sí, no a la documentación, pero la misma práctica se aplica.

+0

Sí, creo que tener los documentos traducidos separados del código es la única manera sensata de hacerlo en el caso general. Mi caso de uso fue un poco diferente, porque nunca tuve la intención de proporcionar más de 2 idiomas; por lo tanto, aún era razonable tener ambos idiomas en el código, lo que facilita su actualización. –

1

Por si alguien necesita una solución, hay un paquete nuget llamado Surviveplus.XmlCommentLocalization. ¡Maravilloso!

+0

Bien, pero ¿qué hace exactamente? No hay documentación, no hay sitio del proyecto, y el sitio web surviveplus.net está en japonés ... –

+0

Simplemente genera xml independiente en otro idioma. Entonces obtienes varios archivos xml. Y cada uno de ellos se puede procesar por separado con tu herramienta favorita. p.ej. castillo de arena –

+0

Sí, pero ¿cómo genera esos archivos? ¿Especifica el idioma en los comentarios del documento? –

Cuestiones relacionadas