2011-12-09 23 views
7

He estado investigando sobre xliff y po i18n formatos de archivos y parece que son ampliamente utilizados y apoyados. Hay muchas herramientas gratuitas para gestionar las traducciones en los archivos xliff/po.Cómo utilizar xliff o po l10n formatos de archivo en .NET (C#/ASP.Net) el desarrollo

Sin embargo, hasta ahora no he podido encontrar una buena solución para usar los archivos xliff o po en los proyectos .net (C#/ASP.Net). Esperaría algún tipo de convertidor xliff/po => resx, pero hasta ahora no he encontrado uno.

Sin embargo, al mismo tiempo muchas herramientas hacen apoyar la conversión de xliff/po archivos en Java .properties formato.

Si tiene experiencia en la implementación de l10n a través de xliff o po archivos en .Net proyectos, brinde asesoramiento y comparta las mejores prácticas sobre cómo funciona.

PD: Preferiría usar el formato xliff, ya que me parece más limpio y más funcional, pero po también es una opción.

+0

¿Alguna razón por la que no puede usar los archivos de recursos directamente? – Oded

+2

Queremos utilizar un formato único para las traducciones entre los diferentes proyectos que nuestra empresa construye, que son proyectos C# y Java, y compartirlos para minimizar la duplicación y el costo adicional de las traducciones por separado para diferentes proyectos. – Paul

Respuesta

6

archivos XLIFF PO y por lo general funcionan de forma diferente: los archivos

  • PO son archivos de recursos que consiguen cumplirse en un formato binario y luego acceder usando gettext) bibliotecas (. A veces, PO se utiliza como un formato de extracción como XLIFF, pero ese no es su propósito original.

  • XLIFF son archivos de extracción que se crean extrayendo el archivo de recursos (por ejemplo, resx) en XLIFF, y luego se fusionaron nuevamente en el formato original.

así que para xliff usted debe estar buscando una herramienta haciendo resx -> xliff -> resx en lugar de xlif -> resx.

Las herramientas que extraen/fusionan archivos XLIFF generalmente se llaman filtros. Existen bastantes herramientas comerciales de traducción que aceptarán XLIFF, y algunas que también pueden crear XLIFF (Swordfish, Trados Studio, etc.).

También hay algunas herramientas de código abierto que pueden extraer/fusionar XLIFF: File2XLIFF4j por ejemplo (pero no creo que sea compatible con resx).

Rainbow, del proyecto Okapi, es compatible con resx. La versión .net "vieja" (Rainbow 5: Okapi en SourceForge) tiene un filtro dedicado al archivo resx y puede manejarlos muy bien; incluso con datos binarios. Sin embargo, puede tener problemas con los controles de terceros (ver http://okapi.sourceforge.net/Release/Filters/Help/netres.htm para más detalles).

La nueva versión de Java (Rainbow 6: http://code.google.com/p/okapi/) admite resx a través de su filtro XML y funciona bien con resx simple, pero si tiene datos binarios, el texto en esas entradas no se extraerá.

-ys

+0

¡Gran respuesta! Gracias por aclarar eso para mí. Profundizaré más para descubrir el mejor enfoque para minimizar el esfuerzo en l10n para la combinación de proyectos .net y java. – Paul

4

He usado PO para administrar un proyecto .Net después.los archivos .resx comenzaron a perderse de vista. Lo utilicé "como un formato de extracción como XLIFF" (vea Yves comment). Nuestros archivos .resx existentes se exportaron/fusionaron una vez en un archivo .po por idioma, que luego se convirtieron en nuestros archivos de idiomas autoritativos a partir de los cuales se generarían automáticamente todos los archivos .exe.

Los proyectos en los que estoy no son ASP, por lo que no conozco el paquete mencionado por mcw0933, pero la implementación de resgen.exe de Mono tiene una capacidad simple de conversión < => resx. Sin embargo, para preservar los comentarios existentes y agregar automáticamente el texto original como comentarios adicionales, amplié la herramienta de conversión de mono hasta el punto en que la que uso se reescribe básicamente.

I put the extended .po <=> .resx converter on github.

En cuanto a la elección de .po para gestionar las traducciones de un proyecto C#, .po es simple y amigable, pero hay algunos inconvenientes por su uso de una manera que difiere ligeramente de su uso original en gettext, y no tener la experiencia para decir si era una mejor opción que xliff, pero ser capaz de administrar traducciones y automatizar tareas era mucho mejor que tratar con los archivos de resx, como lo habíamos hecho en el pasado.

pequeños inconvenientes del uso de PO de manera diferente a su intención:

  • Debido gettext utiliza msgstr a doblar como el campo para almacenar la cadena no traducida original en, tuve que hacer resgenEx archivar la cadena de traducción original en un comentario adjunto en lugar de un campo diseñado para ese propósito.
  • Algunas herramientas suponen que el msgid contendrá la traducción original en inglés (en lugar de solo una cadena ID), lo que podría significar que la opción de comprobación automática de errores de esa herramienta no es muy útil, o podría significar algo que te haga elegir herramienta diferente, etc. Sin embargo, la mayoría de las herramientas no hacen suposiciones.
  • Algunas herramientas .po como \ n en lugar de \ r \ n

El proyecto Escribí originalmente para resgenEx tenido dos archivos .resx y un archivo .isl para cada lenguaje soportado, pero pronto voy a necesitar para administrar todas las traducciones de un proyecto .Net que tiene múltiples archivos resx para cada clase en el código. Cuando esto suceda, decidiré si debo seguir usando .po o si debería usar xliff o alguna otra cosa. Si sigo usando .po entonces limpiaré resgenEx y probablemente necesite agregar más características, como la capacidad de agregar automáticamente el nombre del ensamblado y los prefijos de nombre de clase a los msgids.

0

También puedes probar PhraseApp. PhraseApp es una plataforma de gestión de traducción y es compatible con una amplia gama de formatos. De esta forma, puede cargarlo en cualquier formato y exportarlo de nuevo en un formato que se adapte mejor a su caso, como XLIFF, po o resx. De esta manera, no es necesario que decida un solo formato de traducción. Y siempre puedes cambiar fácilmente a otro formato. PD: divulgación completa Trabajo para el equipo de PhraseApp.

Cuestiones relacionadas